Linux程序集教程说明:
有一件非常重要的事情需要记住:如果您打算从程序返回(使用RET指令),请不要跳转到它!就像"从来没有!" 这样做会导致Linux上的分段错误(这是好的 - 所有程序都会终止),但在DOS中,它可能会因各种程度的可怕而在你脸上爆炸.
但我无法理解为什么它会导致分段错误.听起来就像从函数返回一样.
我有一种情况需要实现逻辑"如果X发生,请调用程序A.否则,调用程序B." 除了袋鼠编织意大利面条代码之外还有其他方式吗?
如果我说'打电话'而不是跳?会怎么样?由于没有写入返回语句,控制权只是转移到下面的下一行,还是在调用后仍然返回到该行?
start:
mov $0, %eax
jmp two
one:
mov $1, %eax
two:
cmp %eax, $1
call one
mov $10, %eax
Run Code Online (Sandbox Code Playgroud)