_setjmp.asm

来自「很少见的源码公开的msc51和z80的c编译器。」· 汇编 代码 · 共 330 行

ASM
330
字号
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:38 2001;--------------------------------------------------------	.module _setjmp	.flat24 on		; 24 bit flat addressingdpx = 0x93		; dpx register unknown to assemblerdps = 0x86		; dps register unknown to assemblerdpl1 = 0x84		; dpl1 register unknown to assemblerdph1 = 0x85		; dph1 register unknown to assemblerdpx1 = 0x95		; dpx1 register unknown to assemblerap = 0x9C		; ap register unknown to assembler;--------------------------------------------------------; Public variables in this module;--------------------------------------------------------	.globl _setjmp	.globl _longjmp	.globl _longjmp_PARM_2;--------------------------------------------------------; special function registers;--------------------------------------------------------_P0	=	0x0080_SP	=	0x0081_DPL	=	0x0082_DPH	=	0x0083_PCON	=	0x0087_TCON	=	0x0088_TMOD	=	0x0089_TL0	=	0x008a_TL1	=	0x008b_TH0	=	0x008c_TH1	=	0x008d_P1	=	0x0090_SCON	=	0x0098_SBUF	=	0x0099_P2	=	0x00a0_IE	=	0x00a8_P3	=	0x00b0_IP	=	0x00b8_PSW	=	0x00d0_ACC	=	0x00e0_B	=	0x00f0;--------------------------------------------------------; special function bits ;--------------------------------------------------------_P0_0	=	0x0080_P0_1	=	0x0081_P0_2	=	0x0082_P0_3	=	0x0083_P0_4	=	0x0084_P0_5	=	0x0085_P0_6	=	0x0086_P0_7	=	0x0087_IT0	=	0x0088_IE0	=	0x0089_IT1	=	0x008a_IE1	=	0x008b_TR0	=	0x008c_TF0	=	0x008d_TR1	=	0x008e_TF1	=	0x008f_P1_0	=	0x0090_P1_1	=	0x0091_P1_2	=	0x0092_P1_3	=	0x0093_P1_4	=	0x0094_P1_5	=	0x0095_P1_6	=	0x0096_P1_7	=	0x0097_RI	=	0x0098_TI	=	0x0099_RB8	=	0x009a_TB8	=	0x009b_REN	=	0x009c_SM2	=	0x009d_SM1	=	0x009e_SM0	=	0x009f_P2_0	=	0x00a0_P2_1	=	0x00a1_P2_2	=	0x00a2_P2_3	=	0x00a3_P2_4	=	0x00a4_P2_5	=	0x00a5_P2_6	=	0x00a6_P2_7	=	0x00a7_EX0	=	0x00a8_ET0	=	0x00a9_EX1	=	0x00aa_ET1	=	0x00ab_ES	=	0x00ac_EA	=	0x00af_P3_0	=	0x00b0_P3_1	=	0x00b1_P3_2	=	0x00b2_P3_3	=	0x00b3_P3_4	=	0x00b4_P3_5	=	0x00b5_P3_6	=	0x00b6_P3_7	=	0x00b7_RXD	=	0x00b0_TXD	=	0x00b1_INT0	=	0x00b2_INT1	=	0x00b3_T0	=	0x00b4_T1	=	0x00b5_WR	=	0x00b6_RD	=	0x00b7_PX0	=	0x00b8_PT0	=	0x00b9_PX1	=	0x00ba_PT1	=	0x00bb_PS	=	0x00bc_P	=	0x00d0_F1	=	0x00d1_OV	=	0x00d2_RS0	=	0x00d3_RS1	=	0x00d4_F0	=	0x00d5_AC	=	0x00d6_CY	=	0x00d7;--------------------------------------------------------; internal ram data;--------------------------------------------------------	.area DSEG    (DATA);--------------------------------------------------------; overlayable items in internal ram ;--------------------------------------------------------	.area OSEG    (OVR,DATA);--------------------------------------------------------; indirectly addressable internal ram data;--------------------------------------------------------	.area ISEG    (DATA);--------------------------------------------------------; bit data;--------------------------------------------------------	.area BSEG    (BIT);--------------------------------------------------------; external ram data;--------------------------------------------------------	.area XSEG    (XDATA)_longjmp_PARM_2::	.ds 2;--------------------------------------------------------; global & static initialisations;--------------------------------------------------------	.area GSINIT  (CODE)	.area GSFINAL (CODE)	.area GSINIT  (CODE);--------------------------------------------------------; Home;--------------------------------------------------------	.area HOME	 (CODE)	.area CSEG    (CODE);--------------------------------------------------------; code;--------------------------------------------------------	.area CSEG    (CODE);	_setjmp.c 28;	genFunction ;	-----------------------------------------;	 function longjmp;	-----------------------------------------_longjmp:	ar2 = 0x02	ar3 = 0x03	ar4 = 0x04	ar5 = 0x05	ar6 = 0x06	ar7 = 0x07	ar0 = 0x00	ar1 = 0x01;	_setjmp.c 35;	genReceive 	mov	r2,dpl	mov	r3,dph	mov	r4,dpx	mov	r5,b;	_setjmp.c 31;	genPlus 	mov	a,#0x02	add	a,r2	mov	r6,a; Peephole 180   changed mov to clr	clr  a	addc	a,r3	mov	r7,a; Peephole 180   changed mov to clr	clr  a	addc	a,r4	mov	r0,a	mov	ar1,r5;	genPointerGet ;	genGenPointerGet 	mov	dpl,r6	mov	dph,r7	mov	dpx,r0	mov	b,r1	lcall	__gptrget	mov	r6,a;	genAssign ;	genAssign: resultIsFar = TRUE;	_setjmp.c 32;	genCast 	mov	ar0,r6;	genPointerGet ;	genGenPointerGet 	mov	dpl,r2	mov	dph,r3	mov	dpx,r4	mov	b,r5	lcall	__gptrget	mov	r7,a;	genPlus 	inc	r2	cjne	r2,#0x00,00103$	inc	r3	cjne	r3,#0x00,00103$	inc	r400103$:;	did genPlusIncr;	genPointerSet 	mov	@r0,ar7;	_setjmp.c 33;	genMinus 	dec	r0;	genPointerGet ;	genGenPointerGet 	mov	dpl,r2	mov	dph,r3	mov	dpx,r4	mov	b,r5	lcall	__gptrget;	genPointerSet ; Peephole 192   used a instead of ar2 as source	mov  r2,a	mov  @r0,a;	_setjmp.c 34;	genAssign ;	genAssign: resultIsFar = FALSE	mov	_SP,r6;	_setjmp.c 35;	genRet 	mov     dps, #0x01	mov     dptr, #_longjmp_PARM_2	movx	a,@dptr	mov	dpl,a	inc	dptr	movx	a,@dptr	mov	dph,a	mov	dps, #0x00;	genLabel 00101$:;	genEndFunction 	ret;	_setjmp.c 38;	genFunction ;	-----------------------------------------;	 function setjmp;	-----------------------------------------_setjmp:;	_setjmp.c 0;	genReceive 	mov	r2,dpl	mov	r3,dph	mov	r4,dpx	mov	r5,b;	_setjmp.c 43;	genCast 	mov	r0,_SP;	genPointerGet 	mov	ar6,@r0;	genPointerSet 	mov	dpl,r2	mov	dph,r3	mov	dpx,r4	mov	b,r5	mov	a,r6	lcall	__gptrput;	genPlus 	inc	r2	cjne	r2,#0x00,00103$	inc	r3	cjne	r3,#0x00,00103$	inc	r400103$:;	did genPlusIncr;	_setjmp.c 44;	genCast 	mov	r6,_SP;	genMinus 	mov	a,r6	dec	a	mov	r0,a;	genPointerGet 	mov	ar6,@r0;	genPointerSet 	mov	dpl,r2	mov	dph,r3	mov	dpx,r4	mov	b,r5	mov	a,r6	lcall	__gptrput;	genPlus 	inc	r2	cjne	r2,#0x00,00104$	inc	r3	cjne	r3,#0x00,00104$	inc	r400104$:;	did genPlusIncr;	_setjmp.c 45;	genPointerSet 	mov	dpl,r2	mov	dph,r3	mov	dpx,r4	mov	b,r5	mov	a,_SP	lcall	__gptrput;	_setjmp.c 46;	genRet ; Peephole 181   used 16 bit load of dptr	mov  dptr,#0x0000;	genLabel 00101$:;	genEndFunction 	ret	.area CSEG    (CODE)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?