gpt4 book ai didi

linux - 为 x64 系统调用编译的 x32 ASM(使用 NASM)不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:59 24 4
gpt4 key购买 nike

系统调用如下:

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,它就会关闭。但这不是暂停。

最佳答案

这似乎适用于 x86_64 Archlinux。你怎么确定它不是 pause()ing?

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

请提供 strace 输出。

关于linux - 为 x64 系统调用编译的 x32 ASM(使用 NASM)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21007991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com