📄 _atoi.asm
字号:
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:47 2001;-------------------------------------------------------- .module _atoi ;--------------------------------------------------------; Public variables in this module;-------------------------------------------------------- .globl _atoi;--------------------------------------------------------; special function registers;--------------------------------------------------------;--------------------------------------------------------; special function bits ;--------------------------------------------------------;--------------------------------------------------------; internal ram data;-------------------------------------------------------- .area _DATA;--------------------------------------------------------; overlayable items in internal ram ;-------------------------------------------------------- .area _OVERLAY;--------------------------------------------------------; indirectly addressable internal ram data;-------------------------------------------------------- .area _ISEG;--------------------------------------------------------; bit data;-------------------------------------------------------- .area _BSEG;--------------------------------------------------------; external ram data;-------------------------------------------------------- .area _XSEG;--------------------------------------------------------; global & static initialisations;-------------------------------------------------------- .area _GSINIT .area _GSFINAL .area _GSINIT;--------------------------------------------------------; Home;-------------------------------------------------------- .area _HOME .area _CODE;--------------------------------------------------------; code;-------------------------------------------------------- .area _CODE; _atoi.c 25; genLabel; genFunction; ---------------------------------; Function atoi; ---------------------------------___atoi_start:_atoi: push ix ld ix,#0 add ix,sp ld hl,#-5 add hl,sp ld sp,hl; _atoi.c 27; genAssign; AOP_STK for _atoi_rv_1_1 ld -2(ix),#0x00 ld -1(ix),#0x00; _atoi.c 31; genAssign; AOP_STK for ld e,4(ix) ld d,5(ix); genLabel00107$:; genPointerGet ld a,(de) ld c,a; genIfx xor a,a or a,c jp z,00109$; _atoi.c 32; genCmpGt ld l,#0xB9 ld a,c xor a,#0x80 ld h,a ld a,l sub a,h jp c,00102$; genCmpLt ld a,c xor a,#0x80 cp #0x30^0x80 jp nc,00109$; _atoi.c 33; genLabel00102$:; _atoi.c 34; genCmpEq; genCmpEq: left 1, right 1, result 0 ld a,c cp a,#0x2D; Rule 5: Changed jump logic jp z,00109$00133$:; genCmpEq; genCmpEq: left 1, right 1, result 0 ld a,c cp a,#0x2B; Rule 5: Changed jump logic jp z,00109$00134$:; _atoi.c 36; genPlus; genPlusIncr inc de; genGoto jp 00107$; genLabel00109$:; _atoi.c 39; genAssign; AOP_STK for ld 4(ix),e ld 5(ix),d; genCmpEq; genCmpEq: left 1, right 1, result 1 ld a,c cp a,#0x2D jp nz,00135$ ld a,#0x01 jp 00136$00135$: xor a,a00136$: ld b,a; genAssign; AOP_STK for _atoi_sign_1_1 ld -3(ix),b; _atoi.c 40; genIfx xor a,a or a,b jp nz,00110$; genCmpEq; genCmpEq: left 1, right 1, result 0 ld a,c cp a,#0x2B; Rule 4: Changed jp order jp z,00138$00137$: jp 00131$00138$:; genLabel00110$:; genPlus; AOP_STK for ; genPlusIncr; Can't optimise plus by inc, falling back to the normal way ld a,e add a,#0x01 ld 4(ix),a ld a,d adc a,#0x00 ld 5(ix),a; _atoi.c 42; genLabel00131$:; genAssign; AOP_STK for ld c,4(ix) ld b,5(ix); genLabel00115$:; genPointerGet ld a,(bc) ld e,a; genIfx xor a,a or a,e jp z,00117$; genCmpLt ld a,e xor a,#0x80 cp #0x30^0x80 jp c,00117$; genCmpGt ld l,#0xB9 ld a,e xor a,#0x80 ld h,a ld a,l sub a,h jp c,00117$; _atoi.c 43; genIpush; _saveRegsForCall: sendSetSize: 0 deInUse: 1 bcInUse: 1 deSending: 0 push bc push de ld hl,#0x000A push hl; genIpush; AOP_STK for _atoi_rv_1_1 ld l,-2(ix) ld h,-1(ix) push hl; genCall call __mulsint_rrx_s; AOP_STK for _atoi_sloc0_1_0 ld -4(ix),h ld -5(ix),l pop hl pop hl pop hl ld e,l pop bc; genMinus ld a,e add a,#0xD0; genCast; Rule 1: Removed redundent load ld e,a rla sbc a,a ld d,a; genPlus; AOP_STK for _atoi_sloc0_1_0; AOP_STK for _atoi_rv_1_1; Can't optimise plus by inc, falling back to the normal way ld a,-5(ix) add a,e ld -2(ix),a ld a,-4(ix) adc a,d ld -1(ix),a; _atoi.c 44; genPlus; genPlusIncr inc bc; genGoto jp 00115$; genLabel00117$:; _atoi.c 47; genIfx; AOP_STK for _atoi_sign_1_1 xor a,a; Rule 8: Removed redundent or for (ix) or a,-3(ix) jp z,00120$; genUminus; AOP_STK for _atoi_rv_1_1 xor a,a sbc a,-2(ix) ld c,a ld a,#0x00 sbc a,-1(ix) ld b,a; genGoto jp 00121$; genLabel00120$:; genAssign; AOP_STK for _atoi_rv_1_1 ld c,-2(ix) ld b,-1(ix); genLabel00121$:; genRet ld l,c ld h,b; genLabel00118$:; genEndFunction ld sp,ix pop ix ret___atoi_end: .area _CODE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -