我需要帮助解释这个编译器优化:
;R12 = 0x88888889;
UMULL LR, R2, R12, R3 ; R3 * 0x88888889;
MOV R2, R2,LSR#3 ; ((R3 * 0x88888889 << 32) >> 3)
RSB R2, R2, R2,LSL#4 ; (R3 * 0x88888889 >> 32 >> 3) << 16
RSB R2, R2, R3,LSL#1 ; (R3 << 1) - ((R3 * 0x88888889 >> 32 >> 3) << 16);
目前我是这样解释的(不确定它是否正确):
(R3 * 2) - ((R3 * 0x88888889 * 120) / 0xFFFFFFFF);
我发现它可能是整数除法,我希望有人能帮助我更好地理解这个优化
谢谢。