前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >回到本真,代码到底是什么?

回到本真,代码到底是什么?

作者头像
用户1093396
发布2022-11-29 16:44:52
3560
发布2022-11-29 16:44:52
举报

本文特指Linux操作系统下和静态编译性语言

代码即文本


我们写的「代码」只是个普通的文本文件,因为编译器等方式得以转化为二进制代码。代码文本从最早期的「二进制代码」演化到现在“百花齐放”的「编程语言代码」,粗略演化路线:

  • 二进制代码:初期二进制代码文本并不具备可读性,假如让你直接编写二进制代码,“也许你一辈子都在调试代码错误?😏”
  • 汇编代码:为了让代码更易于人们编写和阅读,产生了「汇编代码」
  • 编程语言代码:然而编写汇编代码也不是一件简单的事情,随着编程技术的发展,诞生了众多编程语言,比如C、C++、Go等等,进一步提升了代码的:
    • 可读性(语法、面向对象等等)
    • 可复用(库、面向对象等等)
    • 性能和效率等(内存分配器、垃圾回收器、协程调度器等等)
    • 等等

点击查看大图

现代编程语言语言,可以让我们更加高效编写程序。

以Go语言为例,最终Go代码汇编「编译器」转化为「汇编代码」,再到「二进制代码」文件。

我们的代码文本都包含了什么?

代码包含CPU指令和预置数据


为了简化理解,粗略来看代码主要分为两部分:

  • 指令部分:CPU可执行的指令
  • 数据部分:常量等
代码语言:javascript
复制
数据传输指令MOV

当二进制代码文件被执行时:

  • 指令被加载进内存
  • 预置数据被加载进内存

同样被加载到内存中的「代码」也主要分为两部分:

  • 指令部分:传输、算术、跳转JMP、函数调用CALL/退出RETURN等指令
  • 数据部分:文本代码中预置的数据,比如常量等

CPU读取指令


二进制代码被加载到内存之后,中央处理器CPU就可以从内存中读取指令、解析并执行指令。同时,如果当前指令操作了全局变量,执行指令过程中「中央处理器CPU」从内存中读取代码中预置数据(常量等)。其次,这里代码运行过程就是我们通常说到的「运行时 runtime」。

总结


  1. 计算机自动运行核心:CPU自动执行指令
  2. 指令来源:CPU从内存读取指令
  3. 内存中指令来源:内存中的指令来源于被执行的二进制文件
  4. 代码中指令来源:二进制文件由源代码文本经过编译等方式转化而来
  5. 二进制文件来源:程序员根据需求编写源代码文本

所以综上所述,我们写的代码到底是什么?

答:包含CPU指令和预置数据的文本文件。

预告


下篇文章我们就来看看:

代码是如何运行的?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TIGERB的技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码即文本
  • 代码包含CPU指令和预置数据
  • CPU读取指令
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档