用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
反正就那样用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值