装配中的双重插入

时间:2013-09-26 02:59:50

标签: assembly

我正在使用一些程序集,我想知道以下代码的含义,特别是双carot(<<<<<<<<

.EQU LED0 , 0
.EQU LED1 , 1
.EQU LED2 , 2
.EQU LED3 , 3

ldi R16, (1<<LED0 | 1<<LED1 | 1<<LED2 | 1<<LED3)

这种变化值是否有所改变?我有点困惑。 注意......这适用于8位Atmel指令集。

1 个答案:

答案 0 :(得分:0)

看起来它正在创建4个常量(LED0LED3),其数值对应于03

然后使用这些值(可能是C预处理器)在编译时构建另一个常量:1<<0 | 1<<1 | 1<<2 | 1<<3

结果值为二进制1111或十进制15

您可以使用常量小数表达式15替换整个括号表达式。