This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

I really need help!


I am not sure if I should send this mail to here.

I use gcc (2.95.3) compile a file which include a
function start(), 
the C file is:
/* Hardware boot loader */
void start(void)
{
	asm ("movl %esp, 0x5000");
	for (;;)
	{
        	/* do whatever I want, such as call foo() */
		foo();
	}
}
foo()
{
   ...
}

the command line used to compile :
gcc -O3 -nostdlib -e start -o bootldr.out bootldr.c
objdump -d bootldr.out > bootldr.asm

the ASM output is:
	push %ebp
	mov  %esp, %ebp
	mpv  %esp, 0x5000
	...


My question is how can I get ride of the first two ASM
instructions? I want the compiler to compile my
inlined ASM instruction as the first instruction in
the start() function, and the other function just as
general output.
 
My reason that I want to get ride of those instruction
si:
   I provided -e start to tell compiler that program
should start run from start(). There is no other
function will call this start(), It is the first
function which was run after power on. The first two
ASM instructions are useless. Seriosly, they are
harmful!!!
Because when an embedded system power on, it runs from
start(), the stack pointer is undefined at this time,
it may points to some place where do NOT have memory
at all! so the push instruction will generate
exception! So, I need the compiler to generate start()
which the first instruction is my inline assembler!
    I checked the GCC online manual, but I can't find
how to make gcc works as what I want.
    Anyone who can tell me how to do that?

Thanks a lot,

Gavin

__________________________________________________
Do You Yahoo!?
Make a great connection at Yahoo! Personals.
http://personals.yahoo.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]