📄 _setjmp.asm
字号:
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:27 2001;-------------------------------------------------------- .module _setjmp ;--------------------------------------------------------; 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_longjmp_bp_1_1:: .ds 3_setjmp_bp_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 'longjmp';------------------------------------------------------------;rv Allocated to in memory with name '_longjmp_PARM_2';bp Allocated to in memory with name '_longjmp_bp_1_1';lsp Allocated to in memory with name '_longjmp_lsp_1_1'; _setjmp.c 28; -----------------------------------------; function longjmp; -----------------------------------------_longjmp: ar2 = 0x02 ar3 = 0x03 ar4 = 0x04 ar5 = 0x05 ar6 = 0x06 ar7 = 0x07 ar0 = 0x00 ar1 = 0x01; _setjmp.c 35 push b push dph push dpl mov dptr,#_longjmp_bp_1_1 pop acc movx @dptr,a pop acc inc dptr movx @dptr,a pop acc inc dptr movx @dptr,a; _setjmp.c 31 mov dptr,#_longjmp_bp_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 a,#0x02 add a,r2 mov dpl,a; Peephole 180 changed mov to clr clr a addc a,r3 mov dph,a mov b,r4 lcall __gptrget mov r5,a; _setjmp.c 32 mov ar0,r5 mov dpl,r2 mov dph,r3 mov b,r4 lcall __gptrget mov r6,a inc r2 cjne r2,#0x00,00103$ inc r300103$: mov dptr,#_longjmp_bp_1_1 mov a,r2 movx @dptr,a inc dptr mov a,r3 movx @dptr,a inc dptr mov a,r4 movx @dptr,a mov @r0,ar6; _setjmp.c 33 dec r0 mov dpl,r2 mov dph,r3 mov b,r4 lcall __gptrget; Peephole 192 used a instead of ar2 as source mov r2,a mov @r0,a; _setjmp.c 34 mov _SP,r5; _setjmp.c 35 mov dptr,#_longjmp_PARM_2 movx a,@dptr mov r2,a inc dptr movx a,@dptr mov r3,a mov dpl,r2 mov dph,r300101$: ret;------------------------------------------------------------;Allocation info for local variables in function 'setjmp';------------------------------------------------------------;bp Allocated to in memory with name '_setjmp_bp_1_1'; _setjmp.c 38; -----------------------------------------; function setjmp; -----------------------------------------_setjmp:; _setjmp.c 0 push b push dph push dpl mov dptr,#_setjmp_bp_1_1 pop acc movx @dptr,a pop acc inc dptr movx @dptr,a pop acc inc dptr movx @dptr,a; _setjmp.c 43 mov dptr,#_setjmp_bp_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 r0,_SP mov ar5,@r0 mov dpl,r2 mov dph,r3 mov b,r4 mov a,r5 lcall __gptrput inc r2 cjne r2,#0x00,00103$ inc r300103$:; _setjmp.c 44 mov r5,_SP mov a,r5 dec a mov r0,a mov ar5,@r0 mov dpl,r2 mov dph,r3 mov b,r4 mov a,r5 lcall __gptrput inc r2 cjne r2,#0x00,00104$ inc r300104$: mov dptr,#_setjmp_bp_1_1 mov a,r2 movx @dptr,a inc dptr mov a,r3 movx @dptr,a inc dptr mov a,r4 movx @dptr,a; _setjmp.c 45 mov dpl,r2 mov dph,r3 mov b,r4 mov a,_SP lcall __gptrput; _setjmp.c 46; Peephole 181 used 16 bit load of dptr mov dptr,#0x000000101$: ret .area CSEG (CODE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -