diff options
author | Braxton Hall | 2022-10-26 17:05:12 +0000 |
---|---|---|
committer | GitHub | 2022-10-26 17:05:12 +0000 |
commit | 01dbd3f3f0829f9bf33bd0c3f152a160218bf09d (patch) | |
tree | d751a98758446af8f6937c28bc26bf39304a7568 /entries/nwoeanhinnogaehr/fib.asm | |
parent | 4573b5ae5c50856dafe88cbd1a795662faee041b (diff) | |
parent | d7c513d8f7654ab61296be5aefbea4eadff69125 (diff) |
Merge pull request #49 from nwoeanhinnogaehr/main
add x86 elf (81 bytes)
Diffstat (limited to 'entries/nwoeanhinnogaehr/fib.asm')
-rw-r--r-- | entries/nwoeanhinnogaehr/fib.asm | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/entries/nwoeanhinnogaehr/fib.asm b/entries/nwoeanhinnogaehr/fib.asm new file mode 100644 index 0000000..26ccf11 --- /dev/null +++ b/entries/nwoeanhinnogaehr/fib.asm @@ -0,0 +1,59 @@ +; assembles with nasm to an 81-byte ELF binary that works on x86 Linux + +bits 32 +org $25430000 + db $7F,"ELF" ; e_ident + dd 1 ; p_type + dd 0 ; p_offset + dd $$ ; p_vaddr + dw 2 ; e_type, p_paddr + dw 3 ; e_machine + dd entry ; e_version, p_filesz + dw (entry-$$)&0xffff ; e_entry, p_memsz + +entry: + inc ebx + and eax,strict dword 4 ;nop + inc esi ; 1 + inc edi ; 1 + ; 2 + ; 3 + ; 5 + ; 8 + ; ... + +loop: + mov eax,esi + push 10 + pop ebp + push ebp + jmp format + dw $20 ; e_phentsize + dw 1 ; e_phnum + +format: + cdq + div ebp + inc ebx + dec esp + or edx,'0' + mov [esp],dl + test eax,eax + jnz format + +print: + mov al,4 + mov ecx,esp + mov edx,ebx + mov bl,1 + int 0x80 + + ;update fibbo + mov eax,edi + add edi,esi + xchg esi,eax + + ;exit on overflow + jno loop + xchg eax,ebx + int 0x80 |