我编写了一个内联汇编程序来取消/home/httpd中的“grades.txt”的链接,代码如下:
void main()
{
__asm__(
"jmp L\n"\
"sub1:\n"\
"movl 0x4(%esp), %ebx\n"\
"movb $0xa, %al\n"\
"int $0x80\n"\
"L:\n"\
"call sub1\n"\
".string \"//home//httpd//grades.txt\" "
);
}
我认为代码应该做我想做的事,取消链接“/home/httpd”中的grades.txt,但是当我执行它时,有一个段错误。
而我用gdb来解决这个问题,我发现它无法执行“jmp L”行,程序会在第5行时停止[“__asm__(”],直到我输入“ctrl + c”中断它。
如果我添加“exit(0)”的程序集让程序干净地退出,并继续执行它,程序将直接退出而不做任何事情。
所以这很令人困惑,为什么程序不执行 jmp 指令?有没有错误?
我将非常感谢您的帮助!