...
tipeFloat.c
tipeFloat.asm
tipeFloat.c
#include <stdio.h>
#include <float.h>
int main(){
printf("Storage size for float : %d \n", sizeof(float));
printf("Minimum float positive value: %E\n", FLT_MIN );
printf("Maximum float positive value: %E\n", FLT_MAX );
printf("Precision value: %d\n", FLT_DIG );
return 0;
}
/* OUTPUT
Storage size for float : 4
Minimum float positive value: 1.175494E-38
Maximum float positive value: 3.402823E+38
Precision value: 6
*/
tipeFloat.asm
; => ASM from IDA
; Attributes: bp-based frame
; int __cdecl main(int argc, const char **argv, const char **envp)
public main
main proc near
var_8= qword ptr -8
push rbp
mov rbp, rsp
sub rsp, 10h
mov esi, 4
mov edi, offset format ; "Storage size for float : %d \n"
mov eax, 0
call _printf
mov rax, 3810000000000000h
mov [rbp+var_8], rax
movsd xmm0, [rbp+var_8]
mov edi, offset aMinimumFloatPo ; "Minimum float positive value: %E\n"
mov eax, 1
call _printf
mov rax, 47EFFFFFE0000000h
mov [rbp+var_8], rax
movsd xmm0, [rbp+var_8]
mov edi, offset aMaximumFloatPo ; "Maximum float positive value: %E\n"
mov eax, 1
call _printf
mov esi, 6
mov edi, offset aPrecisionValue ; "Precision value: %d\n"
mov eax, 0
call _printf
mov eax, 0
leave
retn
main endp
; => ASM 2 C
; int main(){
; Attributes: bp-based frame
; int __cdecl main(int argc, const char **argv, const char **envp)
public main
main proc near
var_8= qword ptr -8 ; 8 bytes
push rbp ; 64 bit
mov rbp, rsp
sub rsp, 10h ; 16
; printf("Storage size for float : %d \n", sizeof(float))
mov esi, 4 ; sizeof(float)
mov edi, offset format ; "Storage size for float : %d \n"
mov eax, 0 ; ?
call _printf
; printf("Minimum float positive value: %E\n", FLT_MIN)
mov rax, 3810000000000000h ; 4039728865751334912
mov [rbp+var_8], rax ; [rbp+8]
movsd xmm0, [rbp+var_8] ; xmm0? movsd? (double word (4 byte) operation)
mov edi, offset aMinimumFloatPo ; "Minimum float positive value: %E\n"
mov eax, 1 ; sys_exit
call _printf
; printf("Minimum float positive value: %E\n", FLT_MAX)
mov rax, 47EFFFFFE0000000h ; 5183643170566569984
mov [rbp+var_8], rax ; [rbp+8]
movsd xmm0, [rbp+var_8] ; xmm0?
mov edi, offset aMaximumFloatPo ; "Maximum float positive value: %E\n"
mov eax, 1 ; sys_exit
call _printf
; printf("Precision value: %d\n", FLT_DIG)
mov esi, 6 ; FLT_DIG
mov edi, offset aPrecisionValue ; "Precision value: %d\n"
mov eax, 0 ; ?
call _printf
; return 0
mov eax, 0
leave
retn
main endp
Tidak ada komentar:
Posting Komentar