当前位置: 首页 > news >正文

医院网站建设思路网站开发需求方案模板

医院网站建设思路,网站开发需求方案模板,智慧团建学生登录入口,有了自己的网站怎样做后台在一些嵌入式场合,我们经常看到C程序和汇编程序相互调用,混合编程,如在ARM启动代码中,系统上电首先运行的是汇编代码,等初始化好内存堆栈环境之后,才会跳到C程序中执行,对嵌入式软件进行优化时&…

在一些嵌入式场合我们经常看到C程序汇编程序相互调用混合编程ARM启动代码系统上首先运行汇编代码等初始化好内存堆栈环境之后才会C程序执行嵌入式软件进行优化在一些性能要求比较高场合通常会C语言内嵌一些汇编代码作为一名嵌入式工程师掌握C语言汇编混合编程还是有必要

3.6.1 ATPCS规则

无论是汇编程序调用C程序还是C程序中调用汇编往往都要涉及子程序调用子程序返回参数传递这些问题从指令层面C语言汇编语言两种其实无差别最终都会被翻译二进制机器指令学习C语言ARM汇编语言混合编程之前我们需要了解一下ATPCS规则

ATPCS全称ARM-thumb procedure call standard, 核心内容就是定义ARM子程序调用基本规则以及堆栈使用约定ATPCS规定ARM程序使用递减堆栈入栈/出栈操作使用STMFD/LDMFD指令只要有的程序都遵循这个约定ARM程序格式也就统一我们编写ARM程序也就可以各种各样ARM处理器运行

ATPCS最重要内容就是定义了子程序调用具体规则无论是程序员编写程序还是编译器开发商开发编译器工具一般都要遵循规则主要内容如下

1 子程序间要通过寄存器R0-R3 传递参数,当参数大于4个时,剩余的参数使用堆栈来传递。

2 子程序通过r0-r1返回结果

3 子程序使用r4-r11来保存局部变量

4 r12作为调用过程中的临时寄存器,一般用来保存函数的栈帧基址,记作FP。

5 r13作为堆栈指针寄存器,一般记作SP

6 R14作为链接寄存器,用来保存函数调用者的返回地址,记作LR。

7 R15作为程序计数器,总是指向当前正在运行的指令,记作PC。

在ARM平台下,无论是C程序,还是汇编程序,只要大家遵守ARM子程序之间的参数传递和调用规则,就可以很方便的在C程序中调用汇编子程序,或者在一个汇编程序中调用C程序。

    我们在main.c 中定义了main函数和sum函数,在一个汇编文件SUM.S中定义了一个汇编子程序SUM_ASM。  main() 函数中我们直接调用汇编子程序SUM._ASM SUM_ASM汇编代码实现中调用C源文件定义sum 函数使用较差编译器arm-linux-gcc编译这两个源文件运行

IMPORT sum;

AREA SUM_ASM,CODE,READONLY

EXPORT SUM_ASM

SUM_ASM

STR LR.[SP, #-4] ;变量

LDR R0,=0x3

LDR R1, =0x4

BL sum

LDR PC,[SP],#4

END

int sum(int a, int b)

{

int result = a + b;

return result;

}

int main(void)

{

SUM_ASM();

return 0;

}

3.6.2 C程序中内嵌汇编代码

为了C程序内嵌汇编代码ARM编译器ANSI C标准基础上扩展一个关键字__asm, 通过这个关键字我们就可以C程序中内嵌AMR汇编代码C程序内嵌汇编代码格式如下

__asm

{

指令

  [指令]

}

这里有个细节需要注意下想再内嵌汇编代码添加注释记得要使用C语言注释符号而不是汇编语言注释接下来我们通过一个数据块复制例子

int src[10] = {1,2,3,4,5,6,7,8,9};

int dst[10] = {0};

//数据复制C语言实现

int data_copy_c(void)

{

for (int i = 0; i < 10; i++)

dst[i] = src[i];

return 0;

}

//数据复制内容ARM汇编实现

int data_copy_asm(void)

{

__asm

{

LDR R0,=src

LDR R1,=dst

MOV R2, #10

LOOP:

LDR R3, [R0], #4

STR R3,[R1],#4

SUBS R2,R2,#1

BNE LOOP

}

}

为了C程序内嵌汇编代码不同编译器给予ANSI C标准扩展不同关键字使用汇编风格也不一样

http://www.yayakq.cn/news/742979/

相关文章:

  • 响应式网站建设需要注意什么wordpress添加自定义按钮
  • 哪家公司设计网站企业网站制作收费
  • 青岛网站建设 百度电商网站设计公司
  • 郑州网站seo优化公司芜湖建设网站
  • 重庆建设工程造价信息总站网站开发技术总监面试题
  • 网站开发 验收周期信丰做网站
  • 类似享设计的网站网站美工和平面设计师
  • 做h5哪个网站好用网站风格对比
  • 惠州外包网站建设企业主页包含
  • 代刷网站app制作教程响应式网站建设的未来发展
  • jsp网站开发的教材建站快车源码
  • 有没有可以免费的片自动优化句子的软件
  • 郑州网站建设伟置一般做网站需要多少钱
  • h5营销型网站吉林 网站备案 照相
  • 网站建设能南昌哪家网站建设最好
  • 花都网站建设价格湘潭建设网站公司
  • 做电影网站如何赚钱长沙外贸建站
  • 网站建设云辽宁智能网站建设价位
  • 普陀网站制作网上做广告怎么收费
  • 专门做母婴的网站app开发需要多少钱
  • 微信建设网站二级建造师执业资格考试
  • 手机免费自建网站短视频推广的好处
  • vs怎么添加做网站公众号代运营平台
  • 做视频网站需要什么证件收到网站打入0.1元怎么做分录
  • 免费软件制作网站模板下载软件河北网站建设公司排名
  • 在线设计名字北京seo技术
  • 做网站报价表微信公众平台注册官网登录入口
  • asp源码自助建站怎么做souq网站
  • 搜索网站显示网页无法访问长治推广型网站建设
  • 南阳网站建设南阳我为群众办实事项目清单