BCC Way
double absD (double n)
{
asm
{
fld n
fabs
}
}
GCC Way
double absD (double n)
{
double res;
asm ("fabs;" : "=t" (res) : "0" (n));
return res;
}
И сега да видим какво става на ниско ниво...
BCC Way
; int __cdecl sub_401150(double)
sub_401150 proc near
arg_0= qword ptr 8
push ebp
mov ebp, esp
fld [ebp+arg_0]
fabs
pop ebp
retn
sub_401150 endp
Общо 9 байта...
GCC Way
; int __cdecl sub_401050(double)
sub_401050 proc near
var_8= qword ptr -8
arg_0= qword ptr 8
push ebp
mov ebp, esp
sub esp, 8
fld [ebp+arg_0]
fabs
fstp [ebp+var_8]
fld [ebp+var_8]
leave
retn
sub_401050 endp
Общо 18 байта...