[Top] [All Lists]

Re: Assembly macro with parameters

To: Fabrizio Fazzino <>
Subject: Re: Assembly macro with parameters
From: Ralf Baechle <>
Date: Thu, 7 Apr 2005 19:25:49 +0100
In-reply-to: <>
Original-recipient: rfc822;
References: <>
User-agent: Mutt/1.4.1i
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


<Prev in Thread] Current Thread [Next in Thread>