Move wide with NOT moves the inverse of an optionally-shifted 16-bit immediate value to a register.
使用NOT将可选移位的16位即时值的倒数移动到寄存器。
即把立即数移动寄存器前先把寄存器清零,并反转16位立即数移到目标寄存器。
反转操作是对立即数按位取反操作。
32-bit variant
MOVN <Wd>, #<imm>{, LSL #<shift>}
64-bit variant
MOVN <Xd>, #<imm>{, LSL #<shift>}
<imm>
For the 32-bit variant: is a 32-bit immediate, the bitwise inverse of which can be encoded in
"imm16:hw", but excluding 0xffff0000 and 0x0000ffff.
For the 64-bit variant: is a 64-bit immediate, the bitwise inverse of which can be encoded in
"imm16:hw".
Operation
bits(datasize) result;
result = Zeros();
result<pos+15:pos> = imm16;
result = NOT(result);
X[d] = result;
从C语言理解这个NOT:
NOT是一个逻辑运算符,用于对一个布尔值进行取反操作。它的作用是将一个为真的条件转换为假,或将一个为假的条件转换为真。
除了逻辑非运算符(!),C语言还提供了其他一些位运算符,如按位取反运算符(~),用于对一个整数进行按位取反操作,按位取反运算符将每个二进制位上的0变为1,将每个二进制位上的1变为0。
此处Operation中的NOT为取反运算符(~)。