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

27|增加更丰富的类型第2步:如何支持字符串?

你好,我是宫文学。
今天我们继续来丰富我们语言的类型体系,让它能够支持字符串。字符串是我们在程序里最常用的数据类型之一。每一门高级语言,都需要对字符串类型的数据提供充分的支持。
但是,跟我们前面讨论过的整型和浮点型数据不同,在 CPU 层面并没有直接支持字符串运算的指令。所以,相比我们前面讲过的这两类数据类型,要让语言支持字符串,我们需要做更多的工作才可以。
那么,在这一节课里,我们就看看要支持字符串类型的话,我们语言需要做哪些工作。在这个过程中,我们会接触到对象内存布局、内置函数(Intrinsics),以及字符串、字面量的表示等知识点。
首先,我们来分析一下,在这种情况下,我们的编译器和运行时需要完成哪些任务,然后我们再依次完成它们就可以了。

任务分析

你可以看到,在一些强调易用性的脚本语言里,字符串常常作为内置的数据类型,并拥有更高优先级的支持。比如,在 JavaScript 里,你可以用 + 号连接字符串,并且,其他数据类型和字符串连接时,也会自动转换成字符串。这比在 Java、C 等语言使用字符串更方便。
为了支持字符串类型,实现最基础的字符串操作功能,我们就需要解决下面这几个技术问题:
第一,如何在语言内部表示一个字符串?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了编程语言中支持字符串类型的重要技术问题,涵盖了字符编码、字符串内存布局和对象引用等关键方面。首先,文章介绍了字符编码的重要性,包括ASCII和Unicode编码标准。其次,探讨了字符串的内存布局设计和自动内存管理机制的目标。最后,讨论了对象引用的表示方式,采用了直接拿内存地址作为对象的引用。此外,还介绍了字符串对象的内存布局设计、运行时和内置函数的实现,以及修改编译器后端的相关技术。总的来说,本文全面介绍了支持字符串类型所需的内部表示、内置函数和编译器后端工作,为读者提供了对编程语言中字符串类型支持的全面了解。

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

全部留言(2)

  • 最新
  • 精选
  • 奋斗的蜗牛
    太棒了,这些知识点的讲解真是无价之宝
    2021-10-15
    1
  • ifelse
    学习打卡
    2022-09-26归属地:浙江
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部