在 MASM 中访问数组
我在 esi 寄存器中得到了数组的地址(作为函数的指针传递)。如何访问数组的特定单元格?即:
my_array[a + b * c]
其中c
是常量。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我在 esi 寄存器中得到了数组的地址(作为函数的指针传递)。如何访问数组的特定单元格?即:
my_array[a + b * c]
其中c
是常量。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
查找诸如 LEA
这样的说明:
Look up instructions such as LEA
Think of it this way:
您也可以直接移动它,如下所示:
对于静态数组,您实际上可以同时使用两个寄存器来对其进行索引,但使用数组基地址作为 寻址模式。这只适用于非位置无关代码。
您可以使用同一寄存器两次来模拟比例因子 3 (
ebx + ebx*2
)、5 或 9,而不是使用两个不同的寄存器。You could directly move it as follows also:
For a static array, you can actually use two registers at once to index it, but using the array base address as the 32-bit displacement in the addressing mode. This only works for non-position-independent code.
Instead of using two different registers, you can use the same register twice to simulate a scale factor of 3 (
ebx + ebx*2
), 5, or 9.