On Thu, Apr 07, 2005 at 07:53:49PM +0200, Fabrizio Fazzino wrote: > Hi all, > I'm working to an hardware extension of the MIPS32 instruction set > and I need to convert my new instruction into an existing opcode > to make it possible for the normal GCC to correctly compile the code. > > Just to be clear, to obtain my new FZMIN instruction like > > FZMIN $rd, $rs, $rt > > I have to convert it into > > LWC1 $rt, rd<<11 ($rs) > > that is an existing (in some cases unused) opcode. > > I'm currently using hardcoded values for the parameters, so > fzmin(10,8,9) will be transformed into > asm("lwc1 $9, 10<<11($8)" : : : "$10"); > > It works, but I need a way to set the values of the parameters > at runtime; so I've tried the following macro: > > #define fzmin(rd, rs, rt) asm("lwc1 $rt, rd<<11($rs)"); Which will leave the assembler entirely unimpressed ;-) > As you can imagine I'm not an expert of MIPS Assembly macros: > what I've written does NOT work since the values of rd,rs,rt > are NOT substituted inside the asm string. > > Is there any way to do what I need? I would appreciate your > help very much. Unless you only have a few instructions and are going for a quick hack I really suggest to add proper support for these instructions to binutils. Having working support in as, gdb, objdump will make your life so much easier. Ralf