我正在通过这本免费书学习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 的调用约定是不同的。我找到了这个对我有帮助的资源。