【发布时间】:2021-01-13 07:12:53
【问题描述】:
为什么第 2 行是i * 8?我从一本书中得到了这个代码。
MOV X9,XZR // i = 0
loop1: LSL X10,X9,#3 // X10 = i * 8
ADD X11,X0,X10 // X11 = address of array[i]
STUR XZR,[X11,#0] // array[i] = 0
ADDI X9,X9,#1 // i = i + 1
CMP X9,X1 // compare i to size
B.LT loop1 // if (i < size) go to loop1
【问题讨论】:
-
lsl就像一个二进制指数。所以lsl 3与* 2 ^ 3相同或乘以8。8 的原因是您使用stur一次有64 位清除或8 个字节。 -
x10 = x9
-
我不记得我的 vhdl,但它与这个伪代码 x10[31 downto 3] = x9[28 downto 0] 和 x10[2 downto 0] = 0 相当