首页 > 其他分享 >超有趣小知识:先有编译器还是先有语言?

超有趣小知识:先有编译器还是先有语言?

时间:2024-11-09 23:44:06浏览次数:3  
标签:语言 二进制 汇编语言 C语言 编译 编译器 先有 有趣

相信大家都想过一个问题:先有编译器还是先有的语言呐?

注意这里的语言和编译器是同级的,C语言对应C语言编译器,汇编语言对应汇编语言编器。

答案是:先有语言后有编译器,这就是语言与编译器的自举过程。

目录

一、程序的翻译过程:

二、语言更新历程

三、汇编语言和汇编编译器:


一、程序的翻译过程:

会经历以下四步:C语言为例

(1)、预处理:

        头文件展开

        去注释

        宏替换

        条件编译

注意:预处理后的语言还是C语言

(2)、编译

C语言——>汇编

(3)、汇编

汇编语言——>二进制语言(可重定位目标二进制文件,但不能执行)

(4)、链接

二、语言更新历程

从最开始的二进制出现,然后是汇编,然后是面向过程思想C语言,最后是面向对象思想的C++、java、python、shell等等。

三、汇编语言和汇编编译器

以汇编语言和汇编编译器为例:

当初人们觉得二进制太麻烦,效率也低,所以就发明了汇编语言,但是没有用汇编语言写的能编译汇编语言的编译器。这时就用二进制写了一个能编译汇编语言的编译器,然后才用汇编语言写了一个汇编语言编译器的代码,然后用这个二进制写的汇编语言编译器进行编译,最后就形成了第一个用汇编语言写的能编译汇编语言的编译器。有了编译器后就可以无限迭代更新维护。

同理C语言与C语言编译器也是一样,先用汇编语言写出一款能编译C语言的编译器,接着进行后续操作。

标签:语言,二进制,汇编语言,C语言,编译,编译器,先有,有趣
From: https://blog.csdn.net/hffh123/article/details/143644615

相关文章

  • 【网络安全 | 漏洞挖掘】通过有趣的逻辑漏洞实现账户接管
    未经许可,不得转载。文章目录正文正文我受邀参加某公司的一个私密漏洞赏金项目。在测试时,我发现该平台采用PIN码登录系统,而不是传统密码。每次登录尝试时,系统会发送一个6位数的PIN码。系统设置了频率限制,防止暴力破解PIN码。同时我发现,每次更......
  • 一个非常有趣的挑战——物联网与AI结合的超级项目
    想要实现这个物联网与AI结合的超级项目,你需要准备一些硬件和软件环境,可以不同,我只是最近在学这个就以这个举例。以下是一个详细的清单,列出了所需的硬件和软件组件:硬件需求嵌入式设备开发板:例如STM32Nucleo板(如NUCLEO-F103RB)或其他支持Rust的嵌入式开发板。传感器:温......
  • Go语言切片(Slice)的一些有趣特性
    切片类似数组的引用。更改底层数组中的元素会修改切片的元素。更改切片的元素同样会修改其底层数组中的元素,和它共享底层数组的切片都会观测到这些修改。点击查看代码packagemainimport"fmt"funcmain(){ names:=[4]string{ "John", "Paul", "George", "Ri......
  • 从 vue 源码看问题 — vue 编译器如何生成渲染函数?
    前言前两篇主要了解了vue编译器的解析和优化:将组件的html模版解析成AST对象基于AST语法树进行静态标记,首先标记每个节点是否为静态节点,然后进一步标记出静态根节点,便于在后续更新中跳过静态根节点的更新,从而提高性能下面就了解一下vue编译器是如何从AST......
  • 什么是中间代码?Java语言不同类型编译器。什么是HotSpot编译器?
    什么是中间代码?通俗的解释,为了让所有编程语言统一,可以让任何编程语言先编译成一样格式的中间代码,用解释器执行中间代码就可以达到让所有编程语言都可以用解释器执行。甚至可以让C/C++/Python/Java都用一套Java虚拟机(当然前提是编译支持C/C++......
  • Golang 开源库分享:faker - 随机生成有趣的假数据!
    GitHub仓库链接:https://github.com/bxcodec/faker简介在开发和测试过程中,我们经常需要各种各样的测试数据。如果手动去生成这些数据,不仅耗时,还容易出错。faker是一个Go语言的假数据生成库,可以快速生成各种字段的随机数据。这个库可以帮我们轻松生成各种属性的假数据,比如姓名......
  • 墙裂推荐!10个非常有趣的Python库!
     Python语法简单,功能强大,可以干很多事情,原因就是因为它有强大的库支持,有很多很多现成的轮子可以用,你只要负责搭建应用即可。今天我给大家推荐10个非常有趣的Python,一定会让你爱不释手的。如果你正在学习Python并且找不到方向的话可以试试我这一份学习方法+籽料呀!点击领......
  • 最短的可以造成崩溃且编译器无法优化掉的 C代码是什么
    在C语言中,编写能够造成崩溃且难以被编译器优化掉的代码通常涉及到未定义的行为(undefinedbehavior)或者对底层内存的非法操作。应当注意的是,未定义的行为是C和C++中应该避免的,因为它使得程序的行为无法预测,可能导致不同编译器或不同平台上产生不同的结果。一、最短的可以造成崩......
  • 编译器的实现是用C好还是C++
    标题:编译器的实现是用C好还是C++在探讨编译器的实现时,是否选择C语言或C++取决于多个因素,包括性能需求、团队熟悉度、以及项目的特定需求。C语言以其运行时性能和底层操作的直接性著称,是许多传统编译器如GCC的选择。C++提供了更高级的抽象和面向对象的特性,使得大型项目的组织和维......
  • 有趣的html页面
    有趣的html页面No1<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document<......