相关疑难解决方法(0)

不使用 libSystem macOS 链接目标文件

我正在为 x86-64 上的 macOS 编写一个编译器,但是当我将目标文件链接在一起时,ld

ld: dynamic main executables must link with libSystem.dylib for inferred architecture x86_64
Run Code Online (Sandbox Code Playgroud)

但由于 libSystem 包含 libc,我不想使用它(它会给我很多重复项)。我该如何解决这个问题?

macos linker x86-64 linker-errors ld

5
推荐指数
1
解决办法
1684
查看次数

我可以从MacOS的_start代码执行`ret`指令吗?Linux呢?

我想知道ret从程序的入口点返回是否合法.

NASM示例:

section .text
global _start
_start:
ret

; Linux: nasm -f elf64 foo.asm -o foo.o && ld foo.o
; OS X:  nasm -f macho64 foo.asm -o foo.o && ld foo.o -lc -macosx_version_min 10.12.0 -e _start -o foo
Run Code Online (Sandbox Code Playgroud)

ret 从堆栈中弹出一个返回地址并跳转到它.

但是堆栈的顶部字节是程序入口点的有效返回地址,还是我必须调用exit?

此外,上面的程序不会在OS X上发生段错误.它在哪里返回?

linux macos assembly return entry-point

5
推荐指数
1
解决办法
493
查看次数

标签 统计

macos ×2

assembly ×1

entry-point ×1

ld ×1

linker ×1

linker-errors ×1

linux ×1

return ×1

x86-64 ×1