stack frame optimization problem
sprucely
timberdig at gmail.com
Tue Oct 20 14:55:26 PDT 2009
To try to be sure I had the correct syntax I tried the -S option of g++ along with a switch for intel syntax to output the assembly. However the portion corresponding to the inline assembly was still in ATT syntax.
For my resulting D executable I tried using hte, but it would abort after mentioning something about a nonexistent htcfg file. I didn't find much info after a cursory search. I gave up easily because I wasn't sure if I would be able to make proper use of it. Maybe I should take an x86 assembly course.
Vladimir Panteleev Wrote:
> On Tue, 20 Oct 2009 18:45:50 +0300, sprucely <timberdig at gmail.com> wrote:
>
> > This works with g++ and inline ATT assembly, but I have had no such luck
> > in D. I have many simple functions that need to be executed sequentially
> > and have identical stack frames. To avoid the overhead of setting up and
> > tearing down the stack frames I want to jmp from the body of one
> > function to the body of the next. A simplified example...
> >
> > extern(C) byte jumpHere;
> >
> > byte* jumpTo = &jumpHere;
> >
> > void f1()
> > {
> > asm
> > {
> > //jmp dword ptr jumpTo;
> > mov EAX, jumpTo;
> > jmp EAX;
> > //jmp [EAX]
> > }
> > }
> >
> > void f2()
> > {
> > asm{jumpHere:;}
> > }
> >
> > No matter what I try I get a segfault. My assembly skills are very
> > limited. I'm not using the naked keyword yet, because I want to get a
> > proof-of-concept working first. Anyone see anything wrong with this? Any
> > suggestions?
>
> Just disassemble the resulting machine code and look at what's going on.
>
> --
> Best regards,
> Vladimir mailto:thecybershadow at gmail.com
More information about the Digitalmars-d
mailing list