作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我第一次尝试用汇编编程。我使用的是 64 位 Mac 操作系统。我也在使用 NASM。我已经做了很多寻找解决方案的工作,但我找不到任何适合我的机器的东西。
谁能帮我解决这个问题?这是代码和错误,谢谢!
你好.asm
global start
section .text
start:
mov rax, 1
mov rdi, 1
mov rsi, message
mov rdx, 13
syscall
mov eax, 60
xor rdi, rdi
syscall
message:
db "Hello, World", 10
nasm -f macho64 hello.asm -o hello.o
ld -arch i386 -o hello hello.o
./hello
ld: warning: -macosx_version_min not specified, assuming 10.10
ld: warning: ignoring file hello.o, file was built for unsupported file format ( 0xCF 0xFA 0xED 0xFE 0x07 0x00 0x00 0x01 0x03 0x00 0x00 0x00 0x01 0x00 0x00 0x00 ) which is not the architecture being linked (i386): hello.o
Undefined symbols for architecture i386:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture i386
最佳答案
您的链接器错误的原因是您使用 NASM 创建了一个 64 位 macho 对象,但随后将 i386 定位为可执行文件。您可能想要的是 64 位可执行文件,这可以通过删除 -arch
来完成。像这样:
ld -o hello hello.o
global start
section .data
message: db "Hello, World", 10
section .text
start:
mov rax, 0x20000004
mov rdi, 1
mov rsi, message
mov rdx, 13
syscall
mov rax, 0x20000001
xor rdi, rdi
syscall
.data
部分并将您的变量放入其中。在某些环境中,如果将数据变量放在代码中可能会导致问题。
关于macos - 如何让这个简单的程序集运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34190930/
我是一名优秀的程序员,十分优秀!