当前位置: 首页 > news >正文

青岛网站搭建公司哪家好买转发链接

青岛网站搭建公司哪家好,买转发链接,网络营销实验报告,南京一对一网站建设有些指令将字节、半字或字扩展到寄存器大小#xff0c;可以是 X 或 W。这些指令存在于有符号#xff08;SXTB、SXTH、SXTW#xff09;和无符号#xff08;UXTB、UXTH#xff09;变体中#xff0c;并且是适当的位域操作指令。 这些指令的有符号和无符号变体都将字节、半字…有些指令将字节、半字或字扩展到寄存器大小可以是 X 或 W。这些指令存在于有符号SXTB、SXTH、SXTW和无符号UXTB、UXTH变体中并且是适当的位域操作指令。 这些指令的有符号和无符号变体都将字节、半字或字尽管只有 SXTW 对字进行操作扩展到寄存器大小。源始终是 W 寄存器。目标寄存器是 X 或 W 寄存器但 SXTW 除外它必须是 X 寄存器。 例如SXTB X0, W1 —— 通过重复字节的最左边的位将寄存器 W1 的最低有效字节从 8 位符号扩展为 64 位。 位域指令类似于 ARMv7 中存在的指令包括位域插入 BFI 以及有符号和无符号位域提取 (S/U)BFX。还有额外的位域指令例如 BFXIL低位域提取和插入、UBFIZ无符号位域插入零和 SBFIZ有符号位域插入零。 还有 BFM、UBFM 和 SBFM 指令。 这些是 ARMv8 新增的位域移动指令。但是不需要明确使用这些指令因为为所有情况提供了别名。这些别名是已经描述的位域操作[SU]XT[BHWX]、ASR/LSL/LSR immediate、BFI、BFXIL、SBFIZ、SBFX、UBFIZ 和 UBFX。 CLZ —— 计数寄存器中的前导零位。 RBIT —— 反转所有位。 REV —— 反转寄存器的字节顺序。 REV16 —— 反转寄存器中每个半字的字节顺序。 REV32 —— 反转寄存器中每个字的字节顺序。 REV、REV16、可以在字32 位或双字64 位大小的寄存器上执行REV32 仅适用于 64 位寄存器。 1. SXTB SXTBSigned Extend Byte指令从寄存器中提取一个 8 位值将其符号扩展到寄存器的大小并将结果写入目标寄存器。该指令是 SBFM 指令的别名。 32-bit (sf 0 N 0) SXTB Wd, Wn 等价指令 SBFM Wd, Wn, #0, #7 64-bit (sf 1 N 1) SXTB Xd, Wn 等价指令 SBFM Xd, Xn, #0, #7 Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 下面是使用 SXTB 指令的例子。 long long int x 0;int y 0x7080;asm volatile(SXTB %x[x], %w[y]\n:[x] r(x),[y] r(y):: cc, memory);执行 SXTB %x[x], %w[y] 将 %w[y] 的最低 8 位符号扩展为 64 位也就是 0x7080 中的 0x800b1000 0000符号位为 1扩展到 64 位即 0xFFFF FFFF FFFF FF80十进制为 -128这也是最终 x 的值。 2. SXTH SXTHSign Extend Halfword —— 符号扩展半字指令提取一个 16 位值将其符号扩展到寄存器的大小并将结果写入目标寄存器。该指令是 SBFM 指令的别名。 32-bit (sf 0 N 0) SXTH Wd, Wn 等价指令 SBFM Wd, Wn, #0, #15 64-bit (sf 1 N 1) SXTH Xd, Wn 等价指令 SBFM Xd, Xn, #0, #15 Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 下面是使用 SXTH 指令的例子。 long long int x 0;int y 0x7080;asm volatile(SXTH %x[x], %w[y]\n:[x] r(x),[y] r(y):: cc, memory);执行 SXTH %x[x], %w[y] 将 %w[y] 的最低 16 位符号扩展为 64 位也就是 0x7080 中的 0x70800b0111 0000 1000 0000符号位为 0扩展到 64 位还是 0x7080十进制为 28800这也是最终 x 的值。 3. SXTW SXTWSign Extend Word —— 符号扩展字指令将一个字符号扩展到寄存器的大小并将结果写入目标寄存器。该指令是 SBFM 指令的别名。 64-bit SXTW Xd, Wn 等价指令 SBFM Xd, Xn, #0, #31 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 下面是使用 SXTW 指令的例子。 long long int x 0;int y 0x7080;asm volatile(SXTW %x[x], %w[y]\n:[x] r(x),[y] r(y):: cc, memory);执行 SXTW %x[x], %w[y] 将 %w[y] 符号扩展为 64 位也就是 0x7080 中的 0x70800b0000 0000 0000 0000 0111 0000 1000 0000符号位为 0扩展到 64 位还是 0x7080十进制为 28800这也是最终 x 的值。 4. UXTB UXTBUnsigned Extend Byte —— 无符号扩展字节 从寄存器中提取一个 8 位值将其零扩展到寄存器的大小并将结果写入目标寄存器。该指令是 UBFM 指令的别名。 32-bit UXTB Wd, Wn 等价指令 UBFM Wd, Wn, #0, #7 Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 下面是使用 UXTB 指令的例子。 int x 0;int y 0x7080;asm volatile(UXTB %w[x], %w[y]\n:[x] r(x),[y] r(y):: cc, memory);执行 UXTB %w[x], %w[y] 将 %w[y] 扩展为 32 位也就是 0x7080 中的 0x800b1000 0000扩展到 32 位以零填充扩展位最终还为 0x80这也是最终 x 的值。 5. UXTH UXTHUnsigned Extend Halfword —— 无符号扩展半字 从寄存器中提取一个 16 位值将其零扩展到寄存器的大小并将结果写入目标寄存器。该指令是 UBFM 指令的别名。 32-bit UXTH Wd, Wn 等价指令 UBFM Wd, Wn, #0, #15 Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 下面是使用 UXTH 指令的例子。 int x 0;int y 0x77777080;asm volatile(UXTH %w[x], %w[y]\n:[x] r(x),[y] r(y):: cc, memory);执行 UXTH %w[x], %w[y] 将 %w[y] 扩展为 32 位也就是 0x77777080 的低 16 位即 0x70800b0111 0000 1000 0000扩展到 32 位以零填充扩展位最终还为 0x7080这也是最终 x 的值。 6. BFI BFIBitfield Insert —— 位域插入指令将 width 位的位域从源寄存器的最低有效位复制到目标寄存器的位位置 lsb而其他目标位保持不变。该指令是 BFM 指令的别名。 32-bit (sf 0 N 0) BFI Wd, Wn, #lsb, #width 等价指令 BFM Wd, Wn, #(-lsb MOD 32), #(width-1) 64-bit (sf 1 N 1) BFI Xd, Xn, #lsb, #width 等价指令 BFM Xd, Xn, #(-lsb MOD 64), #(width-1) Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 lsb 对于 32 位变体是目标位域的 lsb 的位数范围为 0 到 31。对于 64 位变体是目标位域的 lsb 的位数范围为 0 到 63。 width 对于 32 位变体是位域的宽度范围为 1 到 32-lsb。对于 64 位变体是位域的宽度范围为 1 到 64-lsb。 下图是 BFI W0, W0, #9, #6 指令操作示意图 下面是使用 BFI 指令的例子。 long long int x -1;long long int y 0x77777080;asm volatile(BFI %x[x], %x[y], #16, #16\n:[x] r(x),[y] r(y):: cc, memory);执行 BFI %x[x], %x[y], #16, #16 将 %x[y] 最低 16 位复制到 %x[x] 的 16 ~ 31 位也就是 0x77777080 的低 16 位即 0x70800b0111 0000 1000 0000复制到 %x[x] 的 16 ~ 31 位最终的结果就是 0xFFFF FFFF 7080 FFFF这也是最终 x 的值。 7. BFC BFCBitfield Clear —— 位域清零 将目标寄存器的位位置 lsb 处的 width 位的位域设置为零而其他目标位保持不变。该指令是 BFM 指令的别名。 32-bit (sf 0 N 0) BFC Wd, #lsb, #width 等价指令 BFM Wd, WZR, #(-lsb MOD 32), #(width-1) 64-bit (sf 1 N 1) BFC Xd, #lsb, #width 等价指令 BFM Xd, XZR, #(-lsb MOD 64), #(width-1) Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 lsb 对于 32 位变体是目标位域的 lsb 的位数范围为 0 到 31。对于 64 位变体是目标位域的 lsb 的位数范围为 0 到 63。 width 对于 32 位变体是位域的宽度范围为 1 到 32-lsb。对于 64 位变体是位域的宽度范围为 1 到 64-lsb。 下图是 BFC W1, #3, #4 指令操作示意图 下面是使用 BFC 指令的例子。 long long int x -1;asm volatile(BFC %x[x], #8, #8\n:[x] r(x):: cc, memory);执行 BFC %x[x], #8, #8 将 %x[x] 寄存器的 8 ~ 15 位宽度为 8清零即 0xFFFF FFFF FFFF 00FF这也是最终 x 的值。 8. SBFX SBFXSigned Bitfield Extract —— 有符号位域提取 指令复制一个 width 位的位域从源寄存器中的位位置 lsb 开始到目标寄存器的最低有效位并将位域前面的目标位设置为位域最高有效位的副本。该指令是 SBFM 指令的别名。 32-bit (sf 0 N 0) SBFX Wd, Wn, #lsb, #width 等价指令 SBFM Wd, Wn, #lsb, #(lsbwidth-1) 64-bit (sf 1 N 1) SBFX Xd, Xn, #lsb, #width 等价指令 SBFM Xd, Xn, #lsb, #(lsbwidth-1) Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 lsb 对于 32 位变体是源位域的 lsb 的位数范围为 0 到 31。对于 64 位变体是源位域的 lsb 的位数范围为 0 到 63。 width 对于 32 位变体是位域的宽度范围为 1 到 32-lsb。对于 64 位变体是位域的宽度范围为 1 到 64-lsb。 下面是使用 SBFX 指令的例子。 long long int x 0;long long int y 0x87;asm volatile(SBFX %x[x], %x[y], #4, #4\n:[x] r(x),[y] r(y):: cc, memory);执行 SBFX %x[x], %x[y], #4, #4首先将 %x[y] 寄存器内的 0x87 的 4 ~ 7 位复制到 %x[x] 寄存器的 0 ~ 3 位又因为 0x87 的第七位为 1所以使用 1 扩展 %x[x] 的 4 ~ 63 位这里体现了符号位即 0xFFFF FFFF FFFF FF80这也是最终 x 的值。 9. UBFX UBFXUnsigned Bitfield Extract —— 无符号位域提取指令复制一个 width 位的位域从源寄存器中的位位置 lsb 开始到目标寄存器的最低有效位并将位域前面的目标位设置为零。该指令是 UBFM 指令的别名。 32-bit (sf 0 N 0) UBFX Wd, Wn, #lsb, #width 等价指令 UBFM Wd, Wn, #lsb, #(lsbwidth-1) 64-bit (sf 1 N 1) UBFX Xd, Xn, #lsb, #width 等价指令 UBFM Xd, Xn, #lsb, #(lsbwidth-1) Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 lsb 对于 32 位变体是源位域的 lsb 的位数范围为 0 到 31。对于 64 位变体是源位域的 lsb 的位数范围为 0 到 63。 width 对于 32 位变体是位域的宽度范围为 1 到 32-lsb。对于 64 位变体是位域的宽度范围为 1 到 64-lsb。 下图是 UBFX W1, W0, #18, #7 指令操作示意图 下面是使用 UBFX 指令的例子。 long long int x 0;long long int y 0x87;asm volatile(UBFX %x[x], %x[y], #4, #4\n:[x] r(x),[y] r(y):: cc, memory);执行 UBFX %x[x], %x[y], #4, #4首先将 %x[y] 寄存器内的 0x87 的 4 ~ 7 位复制到 %x[x] 寄存器的 0 ~ 3 位接着使用 0 扩展 %x[x] 的 4 ~ 63 位即 0x8这也是最终 x 的值。 10. BFXIL 位域提取并在低端插入其他位不变。该指令是 BFM 指令的别名。 32-bit (sf 0 N 0) BFXIL Wd, Wn, #lsb, #width 等价指令 BFM Wd, Wn, #lsb, #(lsbwidth-1) 64-bit (sf 1 N 1) BFXIL Xd, Xn, #lsb, #width 等价指令 BFM Xd, Xn, #lsb, #(lsbwidth-1) Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 lsb 是源位域的“lsb”的位数。对于 32 位变体范围为 0 到 31对于 64 位变体范围为 0 到 63。 width 是位域的宽度。对于 32 位变体范围为 1 到 32-lsb对于 64 位变体范围为 1 到 64-lsb。 下面是使用 BFXIL 指令的例子。 long long int x 0x4444;long long int y 0x87;asm volatile(BFXIL %x[x], %x[y], #4, #4\n:[x] r(x),[y] r(y):: cc, memory);执行 BFXIL %x[x], %x[y], #4, #4首先将 %x[y] 寄存器内的 0x87 的 4 ~ 7 位复制到 %x[x] 寄存器的 0 ~ 3 位其它位保持不变所以最终 %x[x] 的值为 0x4448。 11. UBFIZ 无符号位域插入零左右为零。该指令是 UBFM 指令的别名。 32-bit (sf 0 N 0) UBFIZ Wd, Wn, #lsb, #width 等价指令 UBFM Wd, Wn, #(-lsb MOD 32), #(width-1) 64-bit (sf 1 N 1) UBFIZ Xd, Xn, #lsb, #width 等价指令 UBFM Xd, Xn, #(-lsb MOD 64), #(width-1) Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 lsb 是源位域的“lsb”的位数。对于 32 位变体范围为 0 到 31对于 64 位变体范围为 0 到 63。 width 是位域的宽度。对于 32 位变体范围为 1 到 32-lsb对于 64 位变体范围为 1 到 64-lsb。 下面是使用 UBFIZ 指令的例子。 long long int x 0x444444;long long int y 0x89;asm volatile(UBFIZ %x[x], %x[y], #8, #8\n:[x] r(x),[y] r(y):: cc, memory);执行 UBFIZ %x[x], %x[y], #8, #8首先将 %x[y] 寄存器内的 0x89 低 8 位复制到 %x[x] 寄存器的 8 ~ 15 位其它位全部清零所以最终 %x[x] 的值为 0x8900。 12. SBFIZ 带符号的位域插入零符号复制到左边零复制到右边。该指令是 SBFM 指令的别名。 32-bit (sf 0 N 0) SBFIZ Wd, Wn, #lsb, #width 等价指令 SBFM Wd, Wn, #(-lsb MOD 32), #(width-1) 64-bit (sf 1 N 1) SBFIZ Xd, Xn, #lsb, #width 等价指令 SBFM Xd, Xn, #(-lsb MOD 64), #(width-1) Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 lsb 是源位域的“lsb”的位数。对于 32 位变体范围为 0 到 31对于 64 位变体范围为 0 到 63。 width 是位域的宽度。对于 32 位变体范围为 1 到 32-lsb对于 64 位变体范围为 1 到 64-lsb。 下面是使用 SBFIZ 指令的例子。 long long int x 0x444444;long long int y 0x89;asm volatile(SBFIZ %x[x], %x[y], #8, #8\n:[x] r(x),[y] r(y):: cc, memory);执行 SBFIZ %x[x], %x[y], #8, #8首先将 %x[y] 寄存器内的 0x89 低 8 位复制到 %x[x] 寄存器的 8 ~ 15 位接着由于 0x89 符号位为 1所以 16 ~ 63 位全部复制为 1 0 ~ 7 位则清零所以最终 %x[x] 的值为 0xFFFF FFFF FFFF 8900。 13. BFM BFMBitfield move —— 位域移动位域移动其他位不变。该指令由别名 BFC、BFI 和 BFXIL 使用。 如果 imms 大于或等于 immr则将从源寄存器中的位位置 immr 开始的imms - immr 1位的位域复制到目标寄存器的最低有效位。 如果 imms 小于immr则将源寄存器的最低有效位中的imms 1位的位域复制到目标寄存器的位位置regsize - immr其中 regsize 是 32 或 64 位的目标寄存器大小。 在这两种情况下目的寄存器的其他位保持不变。 32-bit (sf 0 N 0) BFM Wd, Wn, #immr, #imms 64-bit (sf 1 N 1) BFM Xd, Xn, #immr, #imms Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 immr 是循环右移量在“immr”字段中编码。对于 32 位变体在 0 到 31 的范围内对于 64 位变体是在 0 到 63 范围内。 imms 是要从源移动的最左边的位数the leftmost bit number to be moved from the source编码在“imms”字段中。对于 32 位变体在 0 到 31 的范围内对于 64 位变体范围从 0 到 63。 下面是使用 BFM 指令的例子。 long long int x 0x444444;long long int y 0x79;asm volatile(BFM %x[x], %x[y], #8, #4\n:[x] r(x),[y] r(y):: cc, memory);执行 BFM %x[x], %x[y], #8, #4将 0x790b01111001 中的 0 ~ 4 位4 1 5 共 5 位0b11001移动到目标寄存器 %x[x]也就是将 0x19 移动到 %x[x] 的最左边从 64 - 8 56 位开始复制其它位保持不变最终为 0x1900 0000 0044 4444。 14. UBFM UBFMUnsigned Bitfield Move —— 无符号位域移动指令通常通过其别名之一进行访问该别名始终是反汇编的首选。 如果 imms 大于或等于 immr则将从源寄存器中的位位置 immr 开始的imms - immr 1位的位域复制到目标寄存器的最低有效位。 如果 imms 小于immr则将源寄存器的最低有效位中的imms 1位的位域复制到目标寄存器的位位置regsize - immr其中 regsize 是 32 或 64 位的目标寄存器大小。 在这两种情况下位域前面和后面的目标位都设置为零。 该指令由别名 LSL立即数、LSR立即数、UBFIZ、UBFX、UXTB 和 UXTH 使用。 32-bit (sf 0 N 0) UBFM Wd, Wn, #immr, #imms 64-bit (sf 1 N 1) UBFM Xd, Xn, #immr, #imms Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 immr 是循环右移量在“immr”字段中编码。对于 32 位变体在 0 到 31 的范围内对于 64 位变体是在 0 到 63 范围内。 imms 是要从源移动的最左边的位数the leftmost bit number to be moved from the source编码在“imms”字段中。对于 32 位变体在 0 到 31 的范围内对于 64 位变体范围从 0 到 63。 下面是使用 UBFM 指令的例子。 long long int x 0x444444;long long int y 0x79;asm volatile(UBFM %x[x], %x[y], #8, #4\n:[x] r(x),[y] r(y):: cc, memory);执行 UBFM %x[x], %x[y], #8, #4将 0x790b01111001 中的 0 ~ 4 位4 1 5 共 5 位0b11001移动到目标寄存器 %x[x]也就是将 0x19 移动到 %x[x] 的最左边从 64 - 8 56 位开始复制其它位清零最终为 0x1900 0000 0000 0000。 15. SBFM SBFMSigned Bitfield Move —— 有符号位域移动指令通常通过其别名之一访问该别名始终是反汇编的首选。 如果 imms 大于或等于 immr则将从源寄存器中的位位置 immr 开始的imms - immr 1位的位域复制到目标寄存器的最低有效位。 如果 imms 小于immr则将源寄存器的最低有效位中的imms 1位的位域复制到目标寄存器的位位置regsize - immr其中 regsize 是 32 或 64 位的目标寄存器大小。 在这两种情况下位域后面的目的位被设置为零位域前面的位被设置到位域的最高有效位的拷贝。 该指令由别名 ASR立即数、SBFIZ、SBFX、SXTB、SXTH 和 SXTW 使用。 32-bit (sf 0 N 0) SBFM Wd, Wn, #immr, #imms 64-bit (sf 1 N 1) SBFM Xd, Xn, #immr, #imms Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 immr 是循环右移量在“immr”字段中编码。对于 32 位变体在 0 到 31 的范围内对于 64 位变体是在 0 到 63 范围内。 imms 是要从源移动的最左边的位数the leftmost bit number to be moved from the source编码在“imms”字段中。对于 32 位变体在 0 到 31 的范围内对于 64 位变体范围从 0 到 63。 下面是使用 SBFM 指令的例子。 long long int x 0x444444;long long int y 0x79;asm volatile(SBFM %x[x], %x[y], #8, #4\n:[x] r(x),[y] r(y):: cc, memory);执行 SBFM %x[x], %x[y], #8, #4将 0x790b01111001 中的 0 ~ 4 位4 1 5 共 5 位0b11001移动到目标寄存器 %x[x]也就是将 0x19 移动到 %x[x] 的最左边从 64 - 8 56 位开始复制它的后面的位清零前面的位由于符号位为 1因此全部复制为 1最终为 0xF900 0000 0000 0000。 16. CLZ 计算前导零位数Rd CLZ(Rn)。 32-bit (sf 0) CLZ Wd, Wn 64-bit (sf 1) CLZ Xd, Xn Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 下面是使用 CLZ 指令的例子。 long long int x 0;long long int y 0x79;asm volatile(CLZ %x[x], %x[y]\n:[x] r(x),[y] r(y):: cc, memory);执行 CLZ %x[x], %x[y]计算 %x[y] 前导零的位数即 0x790b01111001中前导零的位数也就是 64 - 7 57最终将 57 写入 %x[x]。 17. RBIT RBIT 指令反转所有位反转位序。 32-bit (sf 0) RBIT Wd, Wn 64-bit (sf 1) RBIT Xd, Xn Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 下面是使用 RBIT 指令的例子。 long long int x 0;long long int y 0x79;asm volatile(RBIT %x[x], %x[y]\n:[x] r(x),[y] r(y):: cc, memory);执行 RBIT %x[x], %x[y]反转 %x[y] 中的所有位反转位序即 0x790b01111001反转为 0x9E00 0000 0000 0000最终将 0x9E00 0000 0000 0000 写入 %x[x]。 18. REV REV 指令反转所有字节。 32-bit (sf 0) REV Wd, Wn 64-bit (sf 1) REV Xd, Xn Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 下面是使用 REV 指令的例子。 long long int x 0;long long int y 0x12436579;asm volatile(REV %x[x], %x[y]\n:[x] r(x),[y] r(y):: cc, memory);执行 REV %x[x], %x[y]反转 %x[y] 中的所有字节即 0x12436579 反转为 0x7965 4312 0000 0000最终将 0x7965 4312 0000 0000 写入 %x[x]。 19. REV16 REV16 指令反转 16 位半字中的字节。 32-bit (sf 0) REV16 Wd, Wn 64-bit (sf 1) REV16 Xd, Xn Wd 是通用目标寄存器的 32 位名称在“Rd”字段中编码。 Wn 是通用源寄存器的 32 位名称在“Rn”字段中编码。 Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 下面是使用 REV16 指令的例子。 long long int x 0;long long int y 0x12436579;asm volatile(REV16 %x[x], %x[y]\n:[x] r(x),[y] r(y):: cc, memory);执行 REV16 %x[x], %x[y]反转 %x[y] 中 16 位半字中的字节即 0x12436579 反转为 0x43127965最终将 0x43127965 写入 %x[x]。 20. REV32 REV32 指令反转 32 位字中的字节。 64-bit REV32 Xd, Xn Xd 是通用目标寄存器的 64 位名称在“Rd”字段中编码。 Xn 是通用源寄存器的 64 位名称在“Rn”字段中编码。 下面是使用 REV32 指令的例子。 long long int x 0;long long int y 0x12436579;asm volatile(REV32 %x[x], %x[y]\n:[x] r(x),[y] r(y):: cc, memory);执行 REV32 %x[x], %x[y]反转 %x[y] 中 32 位字中的字节即 0x12436579 反转为 0x79654312最终将 0x79654312 写入 %x[x]。 参考资料 1.《ARMv8-A-Programmer-Guide》 2.《Arm® A64 Instruction Set Architecture Armv8, for Armv8-A architecture profile》
http://www.w-s-a.com/news/816758/

