📄 vprintf.asm
字号:
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:19 2001;-------------------------------------------------------- .module vprintf ;--------------------------------------------------------; Public variables in this module;-------------------------------------------------------- .globl _vprintf_PARM_2 .globl _vsprintf_PARM_3 .globl _vsprintf_PARM_2 .globl _vsprintf .globl _vprintf;--------------------------------------------------------; special function registers;--------------------------------------------------------;--------------------------------------------------------; special function bits ;--------------------------------------------------------;--------------------------------------------------------; internal ram data;-------------------------------------------------------- .area DSEG (DATA)_output_ptr: .ds 3_value: .ds 5_radix: .ds 1_charsOutputted: .ds 2_vsprintf_PARM_2:: .ds 3_vsprintf_PARM_3:: .ds 1_vsprintf_decimals_1_1:: .ds 1_vsprintf_length_1_1:: .ds 1_vsprintf_sloc0_1_0:: .ds 1_vsprintf_sloc1_1_0:: .ds 2_vprintf_PARM_2:: .ds 1;--------------------------------------------------------; overlayable items in internal ram ;-------------------------------------------------------- .area _DUMMY .area OSEG (OVR,DATA);--------------------------------------------------------; indirectly addressable internal ram data;-------------------------------------------------------- .area ISEG (DATA);--------------------------------------------------------; bit data;-------------------------------------------------------- .area BSEG (BIT)_output_to_string: .ds 1_lower_case: .ds 1_lsd: .ds 1_vsprintf_left_justify_1_1: .ds 1_vsprintf_zero_padding_1_1: .ds 1_vsprintf_prefix_sign_1_1: .ds 1_vsprintf_prefix_space_1_1: .ds 1_vsprintf_signed_argument_1_1: .ds 1_vsprintf_char_argument_1_1: .ds 1_vsprintf_long_argument_1_1: .ds 1_vsprintf_float_argument_1_1: .ds 1;--------------------------------------------------------; external ram data;-------------------------------------------------------- .area XSEG (XDATA);--------------------------------------------------------; global & static initialisations;-------------------------------------------------------- .area GSINIT (CODE) .area GSFINAL (CODE) .area GSINIT (CODE);--------------------------------------------------------; Home;-------------------------------------------------------- .area HOME (CODE) .area CSEG (CODE);--------------------------------------------------------; code;-------------------------------------------------------- .area CSEG (CODE);------------------------------------------------------------;Allocation info for local variables in function 'output_char';------------------------------------------------------------;c Allocated to registers r2 ; vprintf.c 88; -----------------------------------------; function output_char; -----------------------------------------_output_char: ar2 = 0x02 ar3 = 0x03 ar4 = 0x04 ar5 = 0x05 ar6 = 0x06 ar7 = 0x07 ar0 = 0x00 ar1 = 0x01 push _bp mov _bp,sp; vprintf.c 98 mov r2,dpl; vprintf.c 90; Peephole 111 removed ljmp by inverse jump logic jnb _output_to_string,00102$00107$:; vprintf.c 92 mov dpl,_output_ptr mov dph,(_output_ptr + 1) mov b,(_output_ptr + 2) inc _output_ptr clr a cjne a,_output_ptr,00108$ inc (_output_ptr + 1)00108$: mov a,r2 lcall __gptrput; Peephole 132 changed ljmp to sjmp sjmp 00103$00102$:; vprintf.c 96 mov dpl,r2 lcall _putchar00103$:; vprintf.c 98 inc _charsOutputted clr a cjne a,_charsOutputted,00109$ inc (_charsOutputted + 1)00109$:00104$: mov sp,_bp pop _bp ret;------------------------------------------------------------;Allocation info for local variables in function 'output_digit';------------------------------------------------------------;n Allocated to registers r2 ; vprintf.c 103; -----------------------------------------; function output_digit; -----------------------------------------_output_digit: push _bp mov _bp,sp; vprintf.c 106 mov r2,dpl; vprintf.c 105 clr c mov a,#0x09 subb a,r2 clr a rlc a; Peephole 105 removed redundant mov mov r3,a cjne a,#0x01,00109$00109$: clr a rlc a; Peephole 105 removed redundant mov mov r3,a; Peephole 110 removed ljmp by inverse jump logic jz 00103$00110$: mov a,#0x30 add a,r2 mov r3,a; Peephole 132 changed ljmp to sjmp sjmp 00104$00103$:; vprintf.c 106; Peephole 111 removed ljmp by inverse jump logic jnb _lower_case,00105$00111$: mov a,#0x57 add a,r2 mov r4,a; Peephole 132 changed ljmp to sjmp sjmp 00106$00105$: mov a,#0x37 add a,r2 mov r4,a00106$: mov ar3,r400104$: mov dpl,r3 lcall _output_char00101$: mov sp,_bp pop _bp ret;------------------------------------------------------------;Allocation info for local variables in function 'output_2digits';------------------------------------------------------------;b Allocated to registers r2 ; vprintf.c 111; -----------------------------------------; function output_2digits; -----------------------------------------_output_2digits: push _bp mov _bp,sp; vprintf.c 114 mov r2,dpl; vprintf.c 113 mov a,r2 swap a anl a,#0x0f mov dpl,a push ar2 lcall _output_digit pop ar2; vprintf.c 114 mov a,#0x0F anl a,r2 mov dpl,a lcall _output_digit00101$: mov sp,_bp pop _bp ret;------------------------------------------------------------;Allocation info for local variables in function 'calculate_digit';------------------------------------------------------------; vprintf.c 119; -----------------------------------------; function calculate_digit; -----------------------------------------_calculate_digit:; vprintf.c 123 mov r2,#0x2000103$: cjne r2,#0x00,00112$; Peephole 132 changed ljmp to sjmp sjmp 00107$00112$:; vprintf.c 142 clr c mov a,_value+0 rlc a mov _value+0,a mov a,_value+1 rlc a mov _value+1,a mov a,_value+2 rlc a mov _value+2,a mov a,_value+3 rlc a mov _value+3,a mov a,_value+4 rlc a mov _value+4,a; vprintf.c 144; Peephole 221a remove redundant move clr c mov a,0x0004 + _value subb a,_radix; Peephole 132 changed ljmp to sjmp; Peephole 160 removed sjmp by inverse jump logic jc 00105$00113$:; vprintf.c 146; Peephole 221a remove redundant move clr c mov a,0x0004 + _value subb a,_radix mov (_value + 0x0004),a; vprintf.c 147 mov r3,_value mov a,#0x01 add a,r3 mov _value,a00105$:; vprintf.c 123 dec r2; Peephole 132 changed ljmp to sjmp sjmp 00103$00107$: ret;------------------------------------------------------------;Allocation info for local variables in function 'vsprintf';------------------------------------------------------------;format Allocated to in memory with name '_vsprintf_PARM_2';ap Allocated to in memory with name '_vsprintf_PARM_3';buf Allocated to registers r2 r3 r4 ;width Allocated to registers r5 ;decimals Allocated to in memory with name '_vsprintf_decimals_1_1';length Allocated to in memory with name '_vsprintf_length_1_1';c Allocated to registers r6 ;sloc0 Allocated to in memory with name '_vsprintf_sloc0_1_0';sloc1 Allocated to in memory with name '_vsprintf_sloc1_1_0'; vprintf.c 259; -----------------------------------------; function vsprintf; -----------------------------------------_vsprintf:; vprintf.c 0 mov r2,dpl mov r3,dph mov r4,b; vprintf.c 276 clr a mov (_charsOutputted + 1),a mov _charsOutputted,a; vprintf.c 278 mov _output_ptr,r2 mov (_output_ptr + 1),r3 mov (_output_ptr + 2),r4; vprintf.c 279 mov a,r2 orl a,r3 orl a,r4; Peephole 109 removed ljmp by inverse jump logic jnz 00102$00287$:; vprintf.c 281 clr _output_to_string; Peephole 132 changed ljmp to sjmp sjmp 00225$00102$:; vprintf.c 285 setb _output_to_string; vprintf.c 29400225$:00209$: mov r2,_vsprintf_PARM_2 mov r3,(_vsprintf_PARM_2 + 1) mov r4,(_vsprintf_PARM_2 + 2) mov dpl,r2 mov dph,r3 mov b,r4 lcall __gptrget mov r5,a inc r2 cjne r2,#0x00,00288$ inc r300288$: mov _vsprintf_PARM_2,r2 mov (_vsprintf_PARM_2 + 1),r3 mov (_vsprintf_PARM_2 + 2),r4 mov ar6,r5 mov a,r5 jnz 00289$ ljmp 00211$00289$:; vprintf.c 296 cjne r6,#0x25,00290$ sjmp 00291$00290$: ljmp 00207$00291$:; vprintf.c 298 clr _vsprintf_left_justify_1_1; vprintf.c 299 clr _vsprintf_zero_padding_1_1; vprintf.c 300 clr _vsprintf_prefix_sign_1_1; vprintf.c 301 clr _vsprintf_prefix_space_1_1; vprintf.c 302 clr _vsprintf_signed_argument_1_1; vprintf.c 303 mov _radix,#0x00; vprintf.c 304 clr _vsprintf_char_argument_1_1; vprintf.c 305 clr _vsprintf_long_argument_1_1; vprintf.c 306 clr _vsprintf_float_argument_1_1; vprintf.c 307 mov r5,#0x00; vprintf.c 308 mov _vsprintf_decimals_1_1,#0xFF; vprintf.c 31200104$: mov dpl,r2 mov dph,r3 mov b,r4 lcall __gptrget mov r6,a inc dptr mov r2,dpl mov r3,dph mov _vsprintf_PARM_2,r2 mov (_vsprintf_PARM_2 + 1),r3 mov (_vsprintf_PARM_2 + 2),r4; vprintf.c 314; Peephole 132 changed ljmp to sjmp; Peephole 199 optimized misc jump sequence cjne r6,#0x25,00106$;00292$:; Peephole 200 removed redundant sjmp00293$:; vprintf.c 315 mov dpl,r6 push ar2 push ar3 push ar4 push ar5 push ar6 lcall _output_char pop ar6 pop ar5 pop ar4 pop ar3 pop ar2; vprintf.c 316 ljmp 00209$00106$:; vprintf.c 319 mov dpl,r6 push ar2 push ar3 push ar4 push ar5 push ar6 lcall _isdigit mov r0,dpl pop ar6 pop ar5 pop ar4 pop ar3 pop ar2 mov a,r0 jnz 00294$ ljmp 00113$00294$:; vprintf.c 320 mov a,_vsprintf_decimals_1_1; Peephole 132 changed ljmp to sjmp; Peephole 199 optimized misc jump sequence cjne a,#0xFF,00110$;00295$:; Peephole 200 removed redundant sjmp00296$:; vprintf.c 321 mov b,#0x0A mov a,r5 mul ab mov r0,a mov r1,b mov a,r6 add a,#0xd0; Peephole 166 removed redundant mov mov _vsprintf_sloc0_1_0,a mov _vsprintf_sloc1_1_0,_vsprintf_sloc0_1_0 rlc a subb a,acc mov (_vsprintf_sloc1_1_0 + 1),a mov a,_vsprintf_sloc1_1_0 add a,r0 mov r5,a; vprintf.c 322 cjne r5,#0x00,00297$ sjmp 00298$00297$: ljmp 00104$00298$:; vprintf.c 324 setb _vsprintf_zero_padding_1_1 ljmp 00104$00110$:; vprintf.c 327 clr F0 mov a,_vsprintf_decimals_1_1 jnb acc.7,00299$ setb F0 cpl a inc a00299$: mov b,#0x0a mul ab jnb F0,00300$ cpl a add a,#1 xch a,b cpl a addc a,#0 xch a,b00300$: mov r0,a mov r1,b mov a,r6 add a,#0xd0 mov _vsprintf_sloc1_1_0,a; Peephole 180 changed mov to clr clr a addc a,#0xff mov (_vsprintf_sloc1_1_0 + 1),a mov a,_vsprintf_sloc1_1_0 add a,r0 mov _vsprintf_decimals_1_1,a; vprintf.c 329 ljmp 00104$00113$:; vprintf.c 332; Peephole 132 changed ljmp to sjmp; Peephole 199 optimized misc jump sequence cjne r6,#0x2E,00117$;00301$:; Peephole 200 removed redundant sjmp00302$:; vprintf.c 333 mov _vsprintf_decimals_1_1,#0x00; vprintf.c 336 ljmp 00104$00117$:; vprintf.c 339 mov dpl,r6 push ar2 push ar3 push ar4 push ar5 push ar6 lcall _islower mov r0,dpl pop ar6 pop ar5 pop ar4 pop ar3 pop ar2 mov a,r0 clr c; oops jz 00303$ cpl c00303$: mov _lower_case,c; vprintf.c 340; Peephole 111 removed ljmp by inverse jump logic jnb _lower_case,00119$00304$:; vprintf.c 342 mov ar0,r6 mov a,#0xDF anl a,r0 mov r6,a00119$:; vprintf.c 345 cjne r6,#0x20,00305$; Peephole 132 changed ljmp to sjmp sjmp 00122$00305$: cjne r6,#0x2B,00306$; Peephole 132 changed ljmp to sjmp sjmp 00121$00306$: cjne r6,#0x2D,00307$; Peephole 132 changed ljmp to sjmp sjmp 00120$00307$: cjne r6,#0x42,00308$; Peephole 132 changed ljmp to sjmp sjmp 00123$00308$: cjne r6,#0x43,00309$; Peephole 132 changed ljmp to sjmp sjmp 00125$00309$: cjne r6,#0x44,00310$ ljmp 00146$00310$: cjne r6,#0x46,00311$ ljmp 00151$00311$: cjne r6,#0x49,00312$ ljmp 00146$00312$: cjne r6,#0x4C,00313$; Peephole 132 changed ljmp to sjmp sjmp 00124$00313$: cjne r6,#0x4F,00314$ ljmp 00148$00314$: cjne r6,#0x50,00315$ ljmp 00142$00315$: cjne r6,#0x53,00316$; Peephole 132 changed ljmp to sjmp sjmp 00126$00316$: cjne r6,#0x55,00317$ ljmp 00149$00317$: cjne r6,#0x58,00318$ ljmp 00150$00318$: ljmp 00152$; vprintf.c 34800120$: setb _vsprintf_left_justify_1_1; vprintf.c 349 ljmp 00104$; vprintf.c 35100121$: setb _vsprintf_prefix_sign_1_1; vprintf.c 352 ljmp 00104$; vprintf.c 35400122$: setb _vsprintf_prefix_space_1_1; vprintf.c 355 ljmp 00104$; vprintf.c 35700123$: setb _vsprintf_char_argument_1_1; vprintf.c 358 ljmp 00104$; vprintf.c 36000124$: setb _vsprintf_long_argument_1_1; vprintf.c 361 ljmp 00104$; vprintf.c 36400125$: mov a,_vsprintf_PARM_3 add a,#0xfe mov r0,a mov _vsprintf_PARM_3,r0 mov ar2,@r0 inc r0 mov ar3,@r0 dec r0 mov dpl,r2 push ar5 push ar6 lcall _output_char pop ar6 pop ar5; vprintf.c 365 ljmp 00153$; vprintf.c 36800126$: mov a,_vsprintf_PARM_3 add a,#0xfd mov r0,a mov _vsprintf_PARM_3,r0 mov ar2,@r0 mov r3,#0x00 mov r4,#0x00 mov _value,r2 mov (_value + 1),r3 mov (_value + 2),r4; vprintf.c 378 mov dpl,_value mov dph,(_value + 1) mov b,(_value + 2) push ar5 push ar6 lcall _strlen mov r2,dpl mov r3,dph pop ar6 pop ar5 mov _vsprintf_length_1_1,r2; vprintf.c 380; Peephole 112 removed ljmp by inverse jump logic jb _vsprintf_left_justify_1_1,00133$00319$: clr c mov a,_vsprintf_length_1_1 subb a,r5; Peephole 108 removed ljmp by inverse jump logic jnc 00133$00320$:; vprintf.c 382 clr c mov a,r5 subb a,_vsprintf_length_1_1 mov r5,a; vprintf.c 383 mov ar3,r500127$: mov ar4,r3 dec r3 mov ar5,r3 cjne r4,#0x00,00321$
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -