首页 > 解决方案 > 如何访问整数数组的元素

问题描述

我是汇编语言的初学者,我对如何处理数组有点困惑。

假设有一个存储在某个位置(例如 0x10010010)的 100 个整数(每个 4 个字节)的数组(名为“列表”)。如何找到其元素的地址,例如 list[3] 或 list[16]?

另外,我如何编写一个汇编指令来指定这个数组的内存?

标签: assembly

解决方案


你自己说的;每个整数是 4 个字节长。它们连续存储在内存中。list是其中第一个的地址(准确地说是第零个)。假设您在说时使用基于零的索引list[3],则地址list[3]将为list + 3*4list+12。一般来说,公式是base+index*4,其中base是数组的地址,索引从 0 到 99。4 来自整数大小。

以您的示例为例,如果数组位于 0x10010010,则 list[3] 将位于 0x1001001C,list[16] 将位于 0x10010050。

至于程序集,您没有告诉我们您使用的是哪个 CPU/模拟器。那里有不止一种组装方式。

某些类型的程序集,特别是 Intel x86 和 ARM,具有用于访问整数数组的索引缩放的内置逻辑 - CPU 将为您将索引(存储在寄存器中)乘以 4。


推荐阅读