相关文章:

  • 招聘网站如何建设中国计算机网络公司排名
  • 工信部网站备案规定厦门在线制作网站
  • 商丘网站公司智联招聘手机app下载
  • 江西专业南昌网站建设中国专业的网站建设
  • 物流企业网站建设方案招标网站有哪些
  • 网站建设服务中企动力建筑工程网络进度计划备注填写范例
  • 电子商务网站开发与建设试卷php网站开发专业
  • 运城网站制作路90江苏省网站备案系统
  • 唐山做企业网站实体门店管理系统
  • 网站优化推广教程深圳网站建设世纪前线
  • 网站建设专家哪家好兰州网络推广执行
  • 广东住房和城乡建设厅网站王芃增加网站收录
  • 北京网站建设手机app电子商务网红营销的劣势
  • 网站 营销型wordpress获取4条文章标题
  • 浦东区建设工程监督网站建立全国统一的突发事件信息系统
  • 做网站需要基础吗重庆市造价信息网
  • 我要建设公司网站大连培训网站建设
  • 网站建设校长信箱设计方案小程序报价开发
  • 电子网站建设ppt模板营销策划方案怎么写?
  • 什么网站收录排名最高济南能源建设网站
  • 深圳移动网站建设公司价格桂林做网站哪家公司好
  • 互联网网站名字网站合作建设合同
  • 舟山高端网站设计广州优化排名推广
  • 哪个网站做免费广告好上海人才网站
  • cn域名做网站竞价推广代理
  • 省建设干部培训中心网站网站地图1 500 怎么做
  • 制作一个网站需要哪些人网站建设经营服务合同
  • 山东省住房和城乡建设厅官方网站网易发布广州
  • 长沙设计网站效果设计师灵感网站
  • 做网站php都用什么框架把asp.net写的网站别人怎么访问