有天重建一段代碼時,遇到了循環右移指令,不知道用C語言怎么實現,后來得到小偉指點,感謝。。
me 15:56:38
004BD2C9 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
004BD2CC D1CA ROR EDX,1
004BD2CE 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
me 15:57:16
這樣的匯編,怎么用C語言寫出來呢?
ROR循環右移
小偉 15:58:51
等等,翻筆記中。
小偉 15:59:06
#define rol( a , o ) \
((a<<(o%0x20)) | (a>>(0x20 - (o%0x20))))
#define ror( a , o ) \
((a>>(o%0x20)) | (a<<(0x20 - (o%0x20))))
me 15:59:10
嘿嘿,有小偉在,不愁了!
me 15:59:49
#define ror( a , o )
怎么用的,這個?
me 16:00:01
a是什么
o又是?
小偉 16:00:16
ror(xx,1)
me 16:01:01
ror(xx,1)這個意思是 單字節循環右移1位?
小偉 16:01:13
是的
me 16:01:22
ROR EDX,1
我這個是4字節的
小偉 16:01:35
反正就那樣用。