请教这句ARM汇编的意思:andeq r0, r0, r4, ror #20
andeq r0, r0, r4, ror #20关键是andeq这个命令,EQ是一个助记符,加在and后面是什么意思阿?
请高手解释一下,谢谢 原帖由 rocky1972 于 2008-4-13 18:56 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
andeq r0, r0, r4, ror #20
关键是andeq这个命令,EQ是一个助记符,加在and后面是什么意思阿?
请高手解释一下,谢谢
这个... 还是看看 arm 指令集方面的说明吧,偶不懂 arm,改天看看 arm 再来答你 伪码(不要当C码看):if(Z==1)r0=r0+{(r4&0xfff00000)>>20|(r4&0x000fffff)<<12}
括号内是所谓的循环右移(ror)
Z是相等标志 原帖由 rocky1972 于 2008-4-13 18:56 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
andeq r0, r0, r4, ror #20
关键是andeq这个命令,EQ是一个助记符,加在and后面是什么意思阿?
请高手解释一下,谢谢
大致看了一下 arm 文档,结论如下:
eq 是条件码,等于的意思,基于 Z 标志。
ror 是操作码,循环右移的意思, ror #20 意思是:循环右移20位
andeq r0, r0, r4, ror #20 的意思是:
若为0(Z=1) 则: r4 循环右移20位(但不改变r4值),然后 r0 | r4 。最后 r0 = r0 | r4
也就是:
if (zero) {
tmp = r4 >> 20; (循环)
r0 = r0 | tmp;
}
若没理解错,应该是这样吧。
PS:ARM 的指令格式还挺怪的
回复 #4 mik 的帖子
多谢milk和cjaizss小弟只是不懂EQ的意思,现在明白了。谢谢两位BOW 应该是and 而不是 “|”吧,
这通常在反汇编arm程序经常看到的。。
页:
[1]