Chinaunix首页 | 论坛 | 博客
  • 博客访问: 584828
  • 博文数量: 119
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1583
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 09:18
文章分类

全部博文(119)

文章存档

2011年(3)

2010年(21)

2009年(44)

2008年(51)

我的朋友

分类:

2009-02-13 11:08:20

天灵灵 发表于 2009-2-12 15:36 ST MCU 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

楼主: 如何在MDK 下嵌入汇编语言?

请问在 MDK 下如何嵌入 汇编程序?
参考帮助文件 __asm { .... ..... }
提示错误:..\..\source\common.c(458): error: #1113: Inline assembler not permitted when generating Thumb code

是否那里还需要设置?


天灵灵 发表于 2009-2-12 16:09 ST MCU 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

2楼: 请教香水城 版主!

请教香水城 版主!


香水城 发表于 2009-2-12 16:13 ST MCU 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

3楼: 错误提示不是很清楚吗:不允许在Thumb模式使用嵌入汇编

 

签名:


computer00 发表于 2009-2-12 16:18 ST MCU 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

4楼: 改成ARM模式试试。应该是在工程选项里面设置的。

 

签名:

***********************声明*********************
本人所有发言均为个人观点。由此帖带来的后果,    
本人一般不予负责。在您相信本帖之前,请慎重考虑!
                                     
                                      Computer00 
访问电脑圈圈的USB专区


访问电脑圈圈的博客

天灵灵 发表于 2009-2-12 16:21 ST MCU 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

5楼: 那要怎么改啊 ?

我这里好像就是ARM模式的啊

在那里改,请教下!!

我看帮助文件里写的是
在程序头和尾加入

#pragma arm
   
汇编代码

#pragma thumb

式过了不好用 提示错误 ,处理器不支持
..\..\source\common.c(455): error:  #1114-D: this feature not supported on target architecture/processor

* - 本贴最后修改时间:2009-2-12 16:27:34 修改者:天灵灵


lut1lut 发表于 2009-2-12 17:41 ST MCU 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

6楼: 内联汇编和内嵌汇编

LZ顶楼的错误在于,__asm("指令");这种语法是内联汇编的语法。

而RMDK下,内联汇编仅支持ARM汇编语言,不支持Thumb或者Thumb-2汇编语言;但内嵌汇编器支持Thumb和Thumb-2。

LZ5楼的错误在于,“target architecture/processor”及STM32的core cortex-M3是thumb-2指令,所以不支持ARM模式。

因此,对于STM32 在RMDK工具下,只能采用内嵌汇编的方式。

举例如下:

__asm void wait()
{
    nop
    BX lr
}

然后在之后的C代码中调用该函数:

void delay()
{
wait();
}


Airwill 发表于 2009-2-12 20:57 ST MCU 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

7楼: 我也撞墙了才研读编译器说明而搞明白这点

不清楚, 为什么RMDK的内联汇编不支持Thumb


天灵灵 发表于 2009-2-13 10:13 ST MCU 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

8楼: 非常感谢 6楼 lut1lut

非常感谢
6楼 lut1lut
我已经测试成功了!

我对 “内联汇编和内嵌汇编” 概念不是很清楚。
你讲的很好,很明了。
再次感谢 lut1lut 及 在本楼回帖的朋友们!!!

开心!!
阅读(8768) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-06-05 20:46:43

6楼所说的办法在写bootloader 地址跳转可以用吗?我在用 BL 0x08001000 指向用户区的地址!但始终没得到执行?请问是什么原因!?????