At 10:37 2007-03-11, rakasi saiprasad wrote:
>Hi,
>
>I was looking into the assembly code of a add function that I have written.
>The function takes two integers as input and outputs an integer, which is
>the sum of the two inputs. I am declaring 3 local varibles in the function,
>2 to hold input and one for the output . The disassembly code shown for the
>same in visual studio 6 is as follows.
vs6 is a very old compiler, I have NO idea what it's doing
why did you allocate ANY local variables??
I see that you were apparently using "debug" compile
nobody really cares how much memory a compiler uses then...
>-----------------------------------------------------------------------------
>25: int add(int a, int b){
>00401610 push ebp
>00401611 mov ebp,esp
>00401613 sub esp,44h *// allocating / reserving 68 bytes ?
>*00401616 push ebx
>00401617 push esi
>00401618 push edi
>00401619 lea edi,[ebp-44h]
>0040161C mov ecx,11h
>00401621 mov eax,0CCCCCCCCh
>00401626 rep stos dword ptr [edi]
>26:
>27: int c;
>28:
>29: c= a+b;
>00401628 mov eax,dword ptr [ebp+8]
>0040162B add eax,dword ptr [ebp+0Ch]
>0040162E mov dword ptr [ebp-4],eax
>30: return c;
>00401631 mov eax,dword ptr [ebp-4]
>31:
>32:
>33: }
>00401634 pop edi
>00401635 pop esi
>00401636 pop ebx
>00401637 mov esp,ebp
>00401639 pop ebp
>0040163A ret
>-----------------------------------------------------------------------------
> 1) My question is why did the compiler allocated 68 bytes while I have only
>3 integer variables in my function = 3*4 = 12 bytes?
>2) Though it allocates the 68 bytes instead of 12, it never refers to any
>thing other than those 12 bytes?
>
>Thanks in advance,
>Sai.
>
>
>[Non-text portions of this message have been removed]
>
>
>
>
>To unsubscribe, send a blank message to
><mailto:[EMAIL PROTECTED]>.
>Yahoo! Groups Links
>
>
>
Victor A. Wagner Jr. http://rudbek.com
The five most dangerous words in the English language:
"There oughta be a law"