汇编中行偏移计算中的系数4是否源于整数的字节大小?
汇编中行偏移计算中的系数4是否源于整数的字节大小?
我最近在分析一段处理嵌套数组访问的汇编代码,数组里存储的都是整数,这段机器码的作用是计算访问特定子数组时的行偏移。我观察到了这些细节:
- 每个子数组包含5个整数,由于一个整数占4字节,所以访问第index个亚数组的行偏移是
20 * index。 - 在
leaq指令中,这个计算被拆解成了4 * (index + 4 * index)。
我自己琢磨着,这里的系数4似乎和整数的字节大小(4字节)有关,但拿不准这个解读到底对不对。特别是下面这种情况:
- 如果子数组里的整数数量变成6个而不是5个,那行偏移就会变成
24 * index。要是我们结合整数的字节大小来拆解这个新的计算,是不是因为整数占4字节,所以拆解的时候系数4依然会存在?
备注:内容来源于stack exchange,提问作者Ayush Somani
相关产品推荐
相关产品推荐

