手把手带你写一门编程语言
宫文学
北京原点代码 CEO
7534 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
起步篇:让一门超简单的语言跑起来 (21讲)
结束语 (1讲)
手把手带你写一门编程语言
15
15
1.0x
00:00/00:00
登录|注册

14|汇编代码学习(一):熟悉CPU架构和指令集

你好,我是宫文学。
经过了上一节课的学习,你已经对物理机的运行期机制有了一定的了解。其中最重要的知识点就是,为了让一个程序运行起来,硬件架构、操作系统和计算机语言分别起到了什么作用?对这些知识的深入理解,是让你进入高手行列的关键。
接下来,就让我们把程序编译成汇编代码,从而生成在物理机上运行的可执行程序吧!
慢着,不要太着急。为了让你打下更好的基础,我决定再拿出一节课来,带你了解一下 CPU 架构和指令集,特别是 ARM 和 X86 这两种使用最广泛的 CPU 架构,为你学习汇编语言打下良好的基础。
首先,我们讨论一下什么是 CPU 架构,以及它对学习汇编语言的作用。

掌握汇编语言的关键,是了解 CPU 架构

提到汇编语言,很多同学都会觉得很高深、很难学。其实这是个误解,汇编语言并不难掌握。
为什么这么说呢?其实前面在实现虚拟机的时候,我们已经接触了栈机的字节码。你觉得它难吗?JVM 的字节码理论上不会超过 128 条,而我们通过前面几节课已经了解了其中的好几十条指令,并且已经让他们顺利地运转起来了。
而且,汇编代码作为物理机的指令,也不可能有多么复杂。因为 CPU 的设计,就是要去快速地执行一条条简单的指令,所以这些指令不可能像高级语言那样充满复杂的语义。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了学习汇编语言的重要性以及掌握CPU架构和指令集的关键性。作者强调了对CPU架构的深入了解,特别是ARM和X86这两种主流的CPU架构。文章详细介绍了ARMv8架构的特点,包括32位和64位运行模式、寄存器集以及指令集中的常见指令。此外,还提到了与寄存器相关的调用约定和ABI的概念,以及CPU架构中的主角——指令集。通过对指令集中的常见指令进行比较,读者可以更好地理解寄存器机和栈机的指令差异。文章还鼓励读者进一步了解X86架构,以便对比学习。总的来说,本文内容详实,对于想要深入了解汇编代码学习的读者来说,是一篇极具价值的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一门编程语言》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • 罗 乾 林
    Linux: cat /proc/cpuinfo Windows:https://docs.microsoft.com/en-us/sysinternals/downloads/coreinfo 手上的ARM开发板Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 fp:浮点运算指令集 asimd:单指令流多数据流,处理RGB,YUV,即小碎数据的并行操作,armv7上有个NEON指令完成功能差不多 aes、sha1、sha2:看上去像是跟加密相关的指令集 其他几个就不太清楚了

    作者回复: Great!

    2021-09-08
    3
  • 奋斗的蜗牛
    汇编一直是弱项,看来还是要多学

    作者回复: 看手册,多动手。

    2021-09-08
    2
  • qinsi
    A64更接近x86_64。相比之下A32更有趣一些,比如每条指令都自带4bit标志位来实现条件执行;又比如指令中的立即数只有12bit,却能用来表示一些32bit的整数。

    作者回复: 是,我注意到risc-v也有类似的特点。

    2021-09-08
  • ifelse
    学习打卡
    2022-09-16归属地:浙江
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部