汇编语言风格

0.前言

笔者本科是机械设计制造及自动化专业,接触汇编是在“微机原理”这门课上。基于当时课堂上学习,足以写出基本且简短的汇编程序,自以为已经完全掌握。结果,入职第一个任务是,将两个相近架构海思芯片的镜像归一,其中有一个硬件加速功能只能在海思芯片1上运行。简单来说,就是需要修改内核汇编程序,读两者公有的寄存器,只有判断为海思芯片1时,才能跑硬件加速那段汇编代码。结果打开部门代码仓,发现与微机原理的学到的汇编语法完全不同,顿时傻眼,因为不知道还有其他汇编语法,也不知道是什么造成这种不同,查资料时也是有多种写法,很迷糊。不知道部门用的是什么风格语法,想实现某个功能时,甚至不知道该如何搜索。由此,笔者专门研究了下主流的X86汇编和arm汇编都各自有哪些风格。
插一句,感觉课程教学,除了要教为什么,教会学生是什么感觉更重要,如果开宗明义,教一下主流汇编语言有哪些,各有何种语法风格,学生不至于实战时傻眼,会产生一种学到的知识没有用的错觉。其实正是课堂上学习的操作指令,迁移到其他风格的汇编上,才能快速上手理解。

1.x86汇编的两种风格

x86汇编就有两种风格,AT&T风格、INTEL风格。其中AT&T风格是GNU社区使用的,linux内核也是采用这种风格。最简单的分辨方式是,操作寄存器rx,是否需要加%,操作立即数是否需要加$。
在这里插入图片描述
在这里插入图片描述
通过上面快速确定自己代码是哪种风格,再百度语法就简单多了。仅举例https://zhuanlan.zhihu.com/p/527208939

2.arm汇编的两种风格

arm汇编也有两种风格,ARM官方风格、GNU风格,不过因为linux的成功,ARM官方风格已经很少使用了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
GNU语法介绍参考https://www.likecs.com/show-306616579.html

3. 微机原理课程用的什么语法

基于好奇,作者百度了下《微机原理》课程的百度介绍,发现该课程汇编程序都是在MASM 5.0上运行,搜索MASM发现其实是微软为x86开发的一个在dos下运行的汇编开发平台。带有汇编器、调试器。其语法自然是微软自己定义的,不得不说对于教学、自学入门是非常好的。但是距离内核开发实战,实在有点远。
在这里插入图片描述在这里插入图片描述
anyway,通过此篇,能快速确定你的汇编代码是何种风格,至于具体语法,自行百度即可。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值