📄 fibo.lst
字号:
ARM COMPILER V2.00f, fibo 21/02/05 09:57:52 PAGE 1
ARM COMPILER V2.00f, COMPILATION OF MODULE fibo
OBJECT MODULE PLACED IN fibo.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe fibo.c THUMB DEBUG TABS(4)
stmt level source
1 /************************************************************/
2 /* PROJECT NAME: First */
3 /* Project: LPC2100 Training course */
4 /* Engineer: T Martin */
5 /* Filename: Fibo.C */
6 /* Language: C */
7 /* Compiler: Keil CARM Ver 2.00b */
8 /* Assembler: */
9 /* */
10 /************************************************************/
11 /* Modification History: */
12 /* */
13 /************************************************************/
14 /* Function: */
15 /* */
16 /* Startup code example */
17 /* */
18 /* Demonstrates Startup code and project layout */
19 /* */
20 /* Oscillator frequency 12.00 Mhz */
21 /* Target board Keil MCB2100 */
22 /************************************************************/
23
24 unsigned int fiboCount;
25 unsigned int counter;
26
27
28 unsigned int Fibonacci(unsigned int n)
29 {
30 1 unsigned fib1, fib2, fibo;
31 1 int i;
32 1
33 1 fib1 = 0;
34 1 fib2 = 1;
35 1 fibo = n;
36 1 i = 2;
37 1 while (i <= n) {
38 2 fibo = fib1 + fib2;
39 2 fib1 = fib2;
40 2 fib2 = fibo;
41 2 i++;
42 2 }
43 1 return(fibo);
44 1 }
45
46 int main(void)
47 {
48 1
49 1 int i;
50 1
51 1 for (;;)
52 1 {
53 2 counter = 0;
54 2 for (i = 0; i <= 20; i++)
55 2 {
56 3 counter++;
57 3 fiboCount = Fibonacci(counter);
58 3 }
59 2 }
ARM COMPILER V2.00f, fibo 21/02/05 09:57:52 PAGE 2
60 1 }
ARM COMPILER V2.00f, fibo 21/02/05 09:57:52 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC Fibonacci?T
PUBLIC main
PUBLIC fiboCount
PUBLIC counter
*** DATA SEGMENT '?DT0?fibo':
00000000 fiboCount:
00000000 DS 4
00000004 counter:
00000004 DS 4
*** CODE SEGMENT '?PR?Fibonacci?T?fibo':
28: unsigned int Fibonacci(unsigned int n)
00000000 B410 PUSH {R4}
00000002 ---- Variable 'n' assigned to Register 'R0' ----
29: {
00000002 ; SCOPE-START
33: fib1 = 0;
00000002 2400 MOV R4,#0x0
00000004 ---- Variable 'fib1' assigned to Register 'R4' ----
34: fib2 = 1;
00000004 2301 MOV R3,#0x1
00000006 ---- Variable 'fib2' assigned to Register 'R3' ----
35: fibo = n;
00000006 1C01 MOV R1,R0 ; fibo
00000008 ---- Variable 'fibo' assigned to Register 'R1' ----
36: i = 2;
00000008 2202 MOV R2,#0x2
0000000A ---- Variable 'i' assigned to Register 'R2' ----
37: while (i <= n) {
0000000A E003 B L_1 ; T=0x00000014
0000000C L_3:
38: fibo = fib1 + fib2;
0000000C 18E1 ADD R1,R4,R3 ; fib1
39: fib1 = fib2;
0000000E 1C1C MOV R4,R3 ; fib1
40: fib2 = fibo;
00000010 1C0B MOV R3,R1 ; fib2
41: i++;
00000012 3201 ADD R2,#0x1
42: }
00000014 L_1:
00000014 4282 CMP R2,R0 ; i
00000016 D9F9 BLS L_3 ; T=0x0000000C
43: return(fibo);
00000018 1C08 MOV R0,R1 ; fibo
0000001A ; SCOPE-END
44: }
0000001A BC10 POP {R4}
0000001C 4770 BX R14
0000001E ENDP ; 'Fibonacci?T'
*** CODE SEGMENT '?PR?main?fibo':
46: int main(void)
00000000 B500 PUSH {LR}
47: {
00000002 ; SCOPE-START
51: for (;;)
00000002 L_9:
53: counter = 0;
ARM COMPILER V2.00f, fibo 21/02/05 09:57:52 PAGE 4
00000002 2100 MOV R1,#0x0
00000004 4800 LDR R0,=counter ; counter
00000006 6001 STR R1,[R0,#0x0] ; counter
54: for (i = 0; i <= 20; i++)
00000008 2400 MOV R4,#0x0
0000000A ---- Variable 'i' assigned to Register 'R4' ----
0000000A L_14:
56: counter++;
0000000A 4800 LDR R0,=counter ; counter
0000000C 6801 LDR R1,[R0,#0x0] ; counter
0000000E 3101 ADD R1,#0x1
00000010 6001 STR R1,[R0,#0x0] ; counter
57: fiboCount = Fibonacci(counter);
00000012 4800 LDR R0,=counter ; counter
00000014 6800 LDR R0,[R0,#0x0] ; counter
00000016 F7FF BL Fibonacci?T ; T=0x0001 (1)
00000018 FFF3 BL Fibonacci?T ; T=0x0001 (2)
0000001C 4800 LDR R1,=fiboCount ; fiboCount
0000001E 6008 STR R0,[R1,#0x0] ; fiboCount
58: }
00000020 3401 ADD R4,#0x1
00000022 2C14 CMP R4,#0x14 ; i
00000024 DDF1 BLE L_14 ; T=0x0000000A
59: }
00000026 E7EC B L_9 ; T=0x00000002
00000028 ; SCOPE-END
00000028 BC08 POP {R3}
0000002A 4718 BX R3
0000002C ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = 8
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -