Assembly arm llvm组件q和v寄存器
在以下由xcode生成的代码中,您可以在前两行中看到,值被加载到Assembly arm llvm组件q和v寄存器,assembly,optimization,arm,Assembly,Optimization,Arm,在以下由xcode生成的代码中,您可以在前两行中看到,值被加载到q0和q1寄存器,但从v0和v1寄存器使用,为什么不同时使用q0和q1而不是v0和v1 是q0和q1的v0和v1别名(来源:) 0x100005db0:ldrq0[x9,x12] 0x100005db4:ldr q1[x10,x12] 0x100005db8:cmeq.4s v2、v0、v4 0x100005dbc:bsl.16b v2、v1、v0 名称v0和q0指的是同一寄存器。区别在于寄存器内容的解释方式:名称q0表示寄存器被解
q0
和q1
寄存器,但从v0
和v1
寄存器使用,为什么不同时使用q0
和q1
而不是v0
和v1
是q0
和q1
的v0
和v1
别名(来源:)
0x100005db0:ldrq0[x9,x12]
0x100005db4:ldr q1[x10,x12]
0x100005db8:cmeq.4s v2、v0、v4
0x100005dbc:bsl.16b v2、v1、v0
名称v0
和q0
指的是同一寄存器。区别在于寄存器内容的解释方式:名称q0
表示寄存器被解释为单个128位量,而名称v0
表示寄存器被解释为某个向量。向量元素的类型由指令助记符的后缀表示。在您的例子中,.4s
表示四个32字(32位量)的向量,而.16b
表示16个八位字节(8位量)的向量。您已经链接到的文档中解释了此符号的具体细节。名称v0
和q0
指的是同一寄存器。区别在于寄存器内容的解释方式:名称q0
表示寄存器被解释为单个128位量,而名称v0
表示寄存器被解释为某个向量。向量元素的类型由指令助记符的后缀表示。在您的例子中,.4s
表示四个32字(32位量)的向量,而.16b
表示16个八位字节(8位量)的向量。您已经链接到的文档中解释了此符号的具体细节
0x100005db0 <+548>: ldr q0, [x9, x12]
0x100005db4 <+552>: ldr q1, [x10, x12]
0x100005db8 <+556>: cmeq.4s v2, v0, v4
0x100005dbc <+560>: bsl.16b v2, v1, v0