ARM base instruction -- umaddl
Unsigned Multiply-Add Long multiplies two 32-bit register values, adds a 64-bit register value, and writes the result to the 64-bit destination register.
将两个32位寄存器值相乘,添加一个64位寄存器值,并将结果写入64位目标寄存器。
64-bit variant
UMADDL <Xd>, <Wn>, <Wm>, <Xa>
Decode for this encoding
integer d = UInt(Rd);
integer n = UInt(Rn);
integer m = UInt(Rm);
integer a = UInt(Ra);
Operation
bits(32) operand1 = X[n];
bits(32) operand2 = X[m];
bits(64) operand3 = X[a];
integer result;
result = Int(operand3, TRUE) + (Int(operand1, TRUE) * Int(operand2, TRUE));
X[d] = result<63:0>;
40a150: 9101c260 add x0, x19, #0x70
40a154: 52800301 mov w1, #0x18 // #24
40a158: 52800019 mov w25, #0x0 // #0
40a15c: 9ba10294 umaddl x20, w20, w1, x0