c语言编译器好玩的代码,读懂这4个函数,528行代码,你也可以实现一个C语言编译器...

article/2025/9/12 8:40:09

引言

自从华为方舟编译器横空出世,一举成为全民网红之后,一下子点燃了大家对编译器的热情。不过,对于大多数人来说,编译器依旧是遥不可及的神秘存在。

今天,介绍一个国外大牛写的C语言编译器 - C4,揭开编译器的神秘面纱。原来实现一个具备基本功能的编译器,竟是如此简单!

C4:4个函数实现的C语言编译器

C4, C in four functions。

它是一个C语言编译器项目(项目地址在文末),整个实现只有:

一个C语言源码文件528行C语言代码4个函数

仅此而已。

a3318c941136e31422f9e0be7c9e8802.gif

读懂这4个函数,528行代码,你也可以实现一个C语言编译器-1.jpg (34.72 KB, 下载次数: 0)

2020-7-17 12:33 上传

C4代码仓库

它简洁,却不简单。

它具备完整的词法分析、语法分析、简单的语义检查、代码生成、运行时环境(即虚拟机)。

与常见的C编译器不同的是,它把C语言源程序编译成字节码(bytecode),然后在一个精简的虚拟机中解释执行。

你以为这样就完了?不,它令人称道之处远不止如此!

C4:可以自举的C语言编译器

若只是精简,或许它还并不那么令人惊奇,毕竟网上有很多类似的编译器项目,其中不乏一些非常简单优雅,且非常出色的项目。

然而,C4最惊艳的地方是,它可以自举。

所谓自举,简单来说,就是自己编译自己。当然,最初始的那个C4编译器的可执行文件,还是必须要通过GCC、Clang等编译器进行编译生成。

我们下面演示一下“Hello, World!”的例子,和C4自举的例子。

Hello, World示例

先用GCC把C4编译成可执行文件:

gcc  c4.c  -o  c4

运行“Hello, World!”测试程序hello.c:

a3318c941136e31422f9e0be7c9e8802.gif

读懂这4个函数,528行代码,你也可以实现一个C语言编译器-2.jpg (12.31 KB, 下载次数: 0)

2020-7-17 12:33 上传

结果如图:

<

http://chatgpt.dhexx.cn/article/QiuQitLe.shtml

相关文章

c语言编译器 dev,1.1开篇一:C语言编译器的选择---Dev C++

目录&#xff1a; 1.Dev C的下载&安装&#xff1a; 2.Dev C的使用&#xff1a; 前言&#xff1a; 那么多编译器&#xff0c;为什么选择Dev C&#xff1f;理由有下 理由一&#xff1a;Dev C 体积比较小&#xff0c;不占用太多的内存。 理由二&#xff1a;Dev C 打开速度快&a…

C语言推荐编译器

前言&#xff1a;vs虽然好,但是2015往后的版本相对使用起来比较复杂,对小白不太友好 既然是第一次打C语言,就要使用一个简洁明了,通俗易懂的编译器,这里 推荐 小熊猫devC,这非常的简洁,没有过多的插件,点击下方链接就可以下载&#xff01; DevC官方下载-DevC中文最新版下载(…

C语言编译器Visual Studio官方正版下载安装

首先打开微软官网。 微软官网https://www.microsoft.com/zh-cn/进入Visual Studio的产品介绍页。 一般我们用的是win系统。 点击下载。 选择社区版&#xff0c;因为其他版本要花钱&#xff0c;专业版和企业版。 打开安装包。 选择c&#xff0c;确定没选错&#xff0c;接下来进行…

【Linux03-基本工具之GCC】Linux下的C语言编译器

前言 接上篇&#xff0c;继续学习基本工具。 三、gcc 是什么 Linux下的C语言编译器&#xff08;C的编译器是g&#xff0c;用法选项基本一样&#xff09;。 既然是编译器&#xff0c;我们就再来加点餐…… 链接其实分为两种类型&#xff1a;静态链接和动态链接&#xff0…

初学者-C语言基础练习(二)——C语言编译器的使用方法

安装完之后我们就可以开始我们的程序编写了&#xff0c;但是这里还是有必要讲一下初学者该注意的事项。 1.拒绝堆排多个文件 2.切记不能使用中文输入&#xff0c;编写程序一定要在英文状态下编写&#xff0c;注释内容除外 3.每个语句结束不要忘记分号 说完这三个注意了&am…

c语言编译器苹果下载,c语言编译器ios下载

c语言编译器ios介绍 c语言编译器ios是一款非常实用的编程语言学习类手机软件&#xff0c;软件可以给我们带来许多的功能可以让我们使用&#xff0c;通过软件我们就能够进行代码的编译而且在这里就能够验证许多的小程序&#xff0c;还支持我们文件代码的打开可以在这里进行浏览非…

手机c语言编译器ide文件位置,C语言编译器IDE

C语言编译器IDE是一个手机上的C语言编辑软件&#xff0c;支持在线编译各种代码&#xff0c;创建代码文件或管理不同的代码项目等&#xff1b;里面设置了C语言工程管理中心&#xff0c;其中的工程项目内容一目了然&#xff0c;所有工程项目名称都清晰展示&#xff0c;还显示自己…

