分类:
2009-08-24 09:03:33
24.14 MIPS/Debian上嵌入式汇编中自动插入nop充任delay slot
Q:
$ as -v
GNU assembler version 2.17 (mips-linux-gnu) using BFD version 2.17 Debian GNU/Linux
$ gcc-2.95 -v
gcc version 2.95.4 20011002 (Debian prerelease)
--------------------------------------------------------------------------
int main ( int argc, char * argv[] )
{
__asm__ __volatile__
("
text_begin:
lui $3, %hi(0x51211314)
jalr $3
/*
* 我想让这条ori充任delay slot,结果编译下来,在jalr与ori之间自动插入
* 了nop指令充任delay slot,有办法禁止这个行为吗?
*/
ori $3, %lo(0x51211314)
");
return( 0 );
} /* end of main */
--------------------------------------------------------------------------
$ gcc-2.95 -Wall -pipe -o mips_inline_asm mips_inline_asm.c
$ gdb ./mips_inline_asm
(gdb) x/4i text_begin
0x400748 : lui v1,0x5121
0x40074c : jalr v1
0x400750 : nop // 自动插入nop充任delay slot
0x400754 : ori v1,v1,0x1314
(gdb)
编译过程中as自动在jalr指令后面插入nop充任delay slot,但这个行为干挠了我的
实验,有无办法禁止这种自动插入nop充任delay slot的行为。