嵌入式工程师到底要不要学习ARM汇编指令?arm学习文章汇总
嵌入式工程师到底要不要学习ARM汇编指令?
网上搜索这个问题,答案很多,大部分的建议是不要学汇编,只要学C语言。
而一口君作为一个十几年经验的驱动工程师,个人认为,汇编语言还是需要掌握的,想要搞精、搞深,汇编和计算机系统知识是必须的。
我们来列举一些问题
- 系统是如何启动的?
- 链接C语言的函数是如何调用的,参数是如何传递的?
- 如何使能关闭中断?
- 多核处理器是如何分配进程到某个核上运行的?
- MMU是如何实现的?
- 中断产生之后,cpu是如何处理的?
- 系统调用是如何实现的?
这些问题要想搞懂清楚就必须要搞懂汇编代码,搞懂arm架构。
系统启动、上电代码都是汇编,汇编不掌握,你如何知道系统是如何启动的?
想了解指针的本质、函数名的本质,就要深入汇编级代码,通过反汇编,看底层指令是如何对C语言的高级特性进行处理的,这都需要汇编语言的功底。
掌握汇编,是成为底层系统工程师、NB工程师的必备技能
另外,汇编没那么恐怖,也就是那十几个常用的命令,再加上配套的伪指令,基本程序结构,半天就差不多了。与其花半天时间在这里纠结要不要学,不如赶紧学,技不压身。
当然,学习汇编之前,你还要对CPU处理器架构、寄存器有一个了解,你要知道,汇编程序都是跟这些寄存器打交道的。
学ARM汇编的话,需要掌握ARM处理器的基本架构、不同模式下的寄存器配置。
最终你会发现,你学习的哪里是汇编?学习的明明是ARM嘛!
汇编,只是一个语言工具,一些助记符而已。
我们要学习的,其实是ARM。
ARM文章计划
一口君为了让大家更好的更快的学习ARM,根据自己多年研发和教学经验,将ARM的知识点逐步分解,按照一定顺序讲解,最终分解成十几篇文章。
一口君对网上铺天盖地的资料进行了详细的梳理,内容设置上可以说是奶妈式的讲解,,大家只需要根据我的文章,按部就班的学习,就能够达到掌握ARM汇编,真正的是从0开始学ARM汇编。
| 文章 | 是否完成 |
|---|---|
| 0.到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】 | 已发布 |
| 1. 从0开始学ARM-安装Keil MDK uVision集成开发环境 | 已发布 |
| 2. 从0开始学ARM-CPU原理,基于ARM的SOC讲解 | 已发布 |
| 3. 从0开始学ARM-ARM模式、寄存器、流水线 | 审查中 |
| 4. 从0开始学ARM-ARM指令,移位、数据处理、BL、机器码 | 审查中 |
| 5. 从0开始学ARM-MRS、MSR、寻址操作、原子操作原理 | 审查中 |
| 6. 从0开始学ARM-异常、异常向量表、swi | 审查中 |
| 7. 从0开始学ARM-GNU伪指令 | 审查中 |
| 8. 从0开始学ARM-混合汇编 | 审查中 |
| 9. 从0开始学ARM-GPIO、LED两种驱动编写方法 | 审查中 |
| 10. 从0开始学ARM-基于Exynos4412的pwm详解 | 审查中 |
| 11. 从0开始学ARM-基于Exynos4412中断详解以及key裸机程序编写 | 审查中 |
| 12. 基于ARM UART裸机驱动详解 | 已发布 |
| 13. 从0开始学ARM-exynos4412-RTC裸机程序编写 | 审查中 |
| 14. 从0开始学ARM-exynos4412-看门狗裸机程序编写 | 审查中 |
| 15. 从0开始学ARM-位置无关码 | TBD |
| 16.一文搞懂ADC裸机和基于Linux驱动编写方法 | 已发布 |
| 17.I2C时序详解,基于ARM Cortex-A9的i2c 外设裸机驱动程序编写方法 | 已发布 |
| 18.SPI协议,spi转can,MCP2515裸机驱动详解 | 已发布 |
| 19. uboot代码启动分析 | TBD |
有的文章已经发布,有些文章还在审查中,还有一些文章还在紧张的编写中,本篇文章持续更新。
大家想学习ARM,请关注 【一口Linux】,后续文章会慢慢为大家呈上。
嵌入式工程师到底要不要学习ARM汇编指令?arm学习文章汇总的更多相关文章
- 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137 转载请著名出处 本博客相关文档下载 : -- AR ...
- 常用ARM汇编指令
常用ARM汇编指令 [日期:2012-07-14] 来源:Linux社区 作者:xuyuanfan77 [字体:大 中 小] 在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初 ...
- ARM汇编指令调试方法
学习ARM汇编时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在 ...
- ARM汇编指令(未完待续)
ARM指令自己在看的时候,看完之后就忘了,根本记不住,而且有些ARM汇编指令在平常的时候可能根本就用不到,所以也没必要把所有的ARM指令都去记忆,所以自己就想着不去一遍一遍的复习ARM指令,而是在平常 ...
- ARM汇编指令的一些总结-转
ARM汇编指令的一些总结ARM汇编指令很多,但是真正常用的不是很多,而且需要认真琢磨的又更少了.比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧.@ disable watch ...
- ARM汇编指令集_学习笔记(1)
一.什么是ARM汇编? 运行在ARM处理器上的汇编语言就叫ARM汇编. C程序运行在X86平台,底层就是X86汇编:运行在ARM平台,底层就是ARM汇编.ARM汇编与X86汇编有显著区别. X86属于 ...
- GNU ARM 汇编指令
第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针.设置页表.操作 ARM的协处理器等.初始化完成后就可以跳转到C ...
- ARM 汇编指令
ARM汇编程序特点: l 所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通 ...
- 经常使用ARM汇编指令
一面学习,一面总结,一面记录. 以下是整理在网上找到的一些资料,简单整理记录一下,方便以后查阅. ARM处理器的指令集能够分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.载入/存储指令. ...
- ARM汇编指令特点
根据朱有鹏老师课程笔记整理而来: (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串1 0组成的机器码,由CPU读取执行. (汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器 ...
随机推荐
- mysql+redis点赞功能剖析
最近在一个应用上需要用到点赞的功能,因为点赞的功能比较常用,很多人看到了大拇指就点了上去,如果单单采用mysql的方式的话可以会对数据库造成很大的压力. 我看了下网上一些博主的提供的解决方案,主要以m ...
- CodeServer 不能粘贴
CodeServer 在没有SSL证书时, 由一浏览器的限制, 默认是不能粘贴的. 在局域网中, 如果不考虑安全性的话, 可以考虑直接把加密关掉, 就能复制粘贴了. 配置文件如下: cert: Tru ...
- Android 7.0 开机时间优化
原文参考(有删改):https://www.jianshu.com/p/6dba42c022a9 问题描述 开机时间相对参考机过慢,大约慢15s左右.Android 系统7.0. 问题分析 开机问题涉 ...
- 高通 LK阶段配置使用I2C-8
以MSM8953为例. 原文(有删改):https://blog.csdn.net/qq_29890089/article/details/108294710 项目场景 因为项目需要,需要在高通MSM ...
- 配置 Nginx + PHP(FastCGI/FPM)
有关概念 Nginx是什么 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器. Php-fpm是什么 1.c ...
- 【论文阅读】GRI: General Reinforced Imitation and its Application to Vision-Based Autonomous Driving
Column: December 30, 2021 11:01 PM Last edited time: January 10, 2022 4:45 PM Sensor/组织: 3 RGB; 曾经短暂 ...
- 三屏异显案例分享,基于全国产RK3568J工业平台!
在工业领域中,能否更灵活.更高效地在主屏幕进行主要任务,并在其他副屏幕上进行其他次要任务(例如查看参考资料.监控其他应用程序),一直都是许多工业领域客户面临的刚需,而"多屏异显"功 ...
- 【Python】用Python把从mysql统计的结果数据转成表格形式的图片并推送到钉钉群
** python把数据转为图片 / python推送图片到钉钉群 ** 需求:通过python访问mysql数据库,统计业务相关数据.把统计的结果数据生成表格形式的图片并发送到钉钉群里. 一:Cen ...
- 韦东山freeRTOS系列教程之【第三章】任务管理
目录 系列教程总目录 概述 3.1 基本概念 3.2 任务创建与删除 3.2.1 什么是任务 3.2.2 创建任务 3.2.3 示例1: 创建任务 3.2.4 示例2: 使用任务参数 3.2.5 任务 ...
- MySql(Innodb)事务隔离级别
事务将数据库从一个一致状态转换至另外一个一致状态,若某个事务看到了另外一个事务在状态转换过程中的中间态数据(不一致状态),将有可能导致另外一个事务的操作基于一个不一致的数据库状态,进而数据库失去一致性 ...