“add Xn, Xn, SP” 在 ARM64 中有效吗?

huangapple go评论62阅读模式
英文:

Is "add Xn, Xn, SP" valid in ARM64?

问题

"add x1, x1, sp" 有问题,但以下语句可以正确组装: "add x1, sp, x1"。谢谢!

英文:

I have problems assembling add x1, x1, sp. From what I have read that should be possible in AArch64?

The following assembles correctly add x1, sp, x1

Thanks!

答案1

得分: 3

"add x1, x1, sp" 不是可编码的AArch64指令。add指令的允许标量变体如下:

  • ADD <Wd|WSP>, <Wn|WSP>, {, {#}}
  • ADD <Xd|SP>, <Xn|SP>, {, {#}}
  • ADD <Wd|WSP>, <Wn|WSP>, #{, }
  • ADD <Xd|SP>, <Xn|SP>, #{, }
  • ADD , , {, #}
  • ADD , , {, #}

注意,对于这些变体中,都不允许将SP用作第三个操作数。

英文:

Indeed, add x1, x1, sp is not an encodable AArch64 instruction. The permitted scalar variants of the add instruction are:

ADD &lt;Wd|WSP&gt;, &lt;Wn|WSP&gt;, &lt;Wm&gt;{, &lt;extend&gt; {#&lt;amount&gt;}}
ADD &lt;Xd|SP&gt;, &lt;Xn|SP&gt;, &lt;R&gt;&lt;m&gt;{, &lt;extend&gt; {#&lt;amount&gt;}}
ADD &lt;Wd|WSP&gt;, &lt;Wn|WSP&gt;, #&lt;imm&gt;{, &lt;shift&gt;}
ADD &lt;Xd|SP&gt;, &lt;Xn|SP&gt;, #&lt;imm&gt;{, &lt;shift&gt;}
ADD &lt;Wd&gt;, &lt;Wn&gt;, &lt;Wm&gt;{, &lt;shift&gt; #&lt;amount&gt;}
ADD &lt;Xd&gt;, &lt;Xn&gt;, &lt;Xm&gt;{, &lt;shift&gt; #&lt;amount&gt;}

Observe how for none of these variants SP is permitted as the third operand.

huangapple
  • 本文由 发表于 2023年4月13日 22:24:25
  • 转载请务必保留本文链接:https://go.coder-hub.com/76006585.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定