assembly - 如何访问整数数组的元素
问题描述
我是汇编语言的初学者,我对如何处理数组有点困惑。
假设有一个存储在某个位置(例如 0x10010010)的 100 个整数(每个 4 个字节)的数组(名为“列表”)。如何找到其元素的地址,例如 list[3] 或 list[16]?
另外,我如何编写一个汇编指令来指定这个数组的内存?
解决方案
你自己说的;每个整数是 4 个字节长。它们连续存储在内存中。list
是其中第一个的地址(准确地说是第零个)。假设您在说时使用基于零的索引list[3]
,则地址list[3]
将为list + 3*4
或list+12
。一般来说,公式是base+index*4
,其中base
是数组的地址,索引从 0 到 99。4 来自整数大小。
以您的示例为例,如果数组位于 0x10010010,则 list[3] 将位于 0x1001001C,list[16] 将位于 0x10010050。
至于程序集,您没有告诉我们您使用的是哪个 CPU/模拟器。那里有不止一种组装方式。
某些类型的程序集,特别是 Intel x86 和 ARM,具有用于访问整数数组的索引缩放的内置逻辑 - CPU 将为您将索引(存储在寄存器中)乘以 4。
推荐阅读
- django - 如何更改默认的 django rest_auth 重定向?
- python - 尝试使用 selenium 无头 chrome 进行身份验证时,AWS EC2 超时
- .net - net WCF 客户端配置 htts
- kdb - kdb:使用 \l 加载数据文件(表与列表)
- python - 调试帮助:Python PuLP 中的混合整数线性规划问题
- vue.js - Vue - 在运行功能之前检查数据已设置
- javascript - Chrome 扩展程序:从选项页面重新加载页面
- google-cloud-platform - Google Cloud Build 无法通过我的私有 GitHub 存储库进行身份验证
- python - 最后下采样时如何获得NAN
- jdbc - Infogix Data360 分析的集成身份验证错误