文件名称:babygo:从头开始制作的Go编译器,可以自行编译。 这将是最小最简单的go编译器
文件大小:88KB
文件格式:ZIP
更新时间:2024-02-25 22:40:44
go linux golang compiler x86-64
Babygo,从头开始制作的go编译器 Babygo是一个小型且简单的go编译器。 (我相信,这是世界上最小最简单的。)它是从头开始制作的,可以自行编译。 不依赖任何库。 标准库和系统调用的调用是自制的。 Lexer,解析器和代码生成器是手写的。 发出重新生成单个静态二进制代码的汇编代码。 它仅as汇编器而依赖,而ld作为链接器而依赖。 它仅由几个文件组成。 main.go-主编译器 runtime.go-运行时 runtime.s-低级别的运行时 lib /-库 设计 Lexer,解析器和AST ast,lexer和parser的设计和逻辑是从go/ast , go/scan
【文件预览】:
babygo-main
----.gitignore(72B)
----.shared()
--------.gitkeep(0B)
----diff(49B)
----main.go(141KB)
----README.md(2KB)
----Makefile.mac(634B)
----runtime.s(2KB)
----.github()
--------workflows()
----t()
--------hello.go(108B)
--------test.go(31KB)
--------text.txt(280B)
--------expected.txt(3KB)
----pre()
--------precompiler.go(91KB)
----LICENSE(1KB)
----runtime.go(6KB)
----test.sh(310B)
----src()
--------unsafe()
--------os()
--------reflect()
--------syscall()
----sample()
--------.gitignore(10B)
--------sample.go(710B)
--------min.s(4KB)
--------sample.s(47KB)
--------min.go(88B)
----Makefile(3KB)
----lib()
--------mylib2()
--------strconv()
--------mylib()
--------myfmt()
--------strings()
--------path()
----docker-run(738B)