Chinaunix首页 | 论坛 | 博客
  • 博客访问: 772411
  • 博文数量: 265
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1985
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-13 12:33
文章分类

全部博文(265)

文章存档

2011年(1)

2010年(66)

2009年(198)

我的朋友

分类:

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



类别:
阅读(1340) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~