【问题标题】:64 bit NASM - retrieve element of 2D array64 位 NASM - 检索二维数组的元素
【发布时间】:2013-06-10 12:34:15
【问题描述】:

我需要在 NASM 中检索二维数组的元素 - 数组是 50x60 字符,静态分配。 r13 存储数组的宽度,rsi 包含开始地址,r8 和 r9 是索引(它们对应于相应的第一个和第二个坐标)。我试过跑步:

imul r8, r13
mov rax, [rsi + (r8 + r9) * 8]

但它不起作用 - 我得到 beroset-p-603-invalid effective address。如何解决?

【问题讨论】:

  • 你可以回答你自己的问题......你应该这样做,你也会得到一些代表。
  • 哦,没注意到 - 谢谢!

标签: arrays assembly multidimensional-array nasm


【解决方案1】:

好吧,我已经做到了。这段代码是该程序旧版本的修改后的复制粘贴,我使用的是动态分配的内存。因此,如果其他人收到此错误,以下是我的解决方法:

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]

编译并且似乎可以工作

【讨论】:

    猜你喜欢
    • 2022-11-19
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    相关资源
    最近更新 更多