x32 ASM编译(使用NASM)x64 Syscalls无法正常工作

时间:2014-01-08 22:31:31

标签: linux assembly nasm system-calls

系统调用如:

1 - 退出
3 - 阅读
4 - 写上

他们工作正常。但是,请致电:

11 - 执行 29 - 暂停

它们不起作用。我尝试过使用十六进制和十进制(只是为了确保我没有弄乱这一点)。请帮忙!

简单的事情:

SECTION .text
    global _start
_start:
    xor eax, eax
    xor ebx, ebx
    mov al, 29
    int 80h

这是我正在编译的方式。我正在运行x64位Arh Linux并使用NASM编译来模拟i386:

nasm -f elf32 -o temp.o file.asm
ld -s -m elf_i386 -o exec temp.o
rm temp.o
./exec

而不是暂停或任何东西,我什么都没得到。它只是停止(不,它没有停顿)。我可以输入,我可以输入,我可以做任何我想做的事情。一旦我ctrl+c,它就会关闭。但这不是暂停。

1 个答案:

答案 0 :(得分:1)

这似乎适用于x86_64 Archlinux。你怎么知道它不是暂停()?

strace'ing for me表示pause()确实被调用并产生与上述相同的特征。从另一个终端向该进程发送一个SIGHUP也会为我恢复执行。

请提供strace输出。