(不是同一款单片机作比较,可能会些不妥。)
1、IAR使用7.1版,编译M0
2、CCS使用5.5版,编译C2000
3、端口的位取反
以下是IAR:
(低优化)
// 112 GPIOC->ODR ^= (1<<6);
LDR R0,??DataTable1_1 ;; 0x48000814
LDRH R0,[R0, #+0]
MOVS R1,#+64
EORS R1,R1,R0
LDR R0,??DataTable1_1 ;; 0x48000814
STRH R1,[R0, #+0]
(高优化)
// 112 GPIOC->ODR ^= (1<<6);
LDR R0,??DataTable1_1 ;; 0x48000814
LDRH R1,[R0, #+0]
MOVS R2,#+64
EORS R2,R2,R1
STRH R2,[R0, #+0]
以下是CCS:
(不优化)
// GpioDataRegs.GPADAT.all ^= (1<<6);
MOVW DP,#_GpioDataRegs ; [CPU_U]
MOVL ACC,@_GpioDataRegs ; [CPU_] |17|
XORB AL,#0x40 ; [CPU_] |17|
MOVL @_GpioDataRegs,ACC ; [CPU_] |17|
(4级优化)
// GpioDataRegs.GPADAT.all ^= (1<<6);
MOVW DP,#_GpioDataRegs ; [CPU_U]
MOVL ACC,@_GpioDataRegs ; [CPU_] |18|
XORB AL,#0x40 ; [CPU_] |18|
MOVL @_GpioDataRegs,ACC ; [CPU_] |18|
这是同一条C语言语句的情况