📄 vprintf.asm
字号:
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:31 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)_value: .ds 5_vsprintf_sloc0_1_0:: .ds 1_vsprintf_sloc1_1_0:: .ds 2_vsprintf_sloc2_1_0:: .ds 3;--------------------------------------------------------; overlayable items in internal ram ;-------------------------------------------------------- .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)_output_ptr: .ds 3_radix: .ds 1_charsOutputted: .ds 2_vsprintf_PARM_2:: .ds 3_vsprintf_PARM_3:: .ds 1_vsprintf_buf_1_1:: .ds 3_vsprintf_width_1_1:: .ds 1_vsprintf_decimals_1_1:: .ds 1_vsprintf_length_1_1:: .ds 1_vsprintf_c_1_1:: .ds 1_vprintf_PARM_2:: .ds 1_vprintf_format_1_1:: .ds 3;--------------------------------------------------------; 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 dptr,#_output_ptr movx a,@dptr mov r3,a inc dptr movx a,@dptr mov r4,a inc dptr movx a,@dptr mov r5,a mov dptr,#_output_ptr mov a,#0x01 add a,r3 movx @dptr,a; Peephole 180 changed mov to clr clr a addc a,r4 inc dptr movx @dptr,a inc dptr mov a,r5 movx @dptr,a mov dpl,r3 mov dph,r4 mov b,r5 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 mov dptr,#_charsOutputted movx a,@dptr mov r2,a inc dptr movx a,@dptr mov r3,a mov dptr,#_charsOutputted mov a,#0x01 add a,r2 movx @dptr,a; Peephole 180 changed mov to clr clr a addc a,r3 inc dptr movx @dptr,a00104$: 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 r3,a mov dpl,r3 push ar2 lcall _output_digit pop ar2; vprintf.c 114 anl ar2,#0x0F mov dpl,r2 lcall _output_digit00101$: mov sp,_bp pop _bp ret;------------------------------------------------------------;Allocation info for local variables in function 'calculate_digit';------------------------------------------------------------;i Allocated to in memory with name '_calculate_digit_i_1_1'; 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 mov dptr,#_radix movx a,@dptr mov r3,a clr c mov a,0x0004 + _value subb a,r3; 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,r3 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';------------------------------------------------------------;sloc0 Allocated to in memory with name '_vsprintf_sloc0_1_0';sloc1 Allocated to in memory with name '_vsprintf_sloc1_1_0';sloc2 Allocated to in memory with name '_vsprintf_sloc2_1_0';format Allocated to in memory with name '_vsprintf_PARM_2';ap Allocated to in memory with name '_vsprintf_PARM_3';buf Allocated to in memory with name '_vsprintf_buf_1_1';width Allocated to in memory with name '_vsprintf_width_1_1';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 in memory with name '_vsprintf_c_1_1'; vprintf.c 259; -----------------------------------------; function vsprintf; -----------------------------------------_vsprintf:; vprintf.c 0 push b push dph push dpl mov dptr,#_vsprintf_buf_1_1 pop acc movx @dptr,a pop acc inc dptr movx @dptr,a pop acc inc dptr movx @dptr,a; vprintf.c 276; Peephole 229 replaced inefficient 16 bit clear mov dptr,#_charsOutputted clr a movx @dptr,a inc dptr movx @dptr,a; vprintf.c 278; Peephole 231 removed redundant mov to dptr mov dptr,#_vsprintf_buf_1_1 movx a,@dptr mov r2,a inc dptr movx a,@dptr mov r3,a inc dptr movx a,@dptr mov r4,a mov dptr,#_output_ptr mov a,r2 movx @dptr,a inc dptr mov a,r3 movx @dptr,a inc dptr mov a,r4 movx @dptr,a; 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 dptr,#_vsprintf_PARM_2 movx a,@dptr mov r2,a inc dptr movx a,@dptr mov r3,a inc dptr movx a,@dptr mov r4,a mov dpl,r2 mov dph,r3 mov b,r4 lcall __gptrget mov r5,a inc r2 cjne r2,#0x00,00288$ inc r300288$: mov dptr,#_vsprintf_PARM_2 mov a,r2 movx @dptr,a inc dptr mov a,r3 movx @dptr,a inc dptr mov a,r4 movx @dptr,a mov a,r5 jnz 00289$ ljmp 00211$00289$:; vprintf.c 296 cjne r5,#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 dptr,#_radix; Peephole 180 changed mov to clr clr a movx @dptr,a; 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 dptr,#_vsprintf_width_1_1; Peephole 180 changed mov to clr clr a movx @dptr,a; vprintf.c 308 mov dptr,#_vsprintf_decimals_1_1 mov a,#0xFF movx @dptr,a; 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 dptr,#_vsprintf_PARM_2 mov a,r2 movx @dptr,a inc dptr mov a,r3 movx @dptr,a inc dptr mov a,r4 movx @dptr,a mov dptr,#_vsprintf_c_1_1 mov a,r6 movx @dptr,a; 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 ar7,r6 mov dpl,r7 push ar2 push ar3 push ar4 push ar5 push ar6 lcall _isdigit mov r7,dpl pop ar6 pop ar5 pop ar4 pop ar3 pop ar2 mov a,r7 jnz 00294$ ljmp 00113$00294$:; vprintf.c 320 mov dptr,#_vsprintf_decimals_1_1 movx a,@dptr mov r7,a; Peephole 132 changed ljmp to sjmp; Peephole 199 optimized misc jump sequence cjne r7,#0xFF,00110$;00295$:; Peephole 200 removed redundant sjmp00296$:; vprintf.c 321 mov dptr,#_vsprintf_width_1_1 movx a,@dptr mov r0,a mov b,#0x0A mov a,r0 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; Peephole 100 removed redundant mov mov r0,a mov dptr,#_vsprintf_width_1_1 movx @dptr,a; vprintf.c 322 cjne r0,#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,r7 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 r7,a mov r0,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 dptr,#_vsprintf_decimals_1_1 mov a,_vsprintf_sloc1_1_0 add a,r7 movx @dptr,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 dptr,#_vsprintf_decimals_1_1; Peephole 180 changed mov to clr clr a movx @dptr,a; vprintf.c 336 ljmp 00104$00117$:; vprintf.c 339 mov ar7,r6 mov dpl,r7 push ar2 push ar3 push ar4 push ar5 push ar6 lcall _islower mov r7,dpl pop ar6 pop ar5 pop ar4 pop ar3 pop ar2 mov a,r7 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 dptr,#_vsprintf_c_1_1 mov a,#0xDF anl a,r6 movx @dptr,a00119$:; vprintf.c 345 mov dptr,#_vsprintf_c_1_1 movx a,@dptr mov r6,a 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 dptr,#_vsprintf_PARM_3 movx a,@dptr; Peephole 105 removed redundant mov mov r2,a add a,#0xfe; Peephole 100 removed redundant mov mov r0,a mov dptr,#_vsprintf_PARM_3 movx @dptr,a 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 dptr,#_vsprintf_PARM_3 movx a,@dptr; Peephole 105 removed redundant mov mov r2,a add a,#0xfd; Peephole 100 removed redundant mov mov r0,a mov dptr,#_vsprintf_PARM_3 movx @dptr,a mov ar2,@r0 mov r3,#0x00 mov r4,#0x00 mov _value,r2 mov (_value + 1),r3 mov (_value + 2),r4; vprintf.c 378 mov r2,_value mov r3,(_value + 1) mov r4,(_value + 2) mov dpl,r2 mov dph,r3 mov b,r4 push ar5 push ar6 lcall _strlen mov r2,dpl mov r3,dph pop ar6 pop ar5; vprintf.c 380; Peephole 112 removed ljmp by inverse jump logic jb _vsprintf_left_justify_1_1,00133$00319$: mov dptr,#_vsprintf_width_1_1 movx a,@dptr mov r3,a clr c mov a,r2 subb a,r3; Peephole 108 removed ljmp by inverse jump logic jnc 00133$00320$:; vprintf.c 382 clr c mov a,r3 subb a,r2 mov r3,a; vprintf.c 383
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -