vprintf.asm
来自「sdcc的win版本.是small device c compiler的意思.支」· 汇编 代码 · 共 1,800 行 · 第 1/3 页
ASM
1,800 行
mov r4,(_value + 1)
mov r6,(_value + 2)
; genPlus
; genPlusIncr
mov a,#0x01
add a,r3
mov r7,a
; Peephole 180 changed mov to clr
clr a
addc a,r4
mov r0,a
mov ar1,r6
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov _value,r7
mov (_value + 1),r0
mov (_value + 2),r1
; genPointerGet
; genGenPointerGet
mov dpl,r3
mov dph,r4
mov b,r6
lcall __gptrget
; genAssign
; genIfx
; Peephole 166 removed redundant mov
mov r3,a
mov _vsprintf_c_1_1,r3
; genIfxJump
jnz 00331$
ljmp 00209$
00331$:
; vprintf.c 481
; genCall
mov dpl,_vsprintf_c_1_1
push ar2
push ar5
lcall _output_char
pop ar5
pop ar2
; Peephole 132 changed ljmp to sjmp
sjmp 00154$
00204$:
; vprintf.c 492
; genCmpEq
mov a,_radix
jnz 00332$
ljmp 00209$
00332$:
; vprintf.c 498
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb _vsprintf_char_argument_1_1,00165$
00333$:
; vprintf.c 500
; genMinus
; genMinusDec
mov a,_vsprintf_PARM_3
dec a
mov r0,a
; genAssign
mov _vsprintf_PARM_3,r0
; genPointerGet
; genNearPointerGet
mov ar3,@r0
; genCast
mov a,r3
rlc a
subb a,acc
mov r4,a
mov r6,a
mov r7,a
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov _value,r3
mov (_value + 1),r4
mov (_value + 2),r6
mov (_value + 3),r7
; vprintf.c 501
; genIfx
; genIfxJump
jnb _vsprintf_signed_argument_1_1,00334$
ljmp 00166$
00334$:
; vprintf.c 503
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_value + 0x0001),#0x00
; vprintf.c 504
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_value + 0x0002),#0x00
; vprintf.c 505
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_value + 0x0003),#0x00
; Peephole 132 changed ljmp to sjmp
sjmp 00166$
00165$:
; vprintf.c 508
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb _vsprintf_long_argument_1_1,00162$
00335$:
; vprintf.c 510
; genMinus
; genMinusDec
mov a,_vsprintf_PARM_3
add a,#0xfc
mov r0,a
; genAssign
mov _vsprintf_PARM_3,r0
; genPointerGet
; genNearPointerGet
mov ar3,@r0
inc r0
mov ar4,@r0
inc r0
mov ar6,@r0
inc r0
mov ar7,@r0
dec r0
dec r0
dec r0
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov _value,r3
mov (_value + 1),r4
mov (_value + 2),r6
mov (_value + 3),r7
; Peephole 132 changed ljmp to sjmp
sjmp 00166$
00162$:
; vprintf.c 514
; genMinus
; genMinusDec
mov a,_vsprintf_PARM_3
add a,#0xfe
mov r0,a
; genAssign
mov _vsprintf_PARM_3,r0
; genPointerGet
; genNearPointerGet
mov ar3,@r0
inc r0
mov ar4,@r0
dec r0
; genCast
mov a,r4
rlc a
subb a,acc
mov r6,a
mov r7,a
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov _value,r3
mov (_value + 1),r4
mov (_value + 2),r6
mov (_value + 3),r7
; vprintf.c 515
; genIfx
; genIfxJump
; Peephole 112 removed ljmp by inverse jump logic
jb _vsprintf_signed_argument_1_1,00166$
00336$:
; vprintf.c 517
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_value + 0x0002),#0x00
; vprintf.c 518
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_value + 0x0003),#0x00
00166$:
; vprintf.c 522
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb _vsprintf_signed_argument_1_1,00171$
00337$:
; vprintf.c 524
; genAssign
; genCmpLt
; genCmp
mov a,(_value + 3)
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb acc.7,00168$
00338$:
; vprintf.c 525
; genUminus
clr c
clr a
subb a,_value
mov r3,a
clr a
subb a,(_value + 1)
mov r4,a
clr a
subb a,(_value + 2)
mov r6,a
clr a
subb a,(_value + 3)
mov r7,a
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov _value,r3
mov (_value + 1),r4
mov (_value + 2),r6
mov (_value + 3),r7
; Peephole 132 changed ljmp to sjmp
sjmp 00171$
00168$:
; vprintf.c 527
; genAssign
clr _vsprintf_signed_argument_1_1
00171$:
; vprintf.c 531
; genAssign
setb _lsd
; vprintf.c 534
; genAssign
mov r3,#0x00
00175$:
; vprintf.c 535
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_value + 0x0004),#0x00
; vprintf.c 536
; genCall
push ar2
push ar3
push ar5
lcall _calculate_digit
pop ar5
pop ar3
pop ar2
; vprintf.c 550
; genInline
jb _lsd,1$
pop b ; b = <lsd>
mov a,_value+4 ; a = <msd>
swap a
orl b,a ; b = <msd><lsd>
push b
sjmp 2$
1$:
mov a,_value+4 ; a = <lsd>
push acc
2$:
; vprintf.c 552
; genPlus
; genPlusIncr
inc r3
; vprintf.c 553
; genCpl
; Peephole 167 removed redundant bit moves (c not set to _lsd)
cpl _lsd
; vprintf.c 554
; genAssign
; genCmpEq
mov a,_value
; Peephole 162 removed sjmp by inverse jump logic
jz 00340$
00339$:
; Peephole 132 changed ljmp to sjmp
sjmp 00175$
00340$:
; genAssign
; genCmpEq
mov a,0x0001 + _value
; Peephole 162 removed sjmp by inverse jump logic
jz 00342$
00341$:
; Peephole 132 changed ljmp to sjmp
sjmp 00175$
00342$:
; vprintf.c 555
; genAssign
; genCmpEq
mov a,0x0002 + _value
; Peephole 162 removed sjmp by inverse jump logic
jz 00344$
00343$:
; Peephole 132 changed ljmp to sjmp
sjmp 00175$
00344$:
; genAssign
; genCmpEq
mov a,0x0003 + _value
jnz 00345$
mov a,#0x01
sjmp 00346$
00345$:
clr a
00346$:
mov r4,a
; genAssign
mov ar2,r3
; genIfx
mov a,r4
; genIfxJump
; Peephole 110 removed ljmp by inverse jump logic
jz 00175$
00347$:
; vprintf.c 557
; genCmpEq
; Peephole 132 changed ljmp to sjmp
; Peephole 199 optimized misc jump sequence
cjne r5,#0x00,00179$
;00348$:
; Peephole 200 removed redundant sjmp
00349$:
; vprintf.c 562
; genAssign
mov r5,#0x01
00179$:
; vprintf.c 566
; genIfx
; genIfxJump
; Peephole 112 removed ljmp by inverse jump logic
jb _vsprintf_zero_padding_1_1,00184$
00350$:
; vprintf.c 568
; genPlus
; genPlusIncr
mov a,#0x01
add a,r2
mov r3,a
; genAssign
mov ar4,r5
00180$:
; genCmpGt
; genCmp
clr c
mov a,r3
subb a,r4
clr a
rlc a
mov r3,a
; genAssign
mov ar5,r4
; genIfx
mov a,r3
; genIfxJump
; Peephole 110 removed ljmp by inverse jump logic
jz 00184$
00351$:
; vprintf.c 570
; genCall
mov dpl,#0x20
push ar2
push ar4
push ar5
lcall _output_char
pop ar5
pop ar4
pop ar2
; vprintf.c 571
; genMinus
; genMinusDec
dec r4
; Peephole 132 changed ljmp to sjmp
sjmp 00180$
00184$:
; vprintf.c 575
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb _vsprintf_signed_argument_1_1,00193$
00352$:
; vprintf.c 577
; genCall
mov dpl,#0x2D
push ar2
push ar5
lcall _output_char
pop ar5
pop ar2
; vprintf.c 579
; genMinus
; genMinusDec
dec r5
; Peephole 132 changed ljmp to sjmp
sjmp 00283$
00193$:
; vprintf.c 581
; genCmpEq
cjne r2,#0x00,00353$
; Peephole 132 changed ljmp to sjmp
sjmp 00283$
00353$:
; vprintf.c 584
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb _vsprintf_prefix_sign_1_1,00188$
00354$:
; vprintf.c 586
; genCall
mov dpl,#0x2B
push ar2
push ar5
lcall _output_char
pop ar5
pop ar2
; vprintf.c 588
; genMinus
; genMinusDec
dec r5
; Peephole 132 changed ljmp to sjmp
sjmp 00283$
00188$:
; vprintf.c 590
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb _vsprintf_prefix_space_1_1,00283$
00355$:
; vprintf.c 592
; genCall
mov dpl,#0x20
push ar2
push ar5
lcall _output_char
pop ar5
pop ar2
; vprintf.c 594
; genMinus
; genMinusDec
dec r5
; vprintf.c 599
00283$:
; genAssign
mov ar3,r5
00195$:
; genAssign
mov ar4,r3
; genMinus
; genMinusDec
dec r3
; genCmpGt
; genCmp
clr c
mov a,r2
subb a,r4
; genIfxJump
; Peephole 108 removed ljmp by inverse jump logic
jnc 00285$
00356$:
; vprintf.c 601
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb _vsprintf_zero_padding_1_1,00219$
00357$:
; genAssign
mov r4,#0x30
; Peephole 132 changed ljmp to sjmp
sjmp 00220$
00219$:
; genAssign
mov r4,#0x20
00220$:
; genCall
mov dpl,r4
push ar2
push ar3
lcall _output_char
pop ar3
pop ar2
; vprintf.c 605
; Peephole 132 changed ljmp to sjmp
sjmp 00195$
00285$:
; genAssign
00198$:
; genAssign
mov ar3,r2
; genMinus
; genMinusDec
dec r2
; genIfx
mov a,r3
; genIfxJump
jnz 00358$
ljmp 00209$
00358$:
; vprintf.c 607
; genCpl
; Peephole 167 removed redundant bit moves (c not set to _lsd)
cpl _lsd
; vprintf.c 622
; genInline
jb _lsd,3$
pop acc ; a = <msd><lsd>
nop ; to disable the "optimizer"
push acc
swap a
anl a,#0x0F ; a = <msd>
sjmp 4$
3$:
pop acc
anl a,#0x0F ; a = <lsd>
4$:
mov _value+4,a
; vprintf.c 624
; genPointerGet
; genNearPointerGet
; genDataPointerGet
mov dpl,(_value + 0x0004)
; genCall
push ar2
lcall _output_digit
pop ar2
; Peephole 132 changed ljmp to sjmp
sjmp 00198$
00207$:
; vprintf.c 631
; genCall
mov dpl,_vsprintf_c_1_1
lcall _output_char
ljmp 00209$
00211$:
; vprintf.c 637
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb _output_to_string,00213$
00359$:
; vprintf.c 638
; genCall
mov dpl,#0x00
lcall _output_char
; vprintf.c 639
; genMinus
; genMinusDec
mov a,_charsOutputted
add a,#0xff
mov dpl,a
mov a,(_charsOutputted + 1)
addc a,#0xff
mov dph,a
; genRet
; Peephole 132 changed ljmp to sjmp
sjmp 00215$
00213$:
; vprintf.c 641
; genRet
mov dpl,_charsOutputted
mov dph,(_charsOutputted + 1)
00215$:
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'vprintf'
;------------------------------------------------------------
;ap Allocated to in memory with name '_vprintf_PARM_2'
;format Allocated to registers
; vprintf.c 647
; -----------------------------------------
; function vprintf
; -----------------------------------------
_vprintf:
; vprintf.c 649
; genReceive
mov _vsprintf_PARM_2,dpl
mov (_vsprintf_PARM_2 + 1),dph
mov (_vsprintf_PARM_2 + 2),b
; genAssign
mov _vsprintf_PARM_3,_vprintf_PARM_2
; genCall
; Peephole 181 used 16 bit load of dptr
mov dptr,#0x0000
mov b,#0x00
lcall _vsprintf
; genRet
00101$:
ret
.area CSEG (CODE)
_memory_id:
.ascii "IXCP-"
.db 0x00
__str_0:
.ascii "<NO FLOAT>"
.db 0x00
.area XINIT (CODE)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?