历史上的今天
返回首页

历史上的今天

今天是:2024年09月27日(星期五)

正在发生

2021年09月27日 | ARM汇编之APCS规则

2021-09-27 来源:eefocus

APCS规则简述

寄存器使用规则

寄存器r0-r3用于函数调用过程中传递函数形参,各有一个别名 a1—a4,使用前后可以不用恢复原来的值


R4-r11用于保存函数内部局部变量的值,每个函数使用前,必须要保存被调用函数的值,使用完毕,必须恢复原值。各有一个别名叫v1-v8.

//特殊寄存器说明

R10 sl 栈限制

R11 fp 桢指针

R12 ip 内部过程调用寄存器

R13 sp 栈指针

R14 lr 连接寄存器

R15 pc 程序计数器


栈的使用规则

//APCS规则规定,AMR的栈采用满减使用指令

Stmfd sp!,{}

Ldmfd sp!{}

Push{}

Pop{}


调用函数时参数的传递规则

被调用的函数形参,如果小于等于四个,那么从左向右依次由r0-r3来传递参数

如果被调用函数的形参大于四个,那么从左向右前四个依然由r0-r3传递,其余通过堆栈传递。

函数的返回值被存入r0

汇编调用汇编函数

loop:

mov r0,r1 //将r1的值放入r0

add r1,r2;#32

bl loop //调用后返回现场


汇编调用C语言函数

我们通过反汇编


arm-linux-gcc –g –mapsc arg.c 

arm-linux-gcc-objdump –Ds  arg


发现在处理函数的时候都都会有这些话,前三行和后两行,他就是对现场的布置,就是函数的跳转和返回


mov     ip, sp                  //IP=SP;保存SP

stmdb   sp!, {fp, ip, lr, pc}   //先对SP减4,再对fp,ip,lr,pc压栈。

sub     fp, ip, #4      ; 0x4   //fp=ip-4;此时fp指向栈里面的“fp”

bl       main //跳转到main函数


sub     sp, fp, #12     ; 0xc   //sp=fp-12;此时sp指向栈里面的lr

ldmia   sp, {fp, sp, pc}        //弹栈pc=lr,sp=ip,fp=fp。然后地址加4


纯汇编代码的编写

.text 关键字,用于声明代码段

.align 2 定义半字对齐,对齐代码

.global _start  声明全局变量.这个是程序入口声明,与链接脚本有关,链接脚本中将制定程序入口。

_start: 标号,定义程序入口。下面必须保存现场,所以需要使用5条指令


mov     ip, sp                  //IP=SP;保存SP

stmdb   sp!, {fp, ip, lr, pc}   //先对SP减4,再对fp,ip,lr,pc压栈。

sub     fp, ip, #4      ; 0x4   //fp=ip-4;此时fp指向栈里面的“fp”

bl       main //跳转到main函数


sub     sp, fp, #12     ; 0xc   //sp=fp-12;此时sp指向栈里面的lr

ldmia   sp, {fp, sp, pc}        //弹栈pc=lr,sp=ip,fp=fp。然后地址加4


纯汇编的编译

获取过程 arm-linux-gcc –c demo.S 编译为 .o 目标文件

Arm-linux-ld demo.o –Ttext=0x50000000 –o arm

然后用nm工具看看arm 发现入口地址被指定为50000000

但是此时生成的文件具有头信息,

File arm 查看文件信息。发现很多ASCII码,机器无法识别,需要去头。

Arm-linux-objcopy –O binary arm arm.bin  使用objcopy工具,去头。

推荐阅读

史海拾趣

GSI Technology公司的发展小趣事

从财务表现来看,GSI Technology在过去几年中取得了不俗的成绩。尽管在某些季度受到宏观经济环境和市场需求波动的影响,但公司整体营收和净利润均保持了稳定增长。特别是在2023年Q3财报中,尽管营收略低于市场预期,但公司依然展现出了强劲的发展潜力和市场竞争力。展望未来,GSI Technology将继续秉承创新、务实、高效的发展理念,不断推出更多高性能、高品质的存储器产品,为全球电子行业的发展贡献自己的力量。

Amveco Toroidal Power Products公司的发展小趣事

随着电子行业的快速发展,客户对环形变压器的性能要求也越来越高。Amveco公司敏锐地捕捉到了这一市场变化,加大了在技术创新和产品升级上的投入。公司研发团队不断攻克技术难关,成功开发出了一系列具有更高效率、更低损耗的环形变压器产品,满足了客户对高性能产品的需求。同时,公司还不断优化生产工艺,提高了产品的可靠性和稳定性。

Emerson Embedded Power公司的发展小趣事

