|
发表于 2018-1-11 21:56:09
|
显示全部楼层
#define SHT_PROGBITS 0x1
PUBLIC foo
// 1 #include <stdint.h>
// 2 #define FAIL 0UL
// 3 #define SUCCESS 1UL
// 4 typedef uint8_t u8;
// 5 typedef uint16_t u16;
// 6 typedef uint32_t u32;
// 7
// 8 typedef union
// 9 {
// 10 u8 IndexLen8[ 2048 ]; // @@@@@@@@@@@@@@@
// 11 u16 IndexLen16[ 1024 ]; // 1024@?6@
// 12 } _Flash_High_Density_TypeDef;
// 13
// 14 #define HighDensity_FlashPage( x ) ( ( _Flash_High_Density_TypeDef * ) ( 0x08000000 + x * 0x800 ) )
// 15 #define L_APP_SIZE_H HighDensity_FlashPage( 6 )->IndexLen16[ 1 ] // @@@@@@@@@?xFFFF
// 16 #define L_APP_SIZE_L HighDensity_FlashPage( 6 )->IndexLen16[ 2 ] // @@@@@@@@@?xFFFF
// 17
// 18 #define STM32FlashMemorySize ( ( unsigned short int * ) ( 0x1FFFF7E0 ) ) // @@@@@@@@@@?4
// 19
SECTION `.text`:CODE:NOROOT(2)
THUMB
// 20 u32 foo( void )
// 21 {
// 22 if ( ( u32 )( ( L_APP_SIZE_H << 16 ) + L_APP_SIZE_L ) >= ( u32 )( ( *STM32FlashMemorySize ) * 1024 ) ) //
foo:
LDR.N R0,??foo_0 ;; 0x8003002
LDRH R0,[R0, #+0]
UXTH R0,R0 ;; ZeroExt R0,R0,#+16,#+16
LSLS R0,R0,#+16
LDR.N R1,??foo_0+0x4 ;; 0x8003004
LDRH R1,[R1, #+0]
UXTAH R1,R0,R1
LDR.N R0,??foo_0+0x8 ;; 0x1ffff7e0
LDRH R2,[R0, #+0]
UXTH R2,R2 ;; ZeroExt R2,R2,#+16,#+16
MOV R0,#+1024
MULS R2,R0,R2
CMP R1,R2
BCC.N ??foo_1
// 23 {
// 24 return FAIL;
MOVS R0,#+0
B.N ??foo_2
// 25 }
// 26
// 27 if ( ( ( L_APP_SIZE_H << 16 ) + L_APP_SIZE_L ) >= ( ( *STM32FlashMemorySize ) * 1024 ) ) //
??foo_1:
LDR.N R0,??foo_0 ;; 0x8003002
LDRH R0,[R0, #+0]
UXTH R0,R0 ;; ZeroExt R0,R0,#+16,#+16
LSLS R0,R0,#+16
LDR.N R1,??foo_0+0x4 ;; 0x8003004
LDRH R1,[R1, #+0]
UXTAH R1,R0,R1
LDR.N R0,??foo_0+0x8 ;; 0x1ffff7e0
LDRH R2,[R0, #+0]
UXTH R2,R2 ;; ZeroExt R2,R2,#+16,#+16
MOV R0,#+1024
MULS R2,R0,R2
CMP R1,R2
BLT.N ??foo_3
// 28 {
// 29 return FAIL;
MOVS R0,#+0
B.N ??foo_2
// 30 }
// 31
// 32 if ( ( u32 )( ( L_APP_SIZE_H << 16 ) + L_APP_SIZE_L ) >= ( ( *STM32FlashMemorySize ) * 1024 ) ) //
??foo_3:
LDR.N R0,??foo_0 ;; 0x8003002
LDRH R0,[R0, #+0]
UXTH R0,R0 ;; ZeroExt R0,R0,#+16,#+16
LSLS R0,R0,#+16
LDR.N R1,??foo_0+0x4 ;; 0x8003004
LDRH R1,[R1, #+0]
UXTAH R1,R0,R1
LDR.N R0,??foo_0+0x8 ;; 0x1ffff7e0
LDRH R2,[R0, #+0]
UXTH R2,R2 ;; ZeroExt R2,R2,#+16,#+16
MOV R0,#+1024
MULS R2,R0,R2
CMP R1,R2
BCC.N ??foo_4
// 33 {
// 34 return FAIL;
MOVS R0,#+0
B.N ??foo_2
// 35 }
// 36
// 37 if ( ( ( L_APP_SIZE_H << 16 ) + L_APP_SIZE_L ) >= ( u32 )( ( *STM32FlashMemorySize ) * 1024 ) ) //
??foo_4:
LDR.N R0,??foo_0 ;; 0x8003002
LDRH R0,[R0, #+0]
UXTH R0,R0 ;; ZeroExt R0,R0,#+16,#+16
LSLS R0,R0,#+16
LDR.N R1,??foo_0+0x4 ;; 0x8003004
LDRH R1,[R1, #+0]
UXTAH R1,R0,R1
LDR.N R0,??foo_0+0x8 ;; 0x1ffff7e0
LDRH R2,[R0, #+0]
UXTH R2,R2 ;; ZeroExt R2,R2,#+16,#+16
MOV R0,#+1024
MULS R2,R0,R2
CMP R1,R2
BCC.N ??foo_5
// 38 {
// 39 return FAIL;
MOVS R0,#+0
B.N ??foo_2
// 40 }
// 41
// 42 return SUCCESS;
??foo_5:
MOVS R0,#+1
??foo_2:
BX LR ;; return
DATA
??foo_0:
DC32 0x8003002
DC32 0x8003004
DC32 0x1ffff7e0
// 43 }
SECTION `.iar_vfe_header`:DATA:NOALLOC:NOROOT(2)
SECTION_TYPE SHT_PROGBITS, 0
DATA
DC32 0
END
|
|