【问题标题】:Making sense of this line of VHDL code that multiplies by 8理解这行乘以 8 的 VHDL 代码
【发布时间】: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 相当

标签: arm arm64 armv8


【解决方案1】:

LSL 是逻辑左移。数字是二进制的。一个班次使人数翻倍。所以三班次是 2 的三次方,即 8。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-26
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多