我需要检索 NASM 中 2D 数组的元素 - 数组是 50x60 字符,静态分配。 r13 存储数组的宽度,rsi 包含起始地址,r8 和 r9 是索引(它们相应地对应于第一个和第二个坐标)。我尝试过运行:
imul r8, r13
mov rax, [rsi + (r8 + r9) * 8]
但它不起作用 - 我收到beroset-p-603-无效的有效地址
。如何解决?
最佳答案
好吧,我已经成功做到了。该代码是从该程序的旧版本中修改后的复制粘贴,我在其中使用动态分配的内存。因此,如果其他人遇到此错误,我的解决方法如下:
mov r15, rsi ; duplicate the pointer, so it's not destroyed by the following operation
imul r8, r13
add r15, r8
mov rax, [r15 + r9]
编译并似乎可以工作
关于arrays - 64 位 NASM - 检索 2D 数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17098676/