ins instruction is not produced in the assembly code (mips32r2)

fanqifei fanqifei@gmail.com
Fri Dec 18 10:57:00 GMT 2009


Is there anyone can help?
I am curious about how the insv pattern can be used in the compiling process.
Otherwise, I have to write inline assembly code.
Thanks very much!

2009/12/16 fanqifei <fanqifei@gmail.com>:
> Hello,
> I am tring to compile a small c file using gcc4.1.2.
> The source code:
> struct test_foo {
> unsigned int a:18;
> unsigned int b:2;
> unsigned int c:12;
> };
>
> struct test_foo x;
> unsigned int foo()
> {
>     unsigned int a=x.b;
>     x.b=2;
>     return a;
> }
>
> the command: mipsel-linux-gcc -mips32r2 -O2 -c -Wall foo.c -o foo.o
>
> The corresponding disassembly code:
> foo.o:     file format elf32-tradlittlemips
> Disassembly of section .text:
> 00000000 <foo>:
>    0:   3c1c0000    lui gp,0x0
>    4:   279c0000    addiu   gp,gp,0
>    8:   0399e021    addu    gp,gp,t9
>    c:   8f850000    lw  a1,0(gp)
>   10:   3c03fff3    lui v1,0xfff3
>   14:   3463ffff    ori v1,v1,0xffff
>   18:   8ca20000    lw  v0,0(a1)
>   1c:   3c040008    lui a0,0x8
>   20:   00431824    and v1,v0,v1
>   24:   00641825    or  v1,v1,a0
>   28:   7c420c80    ext v0,v0,0x12,0x2
>   2c:   03e00008    jr  ra
>   30:   aca30000    sw  v1,0(a1)
> The statement x.b=2 can be simply translated to lb and ins instructions( ins
> is in mips32r2).
>
> I wonder how ins instrution can be produced.
> More specifically, how can gcc generates the insv pattern in RTL?
> Is it related to the coding style -- using bit filed or logical
> operations(shift, and ...)?
> Thanks.
> Qifei
>
>



-- 
        Qifei Fan



More information about the Gcc-help mailing list