【发布时间】:2013-02-22 17:04:17
【问题描述】:
我正在尝试在我的 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 寄存器,这个参数对于重新启动系统调用是否错误?
【问题讨论】: