On Wed, Sep 24, 2003 at 03:04:56PM +0900, ?$B9uDE ?$B4pLo wrote:
> The following code is from
> Could anyone tell how the difference between %z0 ("Jr")
> and %0 ("r") is?
> I compiled this code and deassemble the object, but I
> can't find any
> difference with my toolchains(gcc-2.95.3, binutils-2.11).
> static inline void set_context(unsigned long val)
> __asm__ __volatile__(
> ".set push\n\t"
> ".set reorder\n\t"
> "mtc0 %z0, $4\n\t"
> ".set pop"
> : : "Jr" (val));
%z0 is just like %0 except if %0 has the value of 0 the compiler will insert
register $0. "Jr" mean the compiler can either use a register or the
constant zero. Both combined mean the compiler will not waste a real
register but use $zero.