提问人:Robbie 提问时间:11/13/2023 更新时间:11/13/2023 访问量:31
NASM 分配一个填充寄存器值的数组
NASM Allocate an Array Filled with Values from Registers
问:
我正在编写一个简单的 NASM 汇编程序,当给定与该寄存器对应的数字 ( thru ) 时,它将获得 16 个 64 位寄存器之一的值 ( thru )。我的方法是分配一个包含 16 个寄存器值的数组,然后在索引处读取数组。我的代码如下:rax
r15
long
i
0
15
i
SECTION .data
; array containing all our registers
regs dq rax, rbx, rcx, rdx, rsi, rdi, rbp, rsp, r8, r9, r10, r11, r12, r13, r14, r15
SECTION .text
global getReg
getReg:
; rdi is the first argument we got, and the registers are 8 bytes each,
; so the desired index is our argument multiplied by 8
imul rax, rdi, 8
; move the quadword at index rax of regs array into register rax (for returning)
mov rax, [regs + rax]
ret
但是,当我尝试将上述内容与 组装在一起时,我在第 3 行得到了 16 次(每个寄存器一次)。我是组装新手,几乎不知所措(努力理解错误甚至意味着什么以及它的症状是什么)。希望得到一些帮助,并可能得到一些关于我文件中其他错误的相关提示或一般 NASM 最佳实践。谢谢!nasm -f elf64 getReg.s -o getReg.o
expression is not simple or relocatable
答: 暂无答案
评论
regs...
dq
mov
push
mov rax, r13
jmp done
i=0
switch