打印

IAR 嵌入汇编问题

[复制链接]
2500|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ljfxmu|  楼主 | 2013-11-20 18:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
airwill| | 2013-11-20 21:08 | 只看该作者
这些是编译器内部定义的地址, 可以定义成外部变量, 如:

        EXTERN  _bss
        EXTERN  _ebss      

使用特权

评论回复
板凳
ljfxmu|  楼主 | 2013-11-20 21:38 | 只看该作者
airwill 发表于 2013-11-20 21:08
这些是编译器内部定义的地址, 可以定义成外部变量, 如:

        EXTERN  _bss




这个原先就有定义过了,还有木有其他可能这个问题折腾了好久

使用特权

评论回复
地板
ljfxmu|  楼主 | 2013-11-20 21:55 | 只看该作者
完整函数如下:
/*---------------------------------------------------------------------------*/
void
reset_handler(void)
{
  unsigned long *pul_src, *pul_dst;

  REG(SYS_CTRL_EMUOVR) = 0xFF;

  /* Copy the data segment initializers from flash to SRAM. */
  pul_src = &_etext;

  for(pul_dst = &_data; pul_dst < &_edata;) {
    *pul_dst++ = *pul_src++;
  }

  /* Zero-fill the bss segment. */
  __asm("    ldr     r0, =_bss\n"
        "    ldr     r1, =_ebss\n"
        "    mov     r2, #0\n"
        "    .thumb_func\n"
        "zero_loop:\n"
        "        cmp     r0, r1\n"
        "        it      lt\n"
        "        strlt   r2, [r0], #4\n"
        "        blt     zero_loop");

  /* call the application's entry point. */
  main();

  /* End here if main () returns */
  while(1);
}
/*---------------------------------------------------------------------------*/

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

8

帖子

0

粉丝