我有一个数组a
24 字节结构体,排列无填充,以便结构体 1 在结构体 0 之后 24 个字节处开始((void*) &a[1] == ((void*) &a[0]) + 24
.
rbx
保存结构体的索引。我想设置rdi
to a + rbx*24
and rsi
to a + rbx*24 + 8
。 SIB 不允许乘以 24。我该怎么做?
(x86、64 位、汇编)。
您可以设置RDI
and RSI
甚至不改变索引RBX
.
lea rsi, [rbx + rbx*2] ; RSI = RBX * 3
lea rdi, [a + rsi*8] ; RDI = a + (RBX * 3) * 8
lea rsi, [rdi + 8] ; RSI = a + (RBX * 3) * 8 + 8
LEA 指令的目的是什么? https://stackoverflow.com/questions/1658294/whats-the-purpose-of-the-lea-instruction/1660429#1660429
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)