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
《手把手带你写一门编程语言》,新⼈⾸单¥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-083 - 奋斗的蜗牛汇编一直是弱项,看来还是要多学
作者回复: 看手册,多动手。
2021-09-082 - qinsiA64更接近x86_64。相比之下A32更有趣一些,比如每条指令都自带4bit标志位来实现条件执行;又比如指令中的立即数只有12bit,却能用来表示一些32bit的整数。
作者回复: 是,我注意到risc-v也有类似的特点。
2021-09-08 - ifelse学习打卡2022-09-16归属地:浙江
收起评论