arrays - 64 位 NASM - 检索 2D 数组的元素

标签 arrays assembly multidimensional-array nasm

我需要检索 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/

相关文章:

c - 使用冒泡排序对指针数组进行排序,返回未排序的数组

linux - 如何更改 gcc 生成的 asm 代码的入口点?

php - 根据一列中的值对行数组进行自然排序

java - 如何在Java中正确动态地初始化多维数组?

javascript - 简单的 JQuery 数组

javascript - 如何将 JSON 数组中的特定对象元素获取到 JavaScript 数组中

php - 如何检查多维数组中的所有值是否为空

linux - 在 Linux 程序集中打印未知长度的参数

c - 在 Linux 上混合系统调用写入和 printf

python - 多维数组的相关系数