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

📄 vprintf.asm

📁 很少见的源码公开的msc51和z80的c编译器。
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;--------------------------------------------------------; 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 + -