在《ARM嵌入式系统开发-软件设计与优化 》P106页说:
SUBS r1,r1,#1 ;comprare i with 1,i=i-1
BGT loop ;if(i+1>1) goto loop
红色部分是不是错了,应该要i-1吧?
好像是错了吧。
好久不看ARM汇编指令集了
GT是条件码
BGT 一般直接跟在有符号数减法或比较指令之后
大于0转移
if(i+1>1) goto loop
即为 if(i>0)
while(--i>0);
应该是这个意思吧~~~
引用: 引用楼主 luoliushui 的回复:
在《ARM嵌入式系统开发-软件设计与优化 》P106页说:
SUBS r1,r1,#1? ? ? ? ? ? ? ? ? ? ? ;comprare i with 1,i=i-1
BGT? loop? ? ? ? ? ? ? ? ? ? ? ? ? ;if(i+1>1) goto loop
红色部分是不是错了,应该要i-1吧?
这个是对照上面说的,上面已经说了i=i-1;
那么下面来说的话,原i应该是i+1。
原i>1才会使得GT成立,也就是(新i+1)>1。
呵呵,我看了下原版的英文,两本书都是这么写的。