garyv 发表于 2012-10-5 20:37:02

STM32F101汇编问题,懂CORTEX-M3汇编的请进

对于CORTEX-M3的汇编指令,有一条指令始终没明白其作用,就是IT指令,arm官网的解释是:

Syntax
IT{x{y{z}}} cond
where:

x
specifies the condition switch for the second instruction in the IT block.

y
specifies the condition switch for the third instruction in the IT block.

z
specifies the condition switch for the fourth instruction in the IT block.

cond
specifies the condition for the first instruction in the IT block.

例子:
ITE    GT         ; Next 2 instructions are conditional <----- 这个注释不是废话么?
ADDGTR1, R0, #55
ADDLER1, R0, #48

我觉得这条指令完全是多余的,因为IT指令的后续指令里面已经明确说明了是条件执行的,把这条指令放在前面构成一个IT block到底有什么目的和原因呢?

wszyjsw2 发表于 2012-10-5 21:24:53

本帖最后由 wszyjsw2 于 2012-10-5 21:28 编辑

帮你顶一下

jisaowang 发表于 2012-10-6 00:46:19

本帖最后由 jisaowang 于 2012-10-6 00:47 编辑

因为thumb指令除了跳转都不支持条件执行。thumb2为了改善这类性能损失,又折中代码长度,所以创造了it指令。这样你就有了最多四条一组的条件执行包,而每条指令长度不变。你可以不写it,汇编系统会帮你自动加上的,但是要符合it指令的要求。另外,it还可以减少代码长度,比如你用add,如果是adds就是半字,add是一个字,但是在it块里,不更新flag的add还是半字。arm的技术博客专门有三篇连载的文章写的很详细,如果英文可以,请去arm网站一观,看完什么都明白了。

lcofjp 发表于 2012-10-6 07:37:34

顶楼上,正解

garyv 发表于 2012-10-6 10:21:26

jisaowang 发表于 2012-10-6 00:46 static/image/common/back.gif
因为thumb指令除了跳转都不支持条件执行。thumb2为了改善这类性能损失,又折中代码长度,所以创造了it指令 ...

谢谢,说的挺好的,能告诉我你说的那个arm博客链接吗?我想系统地了解一下这些东西。

jisaowang 发表于 2012-10-6 12:11:53

garyv 发表于 2012-10-6 10:21
谢谢,说的挺好的,能告诉我你说的那个arm博客链接吗?我想系统地了解一下这些东西。 ...

请上arm官网,自然就找到了

lphaff 发表于 2012-10-7 13:03:56

顶一下2楼。
页: [1]
查看完整版本: STM32F101汇编问题,懂CORTEX-M3汇编的请进