我正在尝试将rax中的值移动到我创建的标签。本质上,我试图弄清楚应该添加到mov label, rax
的内容以使其起作用的原因。目前,我的标签被声明为四字,但是可以更改。到目前为止,我已经尝试过:
mov [label], rax
-此文件可以编译,但是当我转到链接时,它给了我一个“截断为适合错误的重定位”
movq [label], rax
-这将无法编译
movq label, rax
-这也不会编译
mov [label], [rax]
-无法编译。
无法编译的文件会给我“操作码和操作数的无效组合”。我应该怎么办?
extern printf
section .data
output db "%lld",10,0
section .bss
num1: resq 1
section .text
global main
main:
push rbp
mov rax, 666
mov [num1], rax
xor rax, rax
mov rdi, output
mov rsi, [num1]
call printf
pop rbp
xor rax, rax
ret
编译和链接:
$ nasm -felf64 main.s && gcc -no-pie main.o
$ ./a.out
666