diff options
Diffstat (limited to 'ellipse2.asm')
| -rw-r--r-- | ellipse2.asm | 122 |
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 |