运行 x86 可执行文件时出现错误"16434 非法硬件指令 ./a.out"



我正在通过这本免费书学习x86的基础知识。

请记住,与Linux x86相比,这是特定于macOS x86的。

它是为GNU Linux制作的,所以我必须更改一些代码,这可能是我出错的地方。我采用了以下代码片段:

.section .data
 .section .text
 .globl _start
_start:
movl $1, %eax
movl $0, %ebx
int $0x80

在 macOS 上对 x86 进行了一些谷歌搜索后,我将这段代码变成了这样:

    .data
    .text
    .globl _main
_main:
    movl $1, %eax
    movl $0, %ebx
    int $0x80

我使用gcc test.s将其编译为a.out。尝试使用./a.out运行它时,我收到错误[1] 17301 illegal hardware instruction ./a.out.

任何帮助不胜感激,谢谢!

@Jester帮助了我。您可以查看对我问题的评论,但基本上 macOS 的调用约定是不同的。我找到了这个对我有帮助的资源。

最新更新