📄 hex2dec.s18
字号:
NAME hex2dec
RTMODEL "__code_model", "small"
RTMODEL "__core", "sam8xri"
RTMODEL "__data_model", "small"
RTMODEL "__rt_version", "1"
RSEG CSTACK:IDATA:NOROOT(0)
RSEG CSTACK2:IDATA:NOROOT(0)
RSEG CSTACKN:XDATA:NOROOT(0)
EXTERN printf
FUNCTION printf,0202H
ARGFRAME CSTACK, 9, STACK
EXTERN ?CLSAM8_2_L00
EXTERN ?C_MUL_L01
EXTERN ?US_DIVMOD_L02
EXTERN __INIT_STACK
EXTERN __INIT_TINYP_I
PUBLIC `add`
FUNCTION `add`,021203H
ARGFRAME CSTACK, 7, STACK
LOCFRAME CSTACK, 9, STACK
PUBLIC main
FUNCTION main,021a03H
LOCFRAME CSTACK, 9, STACK
CFI Names cfiNames0
CFI StackFrame CFA SP IDATA
CFI Resource R0:8, R1:8, R2:8, R3:8, R4:8, R5:8, R6:8, R7:8, R8:8, R9:8
CFI Resource R10:8, R11:8, R12:8, R13:8, R14:8, R15:8, IP:16
CFI VirtualResource ?RET:16
CFI Resource SP:8
CFI EndNames cfiNames0
CFI Common cfiCommon0 Using cfiNames0
CFI CodeAlign 1
CFI DataAlign 1
CFI ReturnAddress ?RET CODE
CFI CFA SP+2
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 Undefined
CFI R5 Undefined
CFI R6 Undefined
CFI R7 Undefined
CFI R8 Undefined
CFI R9 Undefined
CFI R10 SameValue
CFI R11 SameValue
CFI R12 SameValue
CFI R13 SameValue
CFI R14 SameValue
CFI R15 SameValue
CFI IP Undefined
CFI ?RET Frame(CFA, -2)
CFI EndCommon cfiCommon0
// E:\work\xty\test\IAR_csam86\hex2dec.c
// 1 #define uint unsigned int
// 2 #define uchar unsigned char
// 3 #define ulong unsigned long
// 4
// 5 #include "stdio.h"
// 6
RSEG CODE:CODE:NOROOT(0)
// 7 void add(uint a,uint b)
`add`:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function `add`
REQUIRE __INIT_STACK
// 8 {
FUNCALL `add`, printf
LOCFRAME CSTACK, 9, STACK
ARGFRAME CSTACK, 9, STACK
; * Stack frame (at entry) *
; Param size: 0
; Return address size: 2
; SETPAGE
PUSH R0
CFI R0 Frame(CFA, -3)
CFI CFA SP+3
LD R0,0xD9
PUSH R9
CFI R9 Frame(CFA, -3)
CFI CFA SP+4
PUSH R8
CFI R8 Frame(CFA, -4)
CFI CFA SP+5
PUSH R7
CFI R7 Frame(CFA, -5)
CFI CFA SP+6
PUSH R6
CFI R6 Frame(CFA, -6)
CFI CFA SP+7
; Saved register size: 4
; Auto size: 3
SUB 0xD9,#3
CFI CFA SP+10
AND 0xDF,#252
LD R8,R12
LD R9,R13
// 9 uint c=4;
CLR R14
LD R15,#4
LD R13,#249
ADD R13,R0
LD @R13,R14
LD #0x01[R13],R15
// 10 a=c+b;
AND 0xDF,#252
LD R15,#249
ADD R15,R0
LD R12,@R15
LD R13,#0x01[R15]
AND 0xDF,#252
ADD R13,R9
ADC R12,R8
LD R6,R12
LD R7,R13
// 11 c=a-b;
LD R14,R6
LD R15,R7
SUB R15,R9
SBC R14,R8
LD R13,#249
ADD R13,R0
LD @R13,R14
LD #0x01[R13],R15
// 12 printf("%d",&c);
; Setup parameters for call to function printf
AND 0xDF,#252
LD R15,#249
ADD R15,R0
CLR R14
PUSH R15
CFI CFA SP+11
PUSH R14
CFI CFA SP+12
LD R14,#HIGH(`?<Constant "%d">`)
LD R15,#LOW(`?<Constant "%d">`)
CALL printf
// 13 }
ADD 0xD9,#5
CFI CFA SP+7
POP R6
CFI CFA SP+6
POP R7
CFI CFA SP+5
POP R8
CFI CFA SP+4
POP R9
CFI CFA SP+3
POP R0
CFI CFA SP+2
AND 0xDF,#252
RET
CFI EndBlock cfiBlock0
REQUIRE ?CLSAM8_2_L00
RSEG CODE:CODE:NOROOT(0)
// 14 void main(void)
main:
CFI Block cfiBlock1 Using cfiCommon0
CFI Function main
REQUIRE __INIT_STACK
// 15 {
FUNCALL main, `add`
LOCFRAME CSTACK, 7, STACK
ARGFRAME CSTACK, 7, STACK
; * Stack frame (at entry) *
; Param size: 0
; Return address size: 2
; SETPAGE
PUSH R0
CFI R0 Frame(CFA, -3)
CFI CFA SP+3
LD R0,0xD9
; Auto size: 7
SUB 0xD9,#7
CFI CFA SP+10
// 16 uint a=60;
CLR R4
LD R5,#60
// 17 uint b[3];
// 18 uint i;
// 19 for(i=0;i<3;i++)
CLR R6
CLR R7
??main_0:
LD R14,R6
LD R15,R7
SUB R15,#3
SBC R14,#0
JR UGE,??main_1
// 20 {
// 21 b[i]=0;
AND 0xDF,#252
CLR R14
CLR R15
PUSH R15
CFI CFA SP+11
PUSH R14
CFI CFA SP+12
LD R1,#249
ADD R1,R0
LD R13,R7
LD R15,#2
CALL ?C_MUL_L01
ADD R15,R1
POP R12
CFI CFA SP+11
POP R13
CFI CFA SP+10
LD @R15,R12
LD #0x01[R15],R13
// 22 }
AND 0xDF,#252
ADD R7,#1
ADC R6,#0
JR ??main_0
// 23 for(i=0;i<3;i++)
??main_1:
CLR R6
CLR R7
??main_2:
LD R14,R6
LD R15,R7
SUB R15,#3
SBC R14,#0
JR UGE,??main_3
// 24 {
// 25 b[i]=a%10;
AND 0xDF,#252
LD R14,R4
LD R15,R5
CLR R12
LD R13,#10
CALL ?US_DIVMOD_L02
PUSH R13
CFI CFA SP+11
PUSH R12
CFI CFA SP+12
LD R1,#249
ADD R1,R0
LD R13,R7
LD R15,#2
CALL ?C_MUL_L01
ADD R15,R1
POP R12
CFI CFA SP+11
POP R13
CFI CFA SP+10
LD @R15,R12
LD #0x01[R15],R13
// 26 a/=10;
LD R14,R4
LD R15,R5
CLR R12
LD R13,#10
CALL ?US_DIVMOD_L02
LD R4,R14
LD R5,R15
// 27 }
ADD R7,#1
ADC R6,#0
JR ??main_2
// 28 add(a,i);
??main_3:
; Setup parameters for call to function add
AND 0xDF,#252
LD R12,R6
LD R13,R7
LD R14,R4
LD R15,R5
CALL `add`
// 29 while(1);
??main_4:
JR ??main_4
CFI EndBlock cfiBlock1
REQUIRE ?CLSAM8_2_L00
// 30 }
RSEG TINYP_ID:CODE:NOROOT(0)
`?<Initializer for <Constant "%d">>`:
DB 3
DW `?<Constant "%d">`
DB "%d"
RSEG TINYP_I:IDATA:REORDER:NOROOT(0)
`?<Constant "%d">`:
DS 3
REQUIRE `?<Initializer for <Constant "%d">>`
REQUIRE __INIT_TINYP_I
END
//
// 278 bytes in segment CODE
// 3 bytes in segment TINYP_I
// 6 bytes in segment TINYP_ID
//
// 284 bytes of CODE memory
// 3 bytes of IDATA memory
//
//Errors: none
//Warnings: 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -