C程序访问ARM汇编程序中的函数

发布者:technology78最新更新时间:2016-04-22 来源: eefocus关键字:C程序  ARM  汇编程序  函数 手机看文章 扫描二维码
随时随地手机看文章
    C程序调用ARM汇编子程序,要做的主要工作有两个:一是在C程序中用关键字EXTERN声明ARM汇编子程序的函数原型(C程序是函数结构的程序设计风格),声明该函数的实现代码在其他文件中;二是在ARM汇编子程序中用伪指令EXPORT导出子程序名,并且用该子程序名最为ARM汇编代码段的标识,最后用“MOV PC,LR”指令返回。这样,在C程序中就可以像调用C函数一样调用该ARM汇编子程序了。

    无论是C语言中的函数名还是ARM汇编语言中的标号,其作用一样,都只是起到表明该函数名或标号存储单元起始地址的作用。

    具体操作步骤如下:

(1)ARM汇编程序中,用该子程序名作为ARM汇编代码段的标识,定义程序代码,最后用“MOV PC,LR”指令返回;

(2)ARM汇编程序中用伪指令EXPORT导出子程序名;

(3)C程序中用关键字EXTERN声明该ARM汇编子程序的函数原型,然后就可在C程序中访问该函数;

(4)函数调用时的参数传递规则:寄存器组中的【R0—R3】作为参数传递而返回值用寄存器R0返回,如果参数数目超过4个,则使用堆栈进行传递。

 

程序清单如下:

// main.c

#include

extern void my_strcpy(const char *src,char *dest);

int main()
{
     char *strsrc = "Welcome to XU";
     char temp[32] = {0}; 
     my_strcpy(strsrc,temp);
     printf("Value of strsrc is: %sn",strsrc);
     printf("Value of temp is: %sn",temp);
     return 0;
}

// asm.s

     area my_strcpy,code,readonly
     export my_strcpy

start
     ldrb r5,[r0],#1
     cmp r5,#0
     beq exit
     strb r5,[r1],#1
     b start
exit
     mov pc,lr
     end

程序在ADS编译环境完美运行成功。

关键字:C程序  ARM  汇编程序  函数 引用地址:C程序访问ARM汇编程序中的函数

上一篇:关于arm-linux-gcc4.4.3在ubuntu11.10下的安装
下一篇:ARM7 2131 BEEP程序分析

推荐阅读最新更新时间:2024-03-16 14:51

智能机专利授权收入增加ARM 4Q获利胜预期
     英国处理器架构研发公司安谋(ARM Holdings)最新发布优于预期的2014年第4季获利表现,并预期包括苹果(Apple)iPhone 6等智慧型手机销售增加,将推升该公司的专利授权费用收入。   根据资料显示,基于该公司架构的微处理器晶片在2014年第4季产量超过35亿颗,使得安谋税前利润超过1.19亿英镑(约合1.82亿美元)、年增25%,优于分析师们此前平均预估的1.13亿英镑。当季收入则年增19%、至2.26亿英镑,授权金(licensing)及权利金(royalties)分占各半。   安谋财务长Tim Score表示,获利成长主要受惠于新技术的专利授权强劲推动,该技术目前主要用于部分高阶智慧
[手机便携]
基于arm11处理器S3C6410内核的linux下串口通信实现
/*例程目的:通过向内核加载独立按键模块,串口通信模块,编写应用程序,使得当按键按下时,arm可以通过串口对外发送数据。已达到arm与其他设备间的串口通信的目的*/ 一、基础知识 1.串口基本知识:串口:计算机上一种非常通用设备通信协议。串口通信:串口按位发送和接收字节。 2.设备驱动:linux下总共有三种设备方式:字符设备,块设备,网络设备。这里串口和键盘都是字符设备。这些设备都在/dev 目录下 。可通过ls -l 来查看设备类型。【crw-rw---- 1 root dialout 4, 64 7月 4 02:53 ttyS0】最前面的c表示他是(char)字符设备。 二、程序编写 1.编写驱动程序:
[单片机]
可削减CPU耗电70%:ARM推big.LITTLE技术
英国ARM公司为削减智能手机及平板终端等CPU耗电量而推出了“big.LITTLE技术”。该技术可相应于终端的处理负荷,分别使用微架构各异的CPU内核群(群集),从而兼顾低耗电量和高性能。 从原理上来说,只要是指令集架构相同的CPU内核均可适用big.LITTLE技术,目前可使用的是Cortex-A15和Cortex-A7的组合。处理性能在必要时用高性能的Cortex-A15执行处理,在空闲时和负荷较低时则用电力效率较高的Cortex-A7(图1)。 图1:切换不同的内核 不同工作频率的利用时间示例 据ARM介绍,当CPU的不同工作频率的利用状况为以下情况时,通过利用big.LITTLE技术,可将C
[半导体设计/制造]
可削减CPU耗电70%:<font color='red'>ARM</font>推big.LITTLE技术
基于ARM9的DVB-S2机顶盒方案研究
1  引言    随着电子技术、计算机技术和信息技术的发展,电视系统的数字化是一个必然的趋势。有媒体报道,美国将在2010年停播模拟电视而全面实现数字电视,虽然我国与其相比落后一些,但全面实现电视系统数字化也是一件为期不远的事。目前,因为数字节目少、技术等原因,我国电视数字化进程还比较慢,这个时期也是我国电视系统数字化技术和资金积累时期。现在虽然市面上有数字电视机顶盒,但它们采用的都是一些企业完整的机顶盒方案,如菲利浦公司、意法半导体公司、富士通公司等机顶盒方案。这些机顶盒的功能简单,仅仅是完成将数字信号转换成模拟电视能接收的信号。本文设计了一款全新的基于ARM9的DVB-S2数字卫星机顶盒,充分利用Sti7109 CPU和P
[家用电子]
arm nandflash&norflash启动原理
部分ARM9的CPU内部都集成有一个SRAM,SRAM是英文Static RAM的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。这样他不需要初始化就能够直接使用。这与我们在外部扩展的大容量的SDRAM是不一样的,外部大容量的SDRAM是需要初始化后才能使用的,这点大家务必要搞清楚。这点在我做过移植的处理器:s3c2410(arm920t),s3c2440(arm920t),at91rm9200(arm920t),at91sam9260(arm926t)上都是这样的。在s3c2440这颗CPU上这个SRAM大小为4KB,datasheet里把它叫做Stepping Stone,江湖人称 起步石 。 N
[单片机]
ARM芯片选择的一般原则
1.1 ARM芯核 如果希望使用WinCE或Linux等操作系统以减少软件开发时间,就需要选择ARM720T以上带有MMU(memory management unit)功能的ARM芯片,ARM720T、StrongARM、ARM920T、ARM922T、ARM946T都带有MMU功能。而 ARM7TDMI没有MMU,不支持Windows CE和大部分的Linux, 但目前有uCLinux等少数几种Linux不需要MMU的支持。 1.2 系统时钟控制器 系统时钟决定了ARM芯片的处理速度。ARM7的处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz- 133MHz,ARM9的处理速度为1.1MI
[单片机]
基于ARM的PWM模块的超声波检测系统的设计
  近年来以微电子学和计算机技术为基础的信息技术飞速发展,超声无损检测仪器也得到了前所未有的发展动力,为了提高检测的可靠性和提高检测效率,研制数字化、智能化、自动化、图像化的超声仪是当今无损检测领域发展的一个重要趋势。而传统的超声波检测仪存在准确性差、精度低、体积大、功耗大、人机界面不友好等问题。而超声波发射与控制电路正是在一种基于ARM的超声波检测系统的基础上,以ARM微控制器为核心,使用C语言编程,方便地实现了发射频率与激励电压脉冲幅度的调节。    1 超声波检测系统的总体设计结构   基于ARM超声波检测系统的总体结构框图,如图1所示。该系统主要由3部分组成:超声波前端发射接收电路、DSP和ARM处理器。   
[单片机]
基于<font color='red'>ARM</font>的PWM模块的超声波检测系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved