jmp指令的分段错误

时间:2013-12-26 23:28:52

标签: assembly x86 x86-64

对于一个项目,我为特定的语言编写了一个编译器。我必须处理异常。 我的问题在于汇编代码。我在jmpq指令上遇到分段错误,我不明白为什么。

这是代码的摘录:

    jmpq *.finally_27
    [...]
.finally_27:
    [...]

ddd指出我是行jmp导致分段错误,但我不明白为什么。为什么jmpq指令会失败?

完整代码在这里: http://pastebin.com/E2AbW158

错误发生在第311行。

1 个答案:

答案 0 :(得分:3)

当你使用带有标签的JMP时,你不应该包含'*',否则你会说:“跳转到存储在内存地址finally_27开始的四字中的地址位置”

你想:“跳转到价值为finally_27的地址位置”,所以它是:

JMP .finally_27

JMPQ *.finally_27