Skip to content

Jiangshan00001/MZC8051

Repository files navigation

MZC8051

code will be changed to this rep:

https://github.com/Jiangshan00001/llvm-mcs51-backend


https://jiangshan00001.github.io/

Build Status

a c compiler for mcu8051.

示例程序:

void main()
{
int a=4;
}

生成对应的ir

func:$main;
	ret_type: $__main_ret,u0;
	{:
def_var: $a,i16;
opr: "init", null;, iconst:0x4:0x10;, %a;
};
func_end:%main;


生成对应的8051asm:

ORG 0000H; program entry
LJMP __main_before;
__main_before:
MOV 0x81, #0x7f; sp<-#0x7f
NOP;
NOP;
NOP;
LCALL _func___init_global_var;
LJMP _func_main;
_func___init_global_var:
_func___init_global_var_ret_LABEL:
RET;
_func_main:
;def_var: $a,i16;
;addr: 0x8
;opr: "init", null;, iconst:0x4:0x8;, %a;

MOV 0x8, #0x4;
MOV 0x9, #0x0;
_func_main_ret_LABEL:
RET;

生成对应的hex:

:1000000002000375817F00000012000F0200102221
:0700100075080475090022C8
:00000001FF

欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。

程序使用说明:

当前有3个例程在release中: example_test: led01 led02 shumaguan01

程序使用说明

源码说明:

名称 说明 当前状态
asm8051 8051的asm到hex的汇编编译器
ir/irread 定义的中间语言。中间语言的读写 🕗
cfront c语言的前端 🕗
backend/ir2asm8051 ir转为8051汇编语言的后端代码 🕗
sim8051 8051的仿真代码,用于测试验证生成的hex代码运行功能是否正确
lmake 简单的make的部分功能实现,用于生成项目和编译程序用
ide_one 总体编译器统一集成编译项目
misc 其他公共函数等

希望对编译器技术感兴趣的人一起讨论学习。 可以在项目的issues中讨论。

开发说明:

some code is from github:

if there is any license issue, please contact me.

需要的帮助

  • 在github项目上点赞和fork
  • 对项目方向代码结构等方面提出各种问题
  • 编译器使用者:测试并提交异常问题或正常通过的例程代码
  • 编译器开发/爱好者:添加项目文档,添加前端/后端代码
  • 芯片开发/爱好者:添加新的前端/后端代码,运行时库代码
  • 其他:提供使用或者特定开发需求,提供资金支持

some resource I find useful: