Compare commits

..

2 commits

Author SHA1 Message Date
e40f7dbe2b idk what i changed check the diffs 2021-11-25 12:41:37 -05:00
bba6630833 i (hopefully) made atoi return 0 if its not a number
@quantum fix
i should probably make it more complient with the spec
2021-11-21 03:21:48 -05:00
5 changed files with 123 additions and 3 deletions

View file

@ -18,6 +18,6 @@ add_compile_options(-g)
add_link_options(-fno-pie -m64 -no-pie -pedantic-errors)
#Make a EXE with cpp and asm files
add_library(z tolower.asm strlen.asm strcmp.asm atoi.asm)
add_library(z tolower.asm strlen.asm strcmp.asm atoi.asm hextoi.asm)
add_executable(example example.asm)
target_link_libraries(example z)

View file

@ -25,6 +25,10 @@ _loop:
xor rax, rax
mov al, [r9]
cmp rax, 48
jb _nan
cmp rax, 57 ;if its not a number then return 0 then exit
ja _nan
; push rax
sub rax, 48
@ -43,7 +47,8 @@ _loop:
jmp _loop
_nan:
xor r10, r10
_end:
mov rax, r10

51
atoi_legacy2.asm Normal file
View file

@ -0,0 +1,51 @@
extern libz_strlen
global libz_atoi
section .text
libz_atoi:
; mov r11, rdi ;saveing it for later
push rdi
call libz_strlen
mov r9, rax
pop rdi
xor r10, r10
mov rcx, 1
add r9, rdi
dec r9
_loop:
xor rax, rax
mov al, [r9]
; push rax
sub rax, 48
mul rcx
add r10, rax
; pop rax
cmp r9, rdi
je _end
dec r9
; push rax
mov rax, 10
mul rcx
mov rcx, rax
; pop rax
jmp _loop
_end:
mov rax, r10
ret

View file

@ -7,7 +7,7 @@ extern libz_atoi
section .data
text2 db "asdasdASDd",0
text db "asdasdasd",0
text3 dq "65",0
text3 dq "5",0
textstore dq 0,0
stoer db "0",0
differ db "they differ",0

64
unfinished/hextoi.asm Normal file
View file

@ -0,0 +1,64 @@
extern libz_strlen
global libz_hextoi
section .text
libz_hextoi:
; mov r11, rdi ;saveing it for later
push rdi
call libz_strlen
mov r9, rax
pop rdi
xor r10, r10
mov rcx, 1
add r9, rdi
dec r9
_loop:
xor rax, rax
mov al, [r9]
cmp rax, 48
jb _nan
cmp rax, 70 ;if its not a number then return 0 then exit
ja _nan ;this actually as a bug if you put a : it will be allowed
; push rax
cmp rax, 58 ;if(char < 58){sub char, 48}else{sub char, 55}
jb _charbelow
sub rax, 55
jmp _hexitif
_charbelow:
sub rax, 48
_hexitif:
mul rcx
add r10, rax
; pop rax
cmp r9, rdi
je _end
dec r9
; push rax
mov rax, 16
mul rcx
mov rcx, rax
; pop rax
jmp _loop
_nan:
xor r10, r10
_end:
mov rax, r10
ret