【发布时间】:2016-09-08 21:56:24
【问题描述】:
我试图打印出一个函数输出 W - X) + (Y - Z),我保留 编译时出现分段错误(核心转储) 并尝试运行程序
nasm -felf64 asm_program -o asm_program.o
gcc -m64 asm_program.o -o asm_program
./asm_program
我已经四处搜索,但我无法找到解决方案。我想首先问一下这个分段错误是什么意思以及它与我的程序有什么关系,其次是我的代码哪里出错了。
顺便说一句,对组装来说相对较新
程序从这里开始
global main
extern printf
segment .data
w: DQ 1
x: DQ 3
y: DQ 5
z: DQ 2
segment .text
main:
call compute
compute:
mov rax, w
mov rcx, x
add rax,rcx
mov rbx, y
mov rbp, z
add rbx, rbp
mul rbx
call printf
【问题讨论】:
-
总是以
ret结束你的程序 :)
标签: assembly segmentation-fault nasm x86-64 intel