用C語言實現循環左移和循環右移


 

有天重建一段代碼時,遇到了循環右移指令,不知道用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
反正就那樣用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM