我试图在我的 64 位(Ubuntu 12.04)上运行一些 asm 行,只是为了执行重启系统调用。我可以编译它,但是运行时什么也没发生。
这是代码:
section .text
global _start
_start:
mov eax,88
mov ebx,0xfee1dead
mov ecx,672274793
mov edx,0x89abcdef
mov esi,0
int 0x80
我使用以下方法编译它:
nasm -f elf reboot.asm
然后我使用链接它:
ld -m elf_i386 -s -o reboot reboot.o
我对这种行为有一些疑问:
- 如果我使用正确,在 64 位系统上运行这个 32 位代码是问题的根源吗?
- 我想知道将 NULL 传递给 %esi 寄存器,这个参数对于 reboot 系统调用是否错误?