分类:
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的行为。