⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lpc2000_dbg_printf.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 3 页
字号:
  127:     case 'C':
 0000010A          L_19:
  129:       format_flag = va_arg(ap,int);
 0000010A  3604      ADD         R6,#0x4
 0000010C  1C30      MOV         R0,R6 ; ap
 0000010E  3804      SUB         R0,#0x4
 00000110  6805      LDR         R5,[R0,#0x0]
 00000112  062D      LSL         R5,R5,#0x18
 00000114  0E2D      LSR         R5,R5,#0x18
  133:     default:
 00000116          L_20:
  134:       myputchar(format_flag);
 00000116  1C28      MOV         R0,R5 ; format_flag
 00000118  0600      LSL         R0,R0,#0x18 ; format_flag
 0000011A  0E00      LSR         R0,R0,#0x18
 0000011C  F7FF      BL          myputchar?T  ; T=0x0001  (1)
 0000011E  FF70      BL          myputchar?T  ; T=0x0001  (2)
  135:       continue;
 00000120  E77C      B           L_10  ; T=0x0000001C
  141:     case 's':
 00000122          L_29:
  142:       ptr = (unsigned char*)va_arg(ap,char *);
 00000122  3604      ADD         R6,#0x4
 00000124  1C30      MOV         R0,R6 ; ap
 00000126  3804      SUB         R0,#0x4
 00000128  6804      LDR         R4,[R0,#0x0]
  143:       while(*ptr) { myputchar(*ptr); ptr++; }
 0000012A  E000      B           L_32  ; T=0x0000012E
 0000012C          L_34:
 0000012C  1C20      MOV         R0,R4 ; ptr
 0000012E  7800      LDRB        R0,[R0,#0x0] ; ptr
 00000130  F7FF      BL          myputchar?T  ; T=0x0001  (1)
 00000132  FF66      BL          myputchar?T  ; T=0x0001  (2)
 00000134  3401      ADD         R4,#0x1
 00000136          L_32:
 00000136  1C20      MOV         R0,R4 ; ptr
ARM COMPILER V2.42,  lpc2000_dbg_printf                                                    27/03/06  10:45:50  PAGE 9   

 00000138  7800      LDRB        R0,[R0,#0x0] ; ptr
 0000013A  2800      CMP         R0,#0x0
 0000013C  D1F6      BNE         L_34  ; T=0x0000012C
  144:       continue;
 0000013E  E76D      B           L_10  ; T=0x0000001C
  165:     case 'D':
 00000140          L_21:
  167:       issigned=1;
 00000140  2101      MOV         R1,#0x1
 00000142  A804      ADD         R0,R13,#0x10
 00000144  7001      STRB        R1,[R0,#0x0] ; issigned
  177:       goto CONVERSION_LOOP;
 00000146  E75A      B           CONVERSION_LOOP  ; T=0xFFFFFFFE
  180:     case 'X':
 00000148          L_25:
  182:       base = 16;
 00000148  2110      MOV         R1,#0x10
 0000014A  A803      ADD         R0,R13,#0xC
 0000014C  8001      STRH        R1,[R0,#0x0] ; base
  185:     CONVERSION_LOOP:
 0000014E          CONVERSION_LOOP:
  187:       if(issigned) //Signed types
 0000014E  A804      ADD         R0,R13,#0x10
 00000150  7800      LDRB        R0,[R0,#0x0] ; issigned
 00000152  2800      CMP         R0,#0x0
 00000154  D015      BEQ         L_37  ; T=0x00000182
  190:         if(islong) { s_val = va_arg(ap,long); }
 00000156  A805      ADD         R0,R13,#0x14
 00000158  7800      LDRB        R0,[R0,#0x0] ; islong
 0000015A  2800      CMP         R0,#0x0
 0000015C  D001      BEQ         L_38  ; T=0x00000162
 0000015E  3604      ADD         R6,#0x4
 00000160  1C30      MOV         R0,R6 ; ap
 00000162  3804      SUB         R0,#0x4
 00000164  6800      LDR         R0,[R0,#0x0]
 00000166  9007      STR         R0,[R13,#0x1C] ; s_val
 00000168  E000      B           L_39  ; T=0x0000016C
 0000016A          L_38:
  191:         else { s_val = va_arg(ap,int); }
 0000016A  3604      ADD         R6,#0x4
 0000016C  1C30      MOV         R0,R6 ; ap
 0000016E  3804      SUB         R0,#0x4
 00000170  6800      LDR         R0,[R0,#0x0]
 00000172  9007      STR         R0,[R13,#0x1C] ; s_val
 00000174          L_39:
  196:         if(s_val < 0) //Value negativ ?
 00000174  9807      LDR         R0,[R13,#0x1C] ; s_val
 00000176  2800      CMP         R0,#0x0
 00000178  DA00      BGE         L_40  ; T=0x0000017C
  198:           s_val = - s_val; //Make it positiv
 0000017A  4240      NEG         R0,R0
 0000017C  9007      STR         R0,[R13,#0x1C] ; s_val
  199:           myputchar('-');    //Output sign
 0000017E  202D      MOV         R0,#0x2D
 00000180  F7FF      BL          myputchar?T  ; T=0x0001  (1)
 00000182  FF3E      BL          myputchar?T  ; T=0x0001  (2)
  200:          }
 00000184          L_40:
  202:         u_val = (unsigned long)s_val;
 00000184  9807      LDR         R0,[R13,#0x1C] ; s_val
 00000186  9006      STR         R0,[R13,#0x18] ; u_val
  203:        }
 00000188  E00A      B           L_41  ; T=0x000001A0
 0000018A          L_37:
  207:         if(islong) { u_val = va_arg(ap,unsigned long); }
 0000018A  A805      ADD         R0,R13,#0x14
ARM COMPILER V2.42,  lpc2000_dbg_printf                                                    27/03/06  10:45:50  PAGE 10  

 0000018C  7800      LDRB        R0,[R0,#0x0] ; islong
 0000018E  2800      CMP         R0,#0x0
 00000190  D001      BEQ         L_42  ; T=0x00000196
 00000192  3604      ADD         R6,#0x4
 00000194  1C30      MOV         R0,R6 ; ap
 00000196  3804      SUB         R0,#0x4
 00000198  6800      LDR         R0,[R0,#0x0]
 0000019A  9006      STR         R0,[R13,#0x18] ; u_val
 0000019C  E000      B           L_41  ; T=0x000001A0
 0000019E          L_42:
  208:         else { u_val = va_arg(ap,unsigned int); }
 0000019E  3604      ADD         R6,#0x4
 000001A0  1C30      MOV         R0,R6 ; ap
 000001A2  3804      SUB         R0,#0x4
 000001A4  6800      LDR         R0,[R0,#0x0]
 000001A6  9006      STR         R0,[R13,#0x18] ; u_val
  212:        }
 000001A8          L_41:
  214:       ptr = scratch + SCRATCH;
 000001A8  AC03      ADD         R4,R13,#0xC
  215:       *--ptr = 0;
 000001AA  2100      MOV         R1,#0x0
 000001AC  1C20      MOV         R0,R4 ; ptr
 000001AE  3801      SUB         R0,#0x1
 000001B0  1C04      MOV         R4,R0 ; ptr
 000001B2  7001      STRB        R1,[R0,#0x0]
  216:       do
 000001B4          L_44:
  217:        {
 000001B4            ; SCOPE-START
  218:         char ch = u_val % base + '0';
 000001B4  A803      ADD         R0,R13,#0xC
 000001B6  8800      LDRH        R0,[R0,#0x0] ; base
 000001B8  1C01      MOV         R1,R0
 000001BA  9806      LDR         R0,[R13,#0x18] ; u_val
 000001BC  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 000001BE  FF20      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 000001C0  1C01      MOV         R1,R0
 000001C2  3130      ADD         R1,#0x30
 000001C4  0609      LSL         R1,R1,#0x18
 000001C6  0E09      LSR         R1,R1,#0x18
 000001C8  A80A      ADD         R0,R13,#0x28
 000001CA  7001      STRB        R1,[R0,#0x0] ; ch
  220:         if (ch > '9')
 000001CC  0609      LSL         R1,R1,#0x18
 000001CE  0E09      LSR         R1,R1,#0x18
 000001D0  2939      CMP         R1,#0x39
 000001D2  DD03      BLE         L_48  ; T=0x000001DC
  222:           ch += 'a' - '9' - 1;
 000001D4  7801      LDRB        R1,[R0,#0x0] ; ch
 000001D6  3127      ADD         R1,#0x27
 000001D8  7001      STRB        R1,[R0,#0x0] ; ch
  224:           ch-=0x20;
 000001DA  A80A      ADD         R0,R13,#0x28
 000001DC  7801      LDRB        R1,[R0,#0x0] ; ch
 000001DE  3920      SUB         R1,#0x20
 000001E0  A80A      ADD         R0,R13,#0x28
 000001E2  7001      STRB        R1,[R0,#0x0] ; ch
  226:          }
 000001E4          L_48:
  228:         *--ptr = ch;
 000001E4  A80A      ADD         R0,R13,#0x28
 000001E6  7801      LDRB        R1,[R0,#0x0] ; ch
 000001E8  1C20      MOV         R0,R4 ; ptr
 000001EA  3801      SUB         R0,#0x1
 000001EC  1C04      MOV         R4,R0 ; ptr
ARM COMPILER V2.42,  lpc2000_dbg_printf                                                    27/03/06  10:45:50  PAGE 11  

 000001EE  7001      STRB        R1,[R0,#0x0]
  229:         u_val /= base;
 000001F0  A803      ADD         R0,R13,#0xC
 000001F2  8800      LDRH        R0,[R0,#0x0] ; base
 000001F4  1C01      MOV         R1,R0
 000001F6  9806      LDR         R0,[R13,#0x18] ; u_val
 000001F8  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 000001FA  FF02      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 000001FC  1C08      MOV         R0,R1
 000001FE  9006      STR         R0,[R13,#0x18] ; u_val
  232:         if(width) width--; //calculate number of padding chars
 00000200  A809      ADD         R0,R13,#0x24
 00000202  7801      LDRB        R1,[R0,#0x0] ; width
 00000204  2900      CMP         R1,#0x0
 00000206  D0FD      BEQ         L_46  ; T=0x00000204
 00000208  3901      SUB         R1,#0x1
 0000020A  7001      STRB        R1,[R0,#0x0] ; width
 0000020C            ; SCOPE-END
  234:       } while (u_val);
 0000020C          L_46:
 0000020C  9806      LDR         R0,[R13,#0x18] ; u_val
 0000020E  2800      CMP         R0,#0x0
 00000210  D1D0      BNE         L_44  ; T=0x000001B4
  237:      while(width--) *--ptr = fill; //insert padding chars             
 00000212  E001      B           L_50  ; T=0x00000218
 00000214          L_52:
 00000214  A808      ADD         R0,R13,#0x20
 00000216  7801      LDRB        R1,[R0,#0x0] ; fill
 00000218  1C20      MOV         R0,R4 ; ptr
 0000021A  3801      SUB         R0,#0x1
 0000021C  1C04      MOV         R4,R0 ; ptr
 0000021E  7001      STRB        R1,[R0,#0x0]
 00000220          L_50:
 00000220  A909      ADD         R1,R13,#0x24
 00000222  7808      LDRB        R0,[R1,#0x0] ; width
 00000224  1C02      MOV         R2,R0
 00000226  3A01      SUB         R2,#0x1
 00000228  700A      STRB        R2,[R1,#0x0] ; width
 0000022A  2800      CMP         R0,#0x0
 0000022C  D1F2      BNE         L_52  ; T=0x00000214
  240:       while(*ptr) { myputchar(*ptr); ptr++; }
 0000022E  E000      B           L_54  ; T=0x00000232
 00000230          L_56:
 00000230  1C20      MOV         R0,R4 ; ptr
 00000232  7800      LDRB        R0,[R0,#0x0] ; ptr
 00000234  F7FF      BL          myputchar?T  ; T=0x0001  (1)
 00000236  FEE4      BL          myputchar?T  ; T=0x0001  (2)
 00000238  3401      ADD         R4,#0x1
 0000023A          L_54:
 0000023A  1C20      MOV         R0,R4 ; ptr
 0000023C  7800      LDRB        R0,[R0,#0x0] ; ptr
 0000023E  2800      CMP         R0,#0x0
 00000240  D1F6      BNE         L_56  ; T=0x00000230
  242:   }
 00000242  E6EB      B           L_10  ; T=0x0000001C
 00000244            ; SCOPE-END
  243: }
 00000244          L_12:
 00000244  B00B      ADD         R13,#0x2C
 00000246  BCF0      POP         {R4-R7}
 00000248  BC08      POP         {R3}
 0000024A  B003      ADD         R13,#0xC
 0000024C  4718      BX          R3
 0000024E          ENDP ; 'lpc2000_debug_printf?T'



ARM COMPILER V2.42,  lpc2000_dbg_printf                                                    27/03/06  10:45:50  PAGE 12  

Module Information          Static
----------------------------------
  code size            =    ------
  data size            =         4
  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 + -