[lug] C++ inline asm on g++
Kelly Brock
krbrock at pacbell.net
Thu Jan 10 21:46:38 MST 2002
Hi,
> Kelly> The simple reason is that I want to maintain
> the encapsulation
> Kelly> of the function. It's 15 lines of assembly and it's the only
> Kelly> thing stopping an entire set of systems from working under
> Kelly> Linux.
>
> That makes sense.
> There may be a way to do it -- I'm not an expert on inline asm in gcc.
> However, if there is a way, it doesn't seem to be documented.
Ack. =( I really don't want two completely separate branches of the code
simply because of one function...... Everything else coexists nicely
without problems, but this *ONE* function is a problem.. =( (It's mucks
with the stack *and* the program/stack pointers to get it's job done.
Prolog/Epilog screws that up big time.)
> One idea would be to extend __attribute__((naked)) to work for other
> targets. I have no idea whether this would be accepted by the gcc
> maintainers. Your best bet is to ask on the gcc list:
Asking this means that I have to make the code 'version' dependant. The
whole idea of this is to be version/platform independant. So... I'm not
sure what to do, the only answer right now seems to be make a .s file with
the assembly in it and change calling characteristics for *just* that one
function. Considering that the entire set of systems depends on this single
function, it makes a mess of things. Perhaps a macro can make it at least
*look* clean. (Note: I'm a stickler, I want effective, clean and generally
very easy to understand code as the basis to all of this. This *one*
function is the only problem right now..)
I'll try to figure out an alternative I guess. Seems unlikely that this
particular item will have a clean conversion.. =(
Regards,
Kelly Brock
The Sims Online
Maxis - Electronic Arts
More information about the LUG
mailing list