c 除法反汇编算法
代码
int main(int arg) { arg = -13; printf("%d", arg/8); }
反汇编
005925FF mov eax,dword ptr [arg] 00592602 cdq 00592603 and edx,7 00592606 add eax,edx 00592608 sar eax,3
推导结论
cdq 扩展符号位 到 edx 如果是fff 就加上7 否则加0
对应公式就是
如果a/b=q
a<0 就有 (a+b-1)/b 向下取整 =q
a>0 就有a/b 向下取整=q
从此山高路远,纵马扬鞭。愿往后旅途,三冬暖,春不寒,天黑有灯,下雨有伞。此生尽兴,不负勇往。