summaryrefslogtreecommitdiff
path: root/ellipse2.asm
diff options
context:
space:
mode:
Diffstat (limited to 'ellipse2.asm')
-rw-r--r--ellipse2.asm122
1 files changed, 0 insertions, 122 deletions
diff --git a/ellipse2.asm b/ellipse2.asm
deleted file mode 100644
index 1f16360..0000000
--- a/ellipse2.asm
+++ /dev/null
@@ -1,122 +0,0 @@
-extern printf
-extern puts
-
-global main
-
-struc ellipse
- .major: resq 1
- .minor: resq 1
- .area: resq 1
- .circumference: resq 1
- .eccentricity: resq 1
-endstruc
-
-section .data
-pi: dq 3.14
-bottom: dq 0
-format: db "number: %d", 10, 0 ; g
-usage_error_message: db "usage: ellipse major minor", 10, 0
-e:
- istruc ellipse
- at ellipse.major, dq 0
- at ellipse.minor, dq 0
- at ellipse.area, dq 0
- at ellipse.circumference, dq 0
- at ellipse.eccentricity, dq 0
- iend
-.size: dd $ - e
-
-;section .rodata ; noexec nowrite align=4
-;pi: dq 3.141592653589793238462
-
-section .bss
-
-section .text
-main:
- ; if (argv != 3)
- cmp rdi, 3
- jne usage_error
-
- mov r12, rsi ; argv
-
- ; major = argv[1]
- mov rdi, [r12 + 8]
- mov qword [e + ellipse.major], rdi
-
- ; major = argv[2]
- mov rdi, [r12 + 16]
- mov qword [e + ellipse.minor], rdi
-
- ; area = pi * major * minor
-; movss xmm0, [e + ellipse.major]
-; movss xmm1, [e + ellipse.minor]
-; addss xmm0, xmm1
-; mov qword [e + ellipse.area], xmm3
-
-; cvtsi2sd xmm0, [e + ellipse.major]
-; cvtsi2sd xmm1, [e + ellipse.minor]
-; addsd xmm0, xmm1
- sub rsp, 8
- movq xmm0, qword [e + ellipse.major]
- mov rdi, format
- mov rax, 1
- call printf
- add rsp, 8
-
-; .repeat:
- lea edi, [rbx + 0]
- call print_uint32
- ; dec ebx
- ; jge .repeat
-
- xor edi, edi
- mov eax, 231 ; 0x60
- syscall
-
- ; mov rax, 60
- ; mov rdi, 0
-
- ; syscall
-
-; void print_uint32(uint32_t edi)
-;
-; https://stackoverflow.com/questions/13166064/how-do-i-print-an-integer-in-assembly-level-programming-without-printf-from-the
-print_uint32:
- mov eax, edi
-
- mov ecx, 0xa
- push rcx
- mov rsi, rsp
- sub rsp, 16
-
-.to_ascii_digit:
- xor edx, edx
- div ecx
-
- add edx, '0'
- dec rsi
- mov [rsi], dl
-
- test eax, eax
- jnz .to_ascii_digit
-
- mov eax, 1
- mov edi, 1
- lea edx, [rsp + 16 + 1]
- sub edx, esi
- syscall
-
- add rsp, 24
- ret
-
- jmp done
-
-usage_error:
- mov rdi, usage_error_message
- call puts
-
-done:
- mov rax, 60
- mov rdi, 0
-
- syscall