随着全球市场的不断扩大,Emerson Embedded Power积极寻求新的增长点。通过与全球知名电子制造商的合作,该公司成功将其产品打入国际市场,并赢得了众多国际客户的信赖。此外,公司还通过并购和战略合作,进一步拓宽了业务范围,提高了市场竞争力。

Horizon Electronics Enterprises Group公司的发展小趣事

为了应对市场需求的多样化和技术发展的快速变化,Horizon开始实施多元化产品布局战略。公司不仅继续深耕半导体芯片领域,还逐步拓展至电子元器件、智能设备、物联网解决方案等多个领域。通过自主研发和合作并购等方式,Horizon不断丰富产品线,满足不同客户的多样化需求。这一战略的实施不仅增强了公司的市场竞争力,也为公司的持续发展注入了新的动力。

台湾义隆电子(ELAN)公司的发展小趣事

义隆电子在多个技术领域保持领先地位,如数字模拟混合技术、高阶设计流程等。这些技术优势使得公司能够迅速掌握市场脉动,开发出具有实用性的新产品。同时,义隆电子还注重将先进技术应用于实际产品中,如高性能的触摸屏控制器、触摸板模块等,这些产品广泛应用于智能手机、平板电脑等消费电子产品中,赢得了市场的广泛认可。

Anaren公司的发展小趣事

在产品多元化的基础上,义隆电子开始积极拓展国际市场。公司以台湾新竹科学园区为营运总部,在亚洲、美洲等多个国家和地区设立了分支机构和设计中心。通过与全球合作伙伴的紧密合作,义隆电子的产品逐渐进入欧洲、亚洲和美洲等市场,实现了全球布局。

问答坊 | AI 解惑

谁推荐一个5V 变成1.2V 的芯片?

本信息来自合作QQ群:电子工程师技术交流(12425841) 群主在坛子ID:Kata 谁推荐一个5V 变成1.2V 的芯片…

查看全部问答>

液晶显示器 刷新频率问题

液晶显示器不进行屏幕刷新会有什么现象? 如果原来屏幕上有显示的话,屏幕上的图像会不会消失?…

查看全部问答>

我只设置了 场同步几个参数, 行同步几个参数,wince 也能正常跑起来,并显示界面,是不是?

在掌微A3上,假若其它情况都OK的条件下, 在LCD方面, 我只设置了 场同步几个参数(VBPD, VFPD, VSPW),  行同步几个参数(HBPD, HFPD, HSPW), wince 也能正常跑起来,并显示界面,是不是? …

查看全部问答>

求重庆本地技术人员解决DS18B20跳变的问题,有报酬:)

不要用数字滤波,这个我已经做了。不管是换芯片,还是调整时序,都可以。 有意思的请联系我,我在沙坪坝。QQ:3487317  TEL:13883677969…

查看全部问答>

msp430学习

现在在使用msp430F149,正在学习中。菜鸟级别,希望大家多多交流…

查看全部问答>

请教关于lwip作为服务器只能连接有限次的问题

请教各位: 我的ARM作为服务器端,采用lwip的Raw API 。遇到如下问题:如果使用tcp_listen(),使用网络助手作为客户端,去连接我的服务器,总共只能连接TCP_DEFAULT_LISTEN_BACKLOG次。 如果使用tcp_listen_with_backlog(pcb, n);则总共只能连 ...…

查看全部问答>

蘑菇房温湿度环境控制系统

[菇房培养应用方案] [食用菌养殖现代化技术] [蘑菇房工厂化技术方案书]    温度因素温度是环境条件的诸多因素中最为活跃的因素,也是对食用菌菌种生产、生产和使用影响作用最大的因素。任何种类、任何品种菌丝生长都有其生长温度范围 ...…

查看全部问答>

深入理解功率MOSFET数据表

在汽车电子的驱动负载的各种应用中,最常见的半导体元件就是功率MOSFET了。本文不准备写成一篇介绍功率MOSFET的技术大全,只是让读者去了解如何正确的理解功率MOSFET数据表中的常用主要参数,以帮助设计者更好的使用功率MOSFET进行设计。  数据表中 ...…

查看全部问答>

请教一下倒立摆那道题怎么样起摆

本帖最后由 paulhyde 于 2014-9-15 03:21 编辑 RT 更为稳定成功率更高    …

查看全部问答>

ADI高速数据传输(三)

replyreload += \',\' + 1653369; DACs, DDSs, PLLs, and Clock Distribution 由于本份材料是英文版的,有需要的请回复下载,分为四个帖子发布。目录如下 Timson,如果您要查看本帖隐藏内容请回复 …

查看全部问答>