delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/06/24/15:00:20

From: zacharyshort AT hotmail DOT com (ZMAN)
Newsgroups: comp.os.msdos.djgpp,comp.lang.c++,comp.lang.c
Subject: DJGPP reserves wrong int size
Date: 24 Jun 2001 11:53:48 -0700
Organization: http://groups.google.com/
Lines: 37
Message-ID: <9dde68b7.0106241053.2a385311@posting.google.com>
NNTP-Posting-Host: 216.227.178.111
X-Trace: posting.google.com 993408828 30556 127.0.0.1 (24 Jun 2001 18:53:48 GMT)
X-Complaints-To: groups-support AT google DOT com
NNTP-Posting-Date: 24 Jun 2001 18:53:48 GMT
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Please consider the following code:

int main () 
{
int i;
i = 0x12345678;
}

-Yes I am aware there is no return statement even if I do have it in there 
it still messes up.
When I compile this code using:

gcc -c test.c
ld -o test -Ttext 0x0 -e main test.o
objcopy -R .note -R .comment -S -O binary test test.bin

and disassemble it I get the following:


00000000 55                          push ebp
00000001 89E5                        mov ebp,esp
00000003 83EC04                      sub esp,byte +0x18
00000006 C745FC78563412              mov dword [ebp-0x4],0x12345678
0000000D C9                          leave
0000000E C3                          ret

The third line reserves 18 bytes.
And it should reserve 4 bytes because thats the size of an int right?
If you declare a char it still reserves 18 bytes.
Could someone tell me what's going on?  I am loosing my mind!
Line 4 is correct though.

I am compiling this on Windows 98 and ME boxes and still get the same results.
The gcc version number is 2.953
binutills is version 2.11

thanks for any help

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019