time.asm
来自「很少见的源码公开的msc51和z80的c编译器。」· 汇编 代码 · 共 3,690 行 · 第 1/4 页
ASM
3,690 行
push ar2 push ar3 push ar4 push ar5 mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 lcall __divulong mov r6,dpl mov r7,dph mov r0,dpx mov r1,b pop ar5 pop ar4 pop ar3 pop ar2; genAssign ; genAssign: resultIsFar = TRUE mov ar2,r6 mov ar3,r7 mov ar4,r0 mov ar5,r1; time.c 132; genPlus mov a,#0x04 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; Peephole 180 changed mov to clr clr a addc a,r5 mov r1,a; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#__modulong_PARM_2 mov a,#0x07 movx @dptr,a clr a inc dptr movx @dptr,a inc dptr movx @dptr,a inc dptr movx @dptr,a; genCall push ar2 push ar3 push ar4 push ar5 mov dpl,r6 mov dph,r7 mov dpx,r0 mov b,r1 lcall __modulong mov r6,dpl mov r7,dph mov r0,dpx mov r1,b pop ar5 pop ar4 pop ar3 pop ar2; genCast ; genPointerSet mov dptr,#(_lastTime + 0x0007) mov a,r6 movx @dptr,a; time.c 135; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#_gmtime_days_1_1 clr a movx @dptr,a inc dptr movx @dptr,a inc dptr movx @dptr,a inc dptr movx @dptr,a; time.c 136; genAssign ; genAssign: resultIsFar = TRUE mov r6,#0xB2 mov r7,#0x07; genLabel 00101$:; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#__moduint_PARM_2 mov a,#0x04 movx @dptr,a clr a inc dptr movx @dptr,a; genCall push ar2 push ar3 push ar4 push ar5 push ar6 push ar7 mov dpl,r6 mov dph,r7 lcall __moduint mov r0,dpl mov r1,dph pop ar7 pop ar6 pop ar5 pop ar4 pop ar3 pop ar2; genCmpEq ; gencjne; gencjneshort mov a,r0 cjne a,#0x00,00132$ mov a,r1 cjne a,#0x00,00132$ mov a,#0x01 sjmp 00133$00132$: clr a00133$:; genIfx ; Peephole 105 removed redundant mov mov r0,a; genIfxJump ; Peephole 110 removed ljmp by inverse jump logic jz 00119$00134$:; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#_gmtime_sloc0_1_0 mov a,#0x6E movx @dptr,a inc dptr mov a,#0x01 movx @dptr,a; genGoto ; genLabel ; Peephole 132 changed ljmp to sjmp sjmp 00120$00119$:; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#_gmtime_sloc0_1_0 mov a,#0x6D movx @dptr,a inc dptr mov a,#0x01 movx @dptr,a; genLabel 00120$:; genCast mov dptr,#_gmtime_sloc0_1_0 mov dps, #0x01 mov dptr, #_gmtime_sloc1_1_0 dec dps movx a,@dptr inc dps movx @dptr,a dec dps inc dptr movx a,@dptr inc dps inc dptr movx @dptr,a mov dps, #0x00 movx a,@dptr rlc a subb a,acc mov dps, #0x01 inc dptr movx @dptr,a; Peephole 220a removed bogus DPS set mov dps, #0x01 inc dptr movx @dptr,a; genPlus mov dps, #0x01 mov dptr, #_gmtime_days_1_1 dec dps mov dptr, #_gmtime_sloc1_1_0; Peephole 224: DPS usage re-arranged.; genPlus: must push result: 3 ops in far space movx a,@dptr xch a, ap inc dps movx a,@dptr add a, ap push acc dec dps inc dptr movx a,@dptr xch a, ap inc dps inc dptr movx a,@dptr addc a, ap push acc dec dps inc dptr movx a,@dptr xch a, ap inc dps inc dptr movx a,@dptr addc a, ap push acc dec dps inc dptr movx a,@dptr xch a, ap inc dps inc dptr movx a,@dptr addc a, ap push acc mov dps, #0x00 mov dptr,#_gmtime_sloc2_1_0 pop acc inc dptr inc dptr inc dptr movx @dptr,a pop acc lcall __decdptr movx @dptr,a pop acc lcall __decdptr movx @dptr,a pop acc lcall __decdptr movx @dptr,a; genAssign mov dptr,#_gmtime_sloc2_1_0; genAssign: resultIsFar = TRUE; genFarFarAssign (390 auto-toggle fun) mov dps, #0x21 mov dptr,#_gmtime_days_1_1 movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a mov dps, #0; genCmpGt mov dptr,#_gmtime_sloc2_1_0; genCmp clr c; genCmp #1: 3/0/0 mov a,r2; genCmp #2; genCmp #4; genCmp #4.1 xch a, b movx a,@dptr xch a, b subb a,b; genCmp #1: 2/0/1 mov a,r3; genCmp #2; genCmp #4; genCmp #4.1 xch a, b inc dptr movx a,@dptr xch a, b subb a,b; genCmp #1: 1/0/2 mov a,r4; genCmp #2; genCmp #4; genCmp #4.1 xch a, b inc dptr movx a,@dptr xch a, b subb a,b; genCmp #1: 0/0/3 mov a,r5; genCmp #2; genCmp #4; genCmp #4.1 xch a, b inc dptr movx a,@dptr xch a, b subb a,b; genIfxJump ; Peephole 132 changed ljmp to sjmp; Peephole 160 removed sjmp by inverse jump logic jc 00103$00135$:; time.c 137; genPlus inc r6 cjne r6,#0x00,00136$ inc r700136$:; did genPlusIncr; genGoto ljmp 00101$; genLabel 00103$:; time.c 139; genMinus mov a,r6 add a,#0x94 mov r6,a mov a,r7 addc a,#0xf8 mov r7,a; genPointerSet mov dptr,#(_lastTime + 0x0005) mov a,r6 movx @dptr,a inc dptr mov a,r7 movx @dptr,a; time.c 141; genIfx mov a,r0; genIfxJump ; Peephole 110 removed ljmp by inverse jump logic jz 00121$00137$:; genAssign ; genAssign: resultIsFar = FALSE mov r6,#0x6E mov r7,#0x01; genGoto ; genLabel ; Peephole 132 changed ljmp to sjmp sjmp 00122$00121$:; genAssign ; genAssign: resultIsFar = FALSE mov r6,#0x6D mov r7,#0x01; genLabel 00122$:; genCast mov dptr,#_gmtime_sloc2_1_0 mov a,r6 movx @dptr,a inc dptr mov a,r7 movx @dptr,a mov a,r7 rlc a subb a,acc inc dptr movx @dptr,a inc dptr movx @dptr,a; genMinus mov dptr,#_gmtime_days_1_1 mov dps, #0x01 mov dptr, #_gmtime_sloc2_1_0 dec dps clr c movx a,@dptr xch a, ap inc dps movx a,@dptr xch a, ap subb a,ap push acc dec dps inc dptr movx a,@dptr xch a, ap inc dps inc dptr movx a,@dptr xch a, ap subb a,ap push acc dec dps inc dptr movx a,@dptr xch a, ap inc dps inc dptr movx a,@dptr xch a, ap subb a,ap push acc dec dps inc dptr movx a,@dptr xch a, ap inc dps inc dptr movx a,@dptr xch a, ap subb a,ap push acc mov dps, #0x00 pop acc movx @dptr,a pop acc lcall __decdptr movx @dptr,a pop acc lcall __decdptr movx @dptr,a pop acc lcall __decdptr movx @dptr,a; time.c 142; genMinus mov dps, #0x01 mov dptr, #_gmtime_days_1_1 dec dps clr c mov a,r2 xch a, ap inc dps movx a,@dptr xch a, ap subb a,ap mov r2,a mov a,r3 xch a, ap inc dptr movx a,@dptr xch a, ap subb a,ap mov r3,a mov a,r4 xch a, ap inc dptr movx a,@dptr xch a, ap subb a,ap mov r4,a mov a,r5 xch a, ap inc dptr movx a,@dptr xch a, ap subb a,ap mov r5,a mov dps, #0x00; time.c 143; genCast mov ar6,r2 mov ar7,r3; genPointerSet mov dptr,#(_lastTime + 0x0008) mov a,r6 movx @dptr,a inc dptr mov a,r7 movx @dptr,a; time.c 148; genAssign ; genAssign: resultIsFar = TRUE mov r6,#0x00; genLabel 00113$:; genCmpLt ; genCmp cjne r6,#0x0C,00138$00138$:; genIfxJump jc 00139$ ljmp 00116$00139$:; time.c 149; genCmpEq ; gencjneshort mov a,r6; Peephole 132 changed ljmp to sjmp; Peephole 199 optimized misc jump sequence cjne a,#0x01,00108$;00140$:; Peephole 200 removed redundant sjmp00141$:; time.c 150; genIfx mov a,r0; genIfxJump ; Peephole 110 removed ljmp by inverse jump logic jz 00105$00142$:; time.c 151; genAssign ; genAssign: resultIsFar = TRUE mov r7,#0x1D; genGoto ; genLabel ; Peephole 132 changed ljmp to sjmp sjmp 00109$00105$:; time.c 153; genAssign ; genAssign: resultIsFar = TRUE mov r7,#0x1C; genGoto ; genLabel ; Peephole 132 changed ljmp to sjmp sjmp 00109$00108$:; time.c 156; genPlus mov dptr,#_gmtime_sloc2_1_0 mov a,r6 add a,#_monthDays movx @dptr,a; Peephole 180 changed mov to clr clr a addc a,#(_monthDays >> 8) inc dptr movx @dptr,a; Peephole 180 changed mov to clr clr a addc a,#(_monthDays >> 16) inc dptr movx @dptr,a; genPointerGet mov dptr,#_gmtime_sloc2_1_0; gencodePointerGet -- indirection special case. movx a,@dptr push acc inc dptr movx a,@dptr push acc inc dptr movx a,@dptr mov dpx,a pop dph pop dpl clr a movc a,@a+dptr mov r1,a; genAssign ; genAssign: resultIsFar = TRUE mov ar7,r1; genLabel 00109$:; time.c 159; genCast mov dptr,#_gmtime_sloc2_1_0 mov a,r7 movx @dptr,a inc dptr; Peephole 101 removed redundant mov; Peephole 180 changed mov to clr clr a movx @dptr,a inc dptr movx @dptr,a inc dptr; Peephole 180 changed mov to clr clr a movx @dptr,a; genCmpLt mov dptr,#_gmtime_sloc2_1_0; genCmp clr c; genCmp #1: 3/0/0 mov a,r2; genCmp #2; genCmp #4; genCmp #4.1 xch a, b movx a,@dptr xch a, b subb a,b; genCmp #1: 2/0/1 mov a,r3; genCmp #2; genCmp #4; genCmp #4.1 xch a, b inc dptr movx a,@dptr xch a, b subb a,b; genCmp #1: 1/0/2 mov a,r4; genCmp #2; genCmp #4; genCmp #4.1 xch a, b inc dptr movx a,@dptr xch a, b subb a,b; genCmp #1: 0/0/3 mov a,r5; genCmp #2; genCmp #4; genCmp #4.1 xch a, b inc dptr movx a,@dptr xch a, b subb a,b; genIfxJump ; Peephole 132 changed ljmp to sjmp; Peephole 160 removed sjmp by inverse jump logic jc 00116$00143$:; time.c 160; genMinus mov dps, #0x01 mov dptr, #_gmtime_sloc2_1_0 dec dps clr c mov a,r2 xch a, ap inc dps movx a,@dptr xch a, ap subb a,ap mov r2,a mov a,r3 xch a, ap inc dptr movx a,@dptr xch a, ap subb a,ap mov r3,a mov a,r4 xch a, ap inc dptr movx a,@dptr xch a, ap subb a,ap mov r4,a mov a,r5 xch a, ap inc dptr movx a,@dptr xch a, ap subb a,ap mov r5,a mov dps, #0x00; time.c 148; genPlus inc r6; did genPlusIncr; genGoto ljmp 00113$; genLabel 00116$:; time.c 165; genPointerSet mov dptr,#(_lastTime + 0x0004) mov a,r6 movx @dptr,a; time.c 166; genPlus inc r2 cjne r2,#0x00,00144$ inc r3 cjne r3,#0x00,00144$ inc r4 cjne r4,#0x00,00144$ inc r500144$:; did genPlusIncr; genCast ; genPointerSet mov dptr,#(_lastTime + 0x0003) mov a,r2 movx @dptr,a; time.c 168; genPointerSet mov dptr,#(_lastTime + 0x000a); Peephole 180 changed mov to clr clr a movx @dptr,a; time.c 170; genCast mov r2,#_lastTime mov r3,#(_lastTime >> 8) mov r4,#(_lastTime >> 16) mov r5,#0x01; genRet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5; genLabel 00117$:; genEndFunction ret; time.c 174; genFunction ; -----------------------------------------; function mktime; -----------------------------------------_mktime:; time.c 0; genReceive mov r2,dpl mov r3,dph mov r4,dpx mov r5,b; time.c 175; genPlus mov a,#0x05 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 inc dptr lcall __gptrget mov r7,a; genPlus mov dptr,#_mktime_year_1_1 mov a,#0x6C add a,r6 movx @dptr,a mov a,#0x07 addc a,r7 inc dptr movx @dptr,a; genPlus mov a,#0x04 add a,r2 mov r0,a; Peephole 180 changed mov to clr clr a addc a,r3 mov r1,a; Peephole 180 changed mov to clr clr a addc a,r4 mov r6,a mov ar7,r5; genPointerGet ; genGenPointerGet mov dpl,r0 mov dph,r1 mov dpx,r6 mov b,r7 lcall __gptrget; genCast ; Peephole 100 removed redundant mov mov r0,a mov dptr,#_mktime_month_1_1 movx @dptr,a inc dptr; Peephole 180 changed mov to clr clr a movx @dptr,a; time.c 178; genCall push ar2 push ar3 push ar4 push ar5 mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 lcall _CheckTime pop ar5 pop ar4 pop ar3 pop ar2; time.c 181; genMinus mov dptr,#_mktime_year_1_1 movx a,@dptr add a,#0x4e mov r0,a inc dptr movx a,@dptr addc a,#0xf8; genCast ; Peephole 105 removed redundant mov mov r1,a rlc a subb a,acc mov r6,a mov r7,a; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#__mulslong_PARM_2 mov a,#0x3C movx @dptr,a clr a inc dptr movx @dptr,a inc dptr movx @dptr,a inc dptr movx @dptr,a; genCall push ar2 push ar3 push ar4 push ar5 mov dpl,r0 mov dph,r1 mov dpx,r6 mov b,r7 lcall __mulslong mov r6,dpl mov r7,dph mov r0,dpx mov r1,b pop ar5 pop ar4 pop ar3 pop ar2; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#__mulslong_PARM_2 mov a,#0x3C movx @dptr,a clr a inc dptr movx @dptr,a inc dptr movx @dptr,a inc dptr movx @dptr,a; genCall push ar2 push ar3 push ar4 push ar5 mov dpl,r6 mov dph,r7 mov dpx,r0 mov b,r1 lcall __mulslong mov r6,dpl mov r7,dph mov r0,dpx mov r1,b pop ar5 pop ar4 pop ar3 pop ar2; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#__mulslong_PARM_2 mov a,#0x18 movx @dptr,a clr a inc dptr movx @dptr,a inc dptr movx @dptr,a inc dptr movx @dptr,a; genCall push ar2 push ar3 push ar4 push ar5 mov dpl,r6 mov dph,r7 mov dpx,r0 mov b,r1 lcall __mulslong mov r6,dpl mov r7,dph mov r0,dpx mov r1,b pop ar5 pop ar4 pop ar3 pop ar2; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#__mulslong_PARM_2 mov a,#0x6D movx @dptr,a inc dptr mov a,#0x01 movx @dptr,a clr a inc dptr movx @dptr,a inc dptr movx @dptr,a; genCall push ar2 push ar3 push ar4
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?