两个操作数能是同一寄存器吗?
可以,x & x = x;操作数来自同一份旧寄存器值,结果写回 rd'。
RV32/RV64:对 x8–x15 中的 rd' 和 rs2' 执行 XLEN 位按位与,结果写回 rd'。
C.AND(C 2.0 / Zca,CA)在RV32/RV64对rd'和rs2'的旧XLEN位值按位与,写回rd'。两个三位字段均限x8–x15,没有立即数。等价and rd', rd', rs2';同名源使用同一个旧值。
展示 16 位编码、操作数、计算和架构结果。
RV32C/RV64C / Zca
16 位编码字段
RV32/RV64:对 x8–x15 中的 rd' 和 rs2' 执行 XLEN 位按位与,结果写回 rd'。
RV32/RV64,x8=0xf0f0、x9=0x0ff0:c.and x8, x9 得到 x8=0x00f0;两个寄存器均属 x8–x15。
可以,x & x = x;操作数来自同一份旧寄存器值,结果写回 rd'。
不能。两个三位压缩寄存器字段仅编码 x8–x15。C.AND 没有立即数;与立即数的压缩形式是 C.ANDI。