对于一个项目,我为特定的语言编写了一个编译器。我必须处理异常。 我的问题在于汇编代码。我在jmpq指令上遇到分段错误,我不明白为什么。
这是代码的摘录:
jmpq *.finally_27
[...]
.finally_27:
[...]
ddd指出我是行jmp导致分段错误,但我不明白为什么。为什么jmpq指令会失败?
完整代码在这里: http://pastebin.com/E2AbW158
错误发生在第311行。
答案 0 :(得分:3)
当你使用带有标签的JMP时,你不应该包含'*',否则你会说:“跳转到存储在内存地址finally_27
开始的四字中的地址位置”
你想:“跳转到价值为finally_27
的地址位置”,所以它是:
JMP .finally_27
不
JMPQ *.finally_27