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

26|增强更丰富的类型第1步:如何支持浮点数?

你好,我是宫文学。
我们前面几节课,讲的都是编译器前端的功能。虽然,要实现完善的前端功能,我们要做的工作还有很多。不过,我们现在已经不“虚”了!因为我们已经把编译器前端部分的主要知识点都讲得差不多了,其他的我们可以慢慢完善。
所以,现在我们重新把精力放回到编译器后端功能和运行时上来,这部分的功能我们还有待加强。在第一部分起步篇中,为了尽量简化实现过程,我们的语言只支持了整数的运算,甚至都没区分整型的长度,统一使用了 32 位的整型。
但这在实用级的语言中可行不通,我们还需要在里面添加各种丰富的数据类型。所以,接下来,我们会花几节课的时间,丰富一下我们语言支持的数据类型。首先我们会添加一些内置的基础类型,比如浮点型、字符串和数组。之后,我们还要通过对面向对象编程特性,支持用户自定义自己的类型。
在这一节课,我们先来看一下如何让我们的语言支持浮点型数据。为实现这个目的,我们需要先了解 CPU 为了支持浮点数有哪些特别的设计,ABI 方面又有一些什么规定,以及如何修改汇编代码生成逻辑。而且,为了正确地在汇编代码中表示浮点型字面量,你还会学到浮点数编码方面的国际标准。
首先,让我们了解一下 CPU 硬件和 ABI 对浮点数运算提供的支持。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了编译器对浮点数类型的支持,强调了对CPU硬件和ABI对浮点数运算的理解的重要性。文章详细介绍了SSE指令集对浮点数计算的支持,包括寄存器使用、数据类型支持和相关指令。此外,还概述了ABI对参数传递、返回值和寄存器保护的规定。通过技术分析,展现了编译器对浮点数类型支持的重要性,以及对CPU硬件和ABI的理解对于实现这一目标的必要性。另外,文章还介绍了在汇编代码生成过程中,对浮点数常量的编码标准,深入讲解了浮点数的编码方式和IEEE 754标准。这些内容对于读者快速了解编译器对浮点数类型支持的重要性以及浮点数的编码标准具有重要参考价值。文章还总结了X86架构的CPU对其他数据类型的支持以及相应的指令,为读者提供了更多深入了解CPU架构的机会。

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

全部留言(3)

  • 最新
  • 精选
  • 如果是你
    LCPI0_0(%rip) ,这个为什么可以表示第一个参数呢?没搞懂这块。
    2023-02-10归属地:广东
  • ifelse
    学习打卡
    2022-09-24归属地:浙江
  • 奋斗的蜗牛
    课程还是一样精彩,希望老师多开几门课
    2021-10-13
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部