%@ Page Language="VB" ContentType="text/html" ResponseEncoding="gb2312" %>
工业级品质的ARM平台 |
稳定源于品质,品质源于理解,理解源于学习,我们致力于打造氛围良好的ARM学习平 台,让每一个使用我们产品的工程师能做出高品质、高稳定的作品。 |
2007年10月16日 4:52 |
首页 | 关于我们 | ARM资讯 | ARM学园 | 联系方式 | 购买指南 |
|---|
ARM9系列 |
|---|
| ARM9263开发平台 |
| ARM9263学习板 |
| ARM9263工业板 |
| ATARM9263试验板 |
| ARM7系列 |
| ARM7202开发平台 |
| ARM7202学习板 |
| ARM7202工业板 |
| ARM7202试验板 |
| 微型打印机系列 |
| 针打系列 |
| 热敏系列 |
| 液晶系列 |
公告 这是一个学习的园地,所列文章仅用于学术目的,未经许可,不得用于商业目的。 |
|---|
ARM汇编语言与C/C++的混合编程
汇编语言与 C/C++ 的混合编程通常有以下几种方式: - 在 C/C ++代码中嵌入汇编指令。 - 在汇编程序和 C/C ++的程序之间进行变量的互访。 - 汇编程序、 C/C ++程序间的相互调用。 在以上的几种混合编程技术中,必须遵守一定的调用规则,如物理寄存器的使用、参数的传递等,这对于初学者来说,无疑显得过于烦琐。在实际的编程应用中,使用较多的方式是:程序的初始化部分用汇编语言完成,然后用 C/C ++完成主要的编程任务,程序在执行时首先完成初始化过程,然后跳转到 C/C ++程序代码中,汇编程序和 C/C ++程序之间一般没有参数的传递,也没有频繁的相互调用,因此,整个程序的结构显得相对简单,容易理解。以下是一个这种结构程序的基本示例,该程序基于第五、六章所描述的硬件平台: ;************************************************************************* ; Institute of Automation, Chinese Academy of Sciences ;File Name: Init.s ;Description: ;Author: JuGuang,Lee ;Date: ;************************************************************************ IMPORT Main ; 通知编译器该标号为一个外部标号 AREA Init,CODE,READONLY ;定义一个代码段 ENTRY ;定义程序的入口点 LDR R0,=0x3FF0000 ;初始化系统配置寄存器,具体内容可参考第五、六章 LDR R1,=0xE7FFFF80 STR R1,[R0] LDR SP,=0x3FE1000 ;初始化用户堆栈,具体内容可参考第五、六章 BL Main ;跳转到 Main ()函数处的 C/C++ 代码执行 END ;标识汇编程序的结束 以上的程序段完成一些简单的初始化,然后跳转到 Main ()函数所标识的 C/C ++代码处执行主要的任务,此处的 Main 仅为一个标号,也可使用其他名称,与 C 语言程序中的 main ()函数没有关系。 /******************************************************************************* * Institute of Automation, Chinese Academy of Sciences * File Name: main.c * Description: P0,P1 LED flash. * Author: JuGuang,Lee * Date: ******************************************************************************/ void Main(void) { int i; *((volatile unsigned long *) 0x3ff5000) = 0x0000000f; ARM 应用系统开发详解──基于 S3C4510B 的系统设计 56 while(1) { *((volatile unsigned long *) 0x3ff5008) = 0x00000001; for(i=0; i<0x7fFFF; i++); *((volatile unsigned long *) 0x3ff5008) = 0x00000002; for(i=0; i<0x7FFFF; i++); } } |
|---|
| 返回 |
|---|