add: minilibc to the examples
This commit is contained in:
40
examples/minilibc/memcpy.pasm
Normal file
40
examples/minilibc/memcpy.pasm
Normal file
@@ -0,0 +1,40 @@
|
||||
; memcpy
|
||||
|
||||
end_:
|
||||
push a1
|
||||
call free
|
||||
push a2
|
||||
call free
|
||||
mov eax, 0
|
||||
end
|
||||
|
||||
memcpy:
|
||||
; a1 -> buffer1
|
||||
; a2 -> buffer2
|
||||
; a3 -> n
|
||||
|
||||
mov a5, a1
|
||||
mov a6, a2
|
||||
mov a4, 0
|
||||
|
||||
loop:
|
||||
cmp a4, a3
|
||||
je end_
|
||||
mov (char)*a5, (char)*a6
|
||||
add a5, 1
|
||||
add a6, 1
|
||||
add a4, 1
|
||||
jmp loop
|
||||
|
||||
main:
|
||||
mov a3, 5
|
||||
|
||||
push 10
|
||||
call malloc
|
||||
mov a1, eax ;save the ptr
|
||||
|
||||
push 10
|
||||
call malloc
|
||||
mov a2, eax ;save the ptr
|
||||
|
||||
jmp memcpy
|
||||
34
examples/minilibc/memset.pasm
Normal file
34
examples/minilibc/memset.pasm
Normal file
@@ -0,0 +1,34 @@
|
||||
; memset
|
||||
|
||||
end_:
|
||||
push a1
|
||||
call free
|
||||
mov eax, 0
|
||||
end
|
||||
|
||||
memset:
|
||||
; a1 -> buffer
|
||||
; a2 -> size
|
||||
; a3 -> value
|
||||
|
||||
sub a2, 1
|
||||
mov a5, 0
|
||||
mov a4, a1
|
||||
|
||||
loop:
|
||||
cmp a5, a2
|
||||
je end_
|
||||
mov (char)*a4, (char)a3
|
||||
add a4, 1
|
||||
add a5, 1
|
||||
jmp loop
|
||||
|
||||
main:
|
||||
mov a2, 10
|
||||
mov a3, 97 ; 'a'
|
||||
|
||||
push a2
|
||||
call malloc
|
||||
mov a1, eax ;save the ptr
|
||||
|
||||
jmp memset
|
||||
44
examples/minilibc/strcasecmp.pasm
Normal file
44
examples/minilibc/strcasecmp.pasm
Normal file
@@ -0,0 +1,44 @@
|
||||
; strcasecmp
|
||||
|
||||
set str1 "hello, world !\0"
|
||||
set str2 "hello, world !\0"
|
||||
|
||||
end_:
|
||||
mov eax, 0
|
||||
end
|
||||
|
||||
fail:
|
||||
mov eax, a4
|
||||
sub eax, a5
|
||||
end
|
||||
|
||||
main:
|
||||
mov a1, str1
|
||||
mov a2, str2
|
||||
mov a3, 0
|
||||
|
||||
loop:
|
||||
cmp (char)*a1, 0
|
||||
jne 2
|
||||
cmp (char)*a2, 0
|
||||
je end_
|
||||
|
||||
mov a4, (char)*a1
|
||||
cmp a4, 64
|
||||
jna 2
|
||||
cmp a4, 90
|
||||
ja 2
|
||||
add a4, 32
|
||||
|
||||
mov a5, (char)*a2
|
||||
cmp a5, 64
|
||||
jna 2
|
||||
cmp a5, 90
|
||||
ja 2
|
||||
add a5, 32
|
||||
|
||||
cmp a4, a5
|
||||
jne fail
|
||||
add a1, 1
|
||||
add a2, 1
|
||||
jmp loop
|
||||
25
examples/minilibc/strchr.pasm
Normal file
25
examples/minilibc/strchr.pasm
Normal file
@@ -0,0 +1,25 @@
|
||||
; strchr
|
||||
|
||||
set str "hello, world !\0"
|
||||
|
||||
found:
|
||||
mov a2, a1
|
||||
push a2
|
||||
call print
|
||||
|
||||
end_:
|
||||
mov eax, a2
|
||||
end
|
||||
|
||||
main:
|
||||
mov a1, str
|
||||
mov a2, 0
|
||||
mov a3, 111 ; 'o'
|
||||
|
||||
loop:
|
||||
cmp *a1, 0
|
||||
je end_
|
||||
cmp a3, (char)*a1
|
||||
je found
|
||||
add a1, 1
|
||||
jmp loop
|
||||
29
examples/minilibc/strcmp.pasm
Normal file
29
examples/minilibc/strcmp.pasm
Normal file
@@ -0,0 +1,29 @@
|
||||
; strcmp
|
||||
|
||||
set str1 "hello, world !\0"
|
||||
set str2 "hello, world !\0"
|
||||
|
||||
end_:
|
||||
mov eax, 0
|
||||
end
|
||||
|
||||
fail:
|
||||
mov eax, (char)*a1
|
||||
sub eax, (char)*a2
|
||||
end
|
||||
|
||||
main:
|
||||
mov a1, str1
|
||||
mov a2, str2
|
||||
mov a3, 0
|
||||
|
||||
loop:
|
||||
cmp (char)*a1, 0
|
||||
jne 2
|
||||
cmp (char)*a2, 0
|
||||
je end_
|
||||
cmp (char)*a1, (char)*a2
|
||||
jne fail
|
||||
add a1, 1
|
||||
add a2, 1
|
||||
jmp loop
|
||||
18
examples/minilibc/strlen.pasm
Normal file
18
examples/minilibc/strlen.pasm
Normal file
@@ -0,0 +1,18 @@
|
||||
; strlen
|
||||
|
||||
set str "hello, world !\0"
|
||||
|
||||
end_:
|
||||
mov eax, a2
|
||||
end
|
||||
|
||||
main:
|
||||
mov a1, str
|
||||
mov a2, 0
|
||||
|
||||
loop:
|
||||
cmp (char)*a1, 0
|
||||
je end_
|
||||
add a2, 1
|
||||
add a1, 1
|
||||
jmp loop
|
||||
34
examples/minilibc/strncmp.pasm
Normal file
34
examples/minilibc/strncmp.pasm
Normal file
@@ -0,0 +1,34 @@
|
||||
; strncmp
|
||||
|
||||
set str1 "hello, world !\0"
|
||||
set str2 "hella, world !\0"
|
||||
|
||||
end_:
|
||||
mov eax, 0
|
||||
end
|
||||
|
||||
fail:
|
||||
mov eax, (char)*a1
|
||||
sub eax, (char)*a2
|
||||
end
|
||||
|
||||
main:
|
||||
mov a1, str1
|
||||
mov a2, str2
|
||||
mov a4, 6 ;n
|
||||
mov a5, 1
|
||||
mov a3, 0
|
||||
|
||||
loop:
|
||||
cmp a5, a4
|
||||
je end_
|
||||
cmp (char)*a1, 0
|
||||
jne 2
|
||||
cmp (char)*a2, 0
|
||||
je end_
|
||||
cmp (char)*a1, (char)*a2
|
||||
jne fail
|
||||
add a1, 1
|
||||
add a2, 1
|
||||
add a5, 1
|
||||
jmp loop
|
||||
26
examples/minilibc/strrchr.pasm
Normal file
26
examples/minilibc/strrchr.pasm
Normal file
@@ -0,0 +1,26 @@
|
||||
; strrchr
|
||||
|
||||
set str "hello, world !\0"
|
||||
|
||||
found:
|
||||
mov a2, a1
|
||||
ret
|
||||
|
||||
end_:
|
||||
push a2
|
||||
call print
|
||||
mov eax, a2
|
||||
end
|
||||
|
||||
main:
|
||||
mov a1, str
|
||||
mov a2, 0
|
||||
mov a3, 111 ; 'o'
|
||||
|
||||
loop:
|
||||
cmp (char)*a1, 0
|
||||
je end_
|
||||
cmp (char)a3, (char)*a1
|
||||
je found
|
||||
add a1, 1
|
||||
jmp loop
|
||||
26
examples/minilibc/strstr.pasm
Normal file
26
examples/minilibc/strstr.pasm
Normal file
@@ -0,0 +1,26 @@
|
||||
; strstr
|
||||
|
||||
set str1 "hello, world !\0"
|
||||
set str2 "hello\0"
|
||||
|
||||
end_:
|
||||
mov eax, a1
|
||||
end
|
||||
|
||||
fail:
|
||||
mov eax, 0
|
||||
end
|
||||
|
||||
main:
|
||||
mov a1, str1
|
||||
mov a2, str2
|
||||
mov a3, 0
|
||||
|
||||
loop:
|
||||
cmp (char)*a2, 0
|
||||
je end_
|
||||
cmp (char)*a1, (char)*a2
|
||||
jne fail
|
||||
add a1, 1
|
||||
add a2, 1
|
||||
jmp loop
|
||||
Reference in New Issue
Block a user