新手c语言编译器推荐

c语言程序开发需要在某种编程环境中进行。 c语言常用的编程环境有Dev-C、C-Free、Code::Blocks、CLion、Turbo C、VS、VS Code、Visual C等。 1、VS/VS Code vs和vs code是很好用的编辑器&#xff0c;但是占用空间很大、操作有点繁琐对新手不太友好。 2、C-Free/Turbo C C…

windows系统c语言编译器安装

windows系统c语言编译器安装 1、安装包下载及说明 MinGW 的全称是&#xff1a;Minimalist GNU on Windows &#xff0c;实际上是将gcc&#xff08;c/c编译器&#xff09;移植到了 Windows 平台下&#xff0c;并且包含了 Win32API &#xff0c;因此可以将源代码编译为可在 Win…

c语言如何用编译器编辑,C语言编译器怎么用,C语言编译器使用教程

C语言编译器怎么用的详细解析 一、本站站点下载并安装&#xff0c;解压缩后&#xff0c;运行exe安装文件&#xff0c;单击“下一步” 二、选择已安装的组件后&#xff0c;单击“下一步” 三、单击“下一步”&#xff0c;默认情况下可以设置软件的安装位置&#xff0c;或者单击“…

微信公众号怎么发PDF文件

在微信公众号发表图文时&#xff0c;可以借助“文章附件”小程序在图文素材中添加文件&#xff0c;作为附件给粉丝下载。文章附件小程序支持的文件格式&#xff1a;Word、Excel、PPT、PDF、txt、zip、rar、7z、mp3、psd、wps等&#xff08;还有更多&#xff09;。 方法/步骤 …

业余草微信公众号Markdown编辑器, 适合代码排版

随着大家都转战微信公众平台&#xff0c;如何快速的编写文章就摆在了首要位置。不可否认&#xff0c;使用微信自带的编辑器可以做出好看的排版&#xff0c;甚至用第三方编辑器有更多的模板。但是&#xff0c;这些全部都需要手动的调整。本来公众平台就算是自媒体&#xff0c;非…

Vue微信公众号 创建自定义菜单

创建菜单的程序之前需配置&#xff1a; 1、申请一个测试公众号并设置接口信息&#xff0c;JS接口安全域名以及网页授权获取用户基本信息&#xff0c;这三项都要设置为自己的程序映射的公网地址 网页服务-》网页帐号-》网页授权获取用户基本信息&#xff1a;进行OAuth2.0网页授…

视频教程-微信公众号编辑器开发-微信公众号开发11-微信开发php-微信开发

微信公众号编辑器开发-微信公众号开发11-微信开发php 大秦电商创始人&#xff0c;专注网络技术的电商应用。已经出品《1小时建站》《微博营销实战》《PHP采集》《网络招商系统》 秦子恒 1201.00 立即订阅 扫码下载「CSDN程序员学院APP」&#xff0c;1000技术好课免费看 APP订阅…

Python(三)微信公众号开发

ps:暂未完善&#xff0c;先做记录。本文核心讲外网穿透及微信Token验证 阅读 基本开发流程 申请个人公众号-订阅号 微信公众平台https://mp.weixin.qq.comhttps://mp.weixin.qq.com 自定义菜单 微信公众平台当然不只是给开发人员使用的&#xff0c;它提供了很多非技术人员可在…

markdown编辑微信公众号

前言 早前进入it这个行业就有写博客的习惯&#xff0c;之前用的一款百度出的【百度空间】的产品&#xff0c;当时一些文章还有不少的浏览量&#xff0c;可惜后来【百度空间】这款产品下线了&#xff0c;就这样自己的一点小积累付诸东流了。后来接触到了git和github。心想不能再…

微信公众号html标签,微信公众号用户标签管理

开发者可以使用用户标签管理的相关接口&#xff0c;实现对公众号的标签进行创建、查询、修改、删除等操作&#xff0c;也可以对用户进行打标签、取消标签等操作。 标签管理 1. 创建标签 一个公众号&#xff0c;最多可以创建100个标签。 接口调用请求说明http请求方式&#xff1…

Java微信公众号开发

本文从本人博客搬运&#xff0c;原文格式更加美观&#xff0c;可以移步原文阅读&#xff1a;Java微信公众号开发 微信公众号介绍 1.公众号的分类 我们平常在微信应用上会看到有很多的公众号&#xff0c;但是各自并不一样&#xff0c;公众号也分很多种类型&#xff0c;不过最…

如何建立一个微信公众号

如何建立一个微信公众号 一、定位 首先你要对公众号有定位&#xff0c;比如美妆&#xff0c;时尚&#xff0c;校园生活&#xff0c;好物分享等&#xff0c;每日推荐适合大学生的电影&#xff0c;连续剧&#xff0c;推荐大学生日常会做的好事。 二、准备工作 在建立一个微信…

公众号 菜单 代码 php,如何使用Vue.js实现微信公众号菜单编辑器(案例代码)

这次给大家带来如何使用Vue.js实现微信公众号菜单编辑器(案例代码)&#xff0c;使用Vue.js实现微信公众号菜单编辑器的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。 实现菜单删除方法 在vue实例中添加删除菜单方法&#xff0c;根据选中的菜单级别和索…