最近在学习arm体系架构,先简单了解一下APCS。

什么是APCS?http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042f/IHI0042F_aapcs.pdf

具体的概念随后理解下,先提供一个汇编和反汇编的方法,以供实验。之后会详细写APCS的东西。

获取arm gnu工具链之后,我们写一个简单的c代码。

int func0(int x)
{return x++;
}
void main()
{int x = 9;x = func0(x);
}

然后执行: arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb hello.c -nostartfiles -o hello.o

这时会生成hello.o,我们再反汇编一下:

arm-none-eabi-objdump -S hello.o > hello.s

hello.s:

hello.o:     file format elf32-littlearmDisassembly of section .text:00008000 <func0>:8000:       b480            push    {r7}8002:       b083            sub     sp, #128004:       af00            add     r7, sp, #08006:       6078            str     r0, [r7, #4]8008:       687b            ldr     r3, [r7, #4]800a:       1c5a            adds    r2, r3, #1800c:       607a            str     r2, [r7, #4]800e:       4618            mov     r0, r38010:       370c            adds    r7, #128012:       46bd            mov     sp, r78014:       bc80            pop     {r7}8016:       4770            bx      lr00008018 <main>:8018:       b580            push    {r7, lr}801a:       b082            sub     sp, #8801c:       af00            add     r7, sp, #0801e:       2309            movs    r3, #98020:       607b            str     r3, [r7, #4]8022:       6878            ldr     r0, [r7, #4]8024:       f7ff ffec       bl      8000 <func0>8028:       6078            str     r0, [r7, #4]802a:       bf00            nop802c:       3708            adds    r7, #8802e:       46bd            mov     sp, r78030:       bd80            pop     {r7, pc}8032:       bf00            nop
~

下面的文章以hello.s来分析APCS,未完待续!

ARM APCS 学习笔记相关推荐

  1. 嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析)

    嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析) 首先声明该博客是针对朱有鹏老师的嵌入式课程进行笔记的总结. 一.通过GPIO控制点亮LED( ...

  2. 嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210)

    嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210) 一.SD卡介绍 1. SD卡背景知识和特点 SD卡.MMC卡.MicroSD.TF卡:这些卡其实内部就是Flash存储颗粒,比 ...

  3. I.MX6ULL ARM Linux学习笔记

    I.MX6ULL ARM Linux学习笔记 写在前面 S1:U-Boot S2:正点原子U-Boot编译 S3:U-Boot基本命令第1讲:help.bdinfo和环境变量命令 S4:U-Boot基 ...

  4. 嵌入式知识-ARM裸机-学习笔记(8):SoC定时器与看门狗(WDT)

    嵌入式知识-ARM裸机-学习笔记(8):SoC定时器与看门狗(WDT) 一.定时器 1. 定时器简介 定时器是SoC中最常见的外设 (1)定时器与计数器.计数器是用来计数的(每隔一个固定时间会计一个数 ...

  5. 嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器

    嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器 一.ADC 1. 什么是ADC ADC(analog digital converter):模数转换(也就是模拟量转换为数字量).由于CPU ...

  6. ARM汇编语言学习笔记

    汇编是对寄存器操作的,不知道一些和主控制器相关的寄存器的作用,根本无法理解某些指令,所以先自己学习相关寄存器和工作模式. 下面是<ARM 嵌入式体系结构与接口技术(Cortex-A8 版) &g ...

  7. ARM Cortex-M3 学习笔记(3)

    最近在学ARM Cortex-M3,找了本号称很经典的书"An Definitive Guide to The ARM Cortex-M3"在看.这个系列学习笔记其实就是在学习这本 ...

  8. arm ida 伪代码 安卓 符号表_使用IDA动态调试及ARM指令学习笔记

    本文介绍如何用IDA进行动态调试及部分ARM指令的学习. 环境:已root的安卓手机一部,IDA pro 6.8,win7系统. 下载样本app,并已确认可调试(debuggable = true), ...

  9. ARM裸机学习笔记(一)GPIO_and_LED

    (一)安装交叉编译工具链 1.linux下安装软件的方法 在线安装.譬如ubuntu中使用apt-get install vim来安装vim软件. 自己下载安装包来安装.这种方式的缺陷就是你不知道你下 ...

最新文章

  1. 唉,面试官这 5 道题,难为我这 3 年经验了
  2. 报名 | 大咖云集,清华方圆系列之大数据分析与可视化报告会
  3. 【干货】大中型企业网络搭建
  4. Linux 串口编程分析
  5. 微型计算机内存为8m,通常说一台微机的内存容量为8M,指的是_______。
  6. 牛客网(剑指offer) 第五题 用两个栈来实现一个队列
  7. 如何配置Filter过滤器处理JSP中文乱码
  8. awr报告分析 mysql_4个MySQL优化工具,帮你准确定位数据库瓶颈!
  9. phpcms 轮播图 (posid推荐位 )调用 - 代码篇
  10. SSH中直接运行php文件
  11. 【java笔记】函数式接口
  12. linux轻量级的图形库,基于Microwindows的嵌入式Linux轻量级图形应用库的设计
  13. git pull/git fetch更新分支
  14. python中def main是什么意思_python - 为什么要使用def main()?
  15. 使用ftp访问资源管理器托拽文件下载出现“当前的安全设置不允许从该位置下载文件”提示
  16. 1 error and 0 warnings potentially fixable with the `--fix` optio
  17. 数据之美:迄今 10 佳数据可视化示例
  18. Spring(eclipse)简要笔记
  19. HoloLens2之路-配置文件(一)
  20. Mean squared error MSE即方差

热门文章

  1. 记一次burpsuite安装问题的解决(包括打不开burp-loader-keygen.jar,点击run无反应,回显-Xbootclasspath/p is no longer a sup
  2. 证券投资学原理(韩德宗 朱晋)知识点
  3. 东西方赌王“口水战”升级 措词激烈论“竞争”
  4. Android kotlin 大全
  5. 停止抱怨的力量是多么强大!
  6. 携程在线网页制作(flex布局)(静态页面)
  7. redis客户端工具下载,RedisDesktopManager,RedisInsight
  8. 屏幕的背光是什么呢?
  9. yum.repos.d没有这个文件和目录解决方法
  10. 初级程序员软考重点5 程序设计语言