我想知道是否有人可以帮助我理解为什么我的汇编程序给我一个分段错误。(别担心,这是一个相当短的程序。)
segment .data
a dq 175
b dq 4096
segment .text
global _start
_start:
mov rax, [a] ; move *a into rax
add rax, [b] ; add *b to rax
xor rax, rax ; set to zero
ret ; return
它应该添加 a 和 b 的值,然后在程序终止时将它们作为最后的退出代码返回,对吗?那么echo $?
应该打印它应该打印 0,因为4271
吗?xor
.
但是,是的,编译使用:nasm -f elf64 -l main.lst main.asm -o main.o && ld main.o -o main.exec
然后运行:./main.exec && echo $?
一如既往地非常感谢您的帮助。