From: xu l. <sup...@gm...> - 2007-09-18 05:22:27
|
61 pushl %ebp // new_stack[new_esp--] <- ebp 62 63 movl %esp,%ebp // FP -> Caller's SP 64 addl $12,%ebp // FP -> FP slot 66 call *%eax // branch to RVM in the line of 64, why add 12 to ebp,? I changed 12 to 16, it seemed that there's no error, RVM can run programm yet. |
From: Michael B. <mik...@cs...> - 2007-09-18 22:57:26
|
Hi Xu, I think you're right that the value of EBP makes no difference, as of Jikes RVM 2.0.2. Here's an item from the 2.0.2 release notes: -- Change in IA32 register convention to make EBP a nonvolatile regster (RVM 2.0.2 does not use a register to hold the framepointer on IA32). So VM.boot(), the callee of line 66 below, doesn't expect EBP to be the frame pointer (instead, compiled code will load the frame pointer from the stack). cheers, Mike PS Could you please give your affiliation? On Tue, 18 Sep 2007, xu li wrote: > 61 pushl %ebp // new_stack[new_esp--] <- ebp > 62 > 63 movl %esp,%ebp // FP -> Caller's SP > 64 addl $12,%ebp // FP -> FP slot > > 66 call *%eax // branch to RVM > in the line of 64, why add 12 to ebp,? I changed 12 to 16, it seemed that > there's no error, RVM can run programm yet. > |