KEIL C51环境下,汇编与C语言交叉编译的问题
2012-07-20 00:23
405 查看
1. 关于如何在C语言中嵌入汇编命令:
转载自:http://www.keil.com/support/docs/2308.htm
C51 All Versions
ENDASM directives. I have read some of the knowledgebase articles relating to this problem, but I still cannot get it to work.
The following rules apply to C51 inline assembly:
To use #pragma ASM/ENDASM, you must set the Generate Assembler SRC File andAssemble SRC File source file compile options in µVision by right-clicking your source file name in the Project Workspace and selectingOptions
for File.
When using the Generate Assembler SRC File and Assemble SRC File options in µVision, if there are no other C modules in your project, you must manually include the C51 Run-Time Library (C51S.LIB, C51M.LIB, or C51L.LIB).
Refer to Interfacing C to Assembler in the Cx51 User's Guide.
GENERAL: SRC DIRECTIVE
BL51: WARNING L1 (UNRESOLVED EXTERNAL) USING INLINE ASSEMBLY
C51: INLINE ASSEMBLY GENERATES TARGET OUT OF RANGE
C51: IN-LINE ASM GIVES COMPILER WARNINGS
Asembly code in C
Last Reviewed: Thursday, July 17, 2008
2. 关于如何将C语言源文件转化为汇编文件:
--转载自:http://blog.21ic.com/user1/6088/archives/2010/68469.html
方法:(假设当前工程中只有一个C代码文件)
第1步:新建一个工程,添加C文件,编译通过
第2步:右击Keil界面中Project Workspace里的C文件名,选择‘Option
for…’
第3步:点击‘Generate Assembler SRC File’‘Assemble
SRC File’两个三态复选框使它们呈高亮并勾选,点击确定
第4步:将KEIL安装目录下C51/LIB/C51S.LIB(如果是SMALL模式)文件复制到工程目录下
第5步:添加库文件C51S.LIB文件到工程,即右击‘Source
Group 1’,选择‘Add Files to Group …’,在工程目录下选择C51S.LIB,点击打开
(因为有了第3步中的操作,如果在这里不添加库文件,则编译生成的HEX文件不能被单片机正确执行,同时编译时会出现一个警告:
WARNING L1:UNRESOLVED EXTERNAL SYMBOL
SYMBOL: ?C_STARTUP
无法识别?C_STARTUP这个标号,这个标号是在库文件中定义
)
第6步:打开工程目录,可以看到新生成一个扩展名为.SRC的文件,将其扩展名改成.A51
第7步:添加这个.A51文件到工程(这时候工程就包含C51S.LIB库文件,不然编译会产生第5步中说明的警告,且生成的HEX文件不能被单片机正确运行)
第8步:重新编译,生成HEX文件,加载到单片机中,可以发现与C语言运行的现象是一致的
转载自:http://www.keil.com/support/docs/2308.htm
C51: GETTING INLINE ASSEMBLY TO WORK
Information in this article applies to:C51 All Versions
QUESTION
How do I implement inline assembly in C51 using the ASM andENDASM directives. I have read some of the knowledgebase articles relating to this problem, but I still cannot get it to work.
ANSWER
The following example program, MAIN.C, demonstrates some simple inline assembly.void main(void){ test(); #pragma asm JMP $ ; endless loop #pragma endasm }
The following rules apply to C51 inline assembly:
To use #pragma ASM/ENDASM, you must set the Generate Assembler SRC File andAssemble SRC File source file compile options in µVision by right-clicking your source file name in the Project Workspace and selectingOptions
for File.
When using the Generate Assembler SRC File and Assemble SRC File options in µVision, if there are no other C modules in your project, you must manually include the C51 Run-Time Library (C51S.LIB, C51M.LIB, or C51L.LIB).
MORE INFORMATION
Refer to ASM in the Cx51 User's Guide.Refer to Interfacing C to Assembler in the Cx51 User's Guide.
SEE ALSO
C51: PROBLEMS WITH #PRAGMA ASMGENERAL: SRC DIRECTIVE
BL51: WARNING L1 (UNRESOLVED EXTERNAL) USING INLINE ASSEMBLY
C51: INLINE ASSEMBLY GENERATES TARGET OUT OF RANGE
C51: IN-LINE ASM GIVES COMPILER WARNINGS
FORUM THREADS
The following Discussion Forum threads may provide information related to this topic.Asembly code in C
Last Reviewed: Thursday, July 17, 2008
2. 关于如何将C语言源文件转化为汇编文件:
--转载自:http://blog.21ic.com/user1/6088/archives/2010/68469.html
方法:(假设当前工程中只有一个C代码文件)
第1步:新建一个工程,添加C文件,编译通过
第2步:右击Keil界面中Project Workspace里的C文件名,选择‘Option
for…’
第3步:点击‘Generate Assembler SRC File’‘Assemble
SRC File’两个三态复选框使它们呈高亮并勾选,点击确定
第4步:将KEIL安装目录下C51/LIB/C51S.LIB(如果是SMALL模式)文件复制到工程目录下
第5步:添加库文件C51S.LIB文件到工程,即右击‘Source
Group 1’,选择‘Add Files to Group …’,在工程目录下选择C51S.LIB,点击打开
(因为有了第3步中的操作,如果在这里不添加库文件,则编译生成的HEX文件不能被单片机正确执行,同时编译时会出现一个警告:
WARNING L1:UNRESOLVED EXTERNAL SYMBOL
SYMBOL: ?C_STARTUP
无法识别?C_STARTUP这个标号,这个标号是在库文件中定义
)
第6步:打开工程目录,可以看到新生成一个扩展名为.SRC的文件,将其扩展名改成.A51
第7步:添加这个.A51文件到工程(这时候工程就包含C51S.LIB库文件,不然编译会产生第5步中说明的警告,且生成的HEX文件不能被单片机正确运行)
第8步:重新编译,生成HEX文件,加载到单片机中,可以发现与C语言运行的现象是一致的
相关文章推荐
- KEIL C51环境下,汇编与C语言交叉编译的问题
- 交叉编译环境下gcc编译汇编文件
- 在Ubuntu下安装imx6linux系统的交叉编译环境遇到的问题总结
- openwrt 问题六 搭建自己的交叉编译环境
- 建立自己的交叉编译环境(米搞定,但解决了其中出现的很多问题)
- 搭建嵌入式交叉环境编译出现的问题
- redhat下搭建交叉编译环境一个问题
- ubuntu下搭建rtems交叉编译环境所遇到的问题
- arm汇编--ubuntu12.04 安装arm-linux交叉编译环境
- 一个搭建交叉编译环境的问题帖
- SEED-DVS6467_SDK的交叉编译环境搭建问题
- KEIL编译器【C语言编译选项优化等级说明】【支持C99(变量声明在执行语句之后)】【反汇编设置】【C语言联合汇编】
- tiny6410 ubuntu下交叉编译环境的建立问题
- 编译工具和交叉编译环境配置-基本问题和认识
- 交叉编译环境搭建时,请注意虚拟机版本问题
- 关于keil编译cortex-m3纯汇编时为什么问题使用align地址问题
- 联发科Linkit 7688 (一) 上手及在Mac下搭建OpenWrt交叉编译环境,C语言编译Hello,World
- a33开发板下 交叉编译环境编译问题解决
- 【单片机笔记】keil c51编译环境不能跳转函数的解决办法
- keil C51环境下,液晶某些汉字不显示问题