added 32 bit asm version

This commit is contained in:
overflowerror 2020-08-22 19:33:55 +02:00
parent 4ddc3602a3
commit 1ee35701fc
2 changed files with 63 additions and 0 deletions

6
asm/Makefile Normal file
View file

@ -0,0 +1,6 @@
all: fib32
fib32: fib32.asm
nasm -f elf32 fib32.asm
gcc -m32 -no-pie fib32.o -o $@

57
asm/fib32.asm Normal file
View file

@ -0,0 +1,57 @@
section .text
global main
extern printf
fib:
pop ebx
pop ecx
pop eax
pop edx
sub esp, 12
push ebx
cmp ecx, 0
je fibend
fibloop:
mov ebx, eax
add ebx, edx
push ecx ; ecx is not callee-saved in the linux abi
push ebx
push edx
push eax
push format
call printf
add esp, 8
pop eax
pop edx
pop ecx
dec ecx
jnz fibloop
fibend:
ret
main:
mov ebx, 1
push ebx
push ebx
mov ebx, 5
push ebx
call fib
add esp, 12
mov eax, 0 ; return 0
ret
section .data
format:
db '%d + %d = %d', 10, 0