如何在ARM中的二进制补码中找到整数的绝对值

How to find the absolute value of an integer in Two's complement in ARM

如果我有 -2 (111111111111111111111111111111110),是否有一个简洁的 ARM 指令或一系列这样的指令可以使它成为 (000000000000000000000000000000010)。 OR 或 XOR 在我失去第 30 位后无法正常工作。

谢谢

要求整数的绝对值,请使用比较和减法。

@ input in r0
cmp r0, #0          @ is r0 < 0?
rsbmi r0, r0 #0     @ if yes, r0 = 0 - r0