-mregparm on gcc doesnt work correctly?
- From: junkoi <spamtrap@xxxxxxxxxx>
- Date: Sun, 30 Mar 2008 21:13:26 -0700 (PDT)
Hi,
I have some expermentals with -mregparm option of gcc. I compile my
code (16bit, if that matters) like this
gcc -mregparm=2 ...
So I expect that the first 2 param of a function is transferred in EAX
and EDX, and from the 3rd params onward the params are put in stack.
So for example calling "function(x,y,z,v)" should put "z" and "v" in
stack.
But by disassembling my gcc-generated code, I surprised to see that it
uses ECX for the 3rd param, and only from 4th param it uses stack. So
in the above example, only "v" is in stack, but not "z" as expected (z
is in ECX!!). How is that possible??
Is there any way to force gcc to use only use stack for the 3rd params
onward, as it seems "-mregparm=2" didnt do what they promised?
So confused!!
I am using gcc 4.1.2 on Linux Ubuntu 7.10
Thanks,
J
.
- Follow-Ups:
- Re: -mregparm on gcc doesnt work correctly?
- From: H. Peter Anvin
- Re: -mregparm on gcc doesnt work correctly?
- Prev by Date: good disassembler for mixed 16bit and 32bit code?
- Next by Date: Get the FAQs
- Previous by thread: good disassembler for mixed 16bit and 32bit code?
- Next by thread: Re: -mregparm on gcc doesnt work correctly?
- Index(es):
Relevant Pages
|