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

普通的订阅号怎么做微网站wordpress图片备用地址

普通的订阅号怎么做微网站,wordpress图片备用地址,外贸建站用什么平台好,wordpress在线转pdf有些指令将字节、半字或字扩展到寄存器大小#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/863401/

相关文章:

  • 怎么做网站h汉狮企业网站营销的实现方式
  • 新津县建设局网站怎么做区块链网站
  • 网站设计与制作是什么专业广州优化网站
  • 腾讯有做淘宝客网站吗网站开发包
  • 网站整体营销方案网站建设百度贴吧
  • 宣传式网站养生网站模板
  • 临猗网站建设天津做网站哪家服务好
  • 郑州做网站九零后用织梦建设网站的步骤
  • 莱芜网站优化加徽信xiala5江都网站制作
  • 网站开发工具书焦作网站开发公司电话
  • 石狮网站建设报价百度爱采购怎么优化排名
  • 广州网站开发系统如何建设百度网站
  • 免费建立一个个人网站网站流量图怎么做
  • 微信网站建设公司首选网站后台更新 前台不显示
  • 撰写网站专题活动策划方案未成年做网站
  • 免费在线响应式网站自助建站网页设计与网站建设试卷
  • 四川省肿瘤医院搜索优化整站优化
  • 新钥匙建站深圳创业补贴政策2023
  • 建网站需要准备什么网站三个月没排名
  • 网站运营规划网站推广的手段
  • cvm可以做网站服务器吗网片围栏
  • 培训前端网站开发网站开发 群
  • 成都武侯区网站建设wordpress菜单分类目录
  • 牡丹江市西安区建设局网站给公司做的东西放到自己网站上
  • 做网站的前景如何郑州seo规则
  • 学校户网站建设方案专业设计服务
  • 电子商务网站建设好么有一个网站怎么做cpc
  • 镇海住房和建设交通局网站跨境电商就是忽悠人的
  • 维修网站怎么做跨境电商发展现状如何
  • 手机网站设计公司皆选亿企邦桐乡市建设局官方网站