{"id":18552159,"url":"https://github.com/jiangshan00001/mzc8051","last_synced_at":"2025-10-14T03:16:03.841Z","repository":{"id":53544669,"uuid":"328993613","full_name":"Jiangshan00001/MZC8051","owner":"Jiangshan00001","description":"a c compiler for mcu8051","archived":false,"fork":false,"pushed_at":"2021-12-01T11:36:50.000Z","size":4969,"stargazers_count":5,"open_issues_count":7,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-26T08:26:34.272Z","etag":null,"topics":["8051","c","compiler","mcu"],"latest_commit_sha":null,"homepage":"https://jiangshan00001.github.io/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jiangshan00001.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-12T13:21:48.000Z","updated_at":"2024-12-25T11:54:04.000Z","dependencies_parsed_at":"2022-08-24T18:13:59.167Z","dependency_job_id":null,"html_url":"https://github.com/Jiangshan00001/MZC8051","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiangshan00001%2FMZC8051","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiangshan00001%2FMZC8051/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiangshan00001%2FMZC8051/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiangshan00001%2FMZC8051/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jiangshan00001","download_url":"https://codeload.github.com/Jiangshan00001/MZC8051/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239278507,"owners_count":19612329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["8051","c","compiler","mcu"],"created_at":"2024-11-06T21:13:16.322Z","updated_at":"2025-10-14T03:15:58.776Z","avatar_url":"https://github.com/Jiangshan00001.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MZC8051\n\n\ncode will be changed to this rep:\n\n\nhttps://github.com/Jiangshan00001/llvm-mcs51-backend\n\n\n\n-------------\n\n\nhttps://jiangshan00001.github.io/\n\n![Build Status](https://github.com/Jiangshan00001/MZC8051/workflows/mzc8051_ubuntu_build/badge.svg)\n\n\na c compiler for mcu8051.\n\n\n\n示例程序：\n\n\n```\nvoid main()\n{\nint a=4;\n}\n\n```\n\n\n生成对应的ir\n\n```\nfunc:$main;\n\tret_type: $__main_ret,u0;\n\t{:\ndef_var: $a,i16;\nopr: \"init\", null;, iconst:0x4:0x10;, %a;\n};\nfunc_end:%main;\n\n\n```\n\n生成对应的8051asm:\n```\nORG 0000H; program entry\nLJMP __main_before;\n__main_before:\nMOV 0x81, #0x7f; sp\u003c-#0x7f\nNOP;\nNOP;\nNOP;\nLCALL _func___init_global_var;\nLJMP _func_main;\n_func___init_global_var:\n_func___init_global_var_ret_LABEL:\nRET;\n_func_main:\n;def_var: $a,i16;\n;addr: 0x8\n;opr: \"init\", null;, iconst:0x4:0x8;, %a;\n\nMOV 0x8, #0x4;\nMOV 0x9, #0x0;\n_func_main_ret_LABEL:\nRET;\n```\n\n\n生成对应的hex:\n```\n:1000000002000375817F00000012000F0200102221\n:0700100075080475090022C8\n:00000001FF\n```\n\n\n\n\n\n欢迎任何人参与和完善：一个人可以走的很快，但是一群人却可以走的更远。\n\n\n## 程序使用说明：\n\n当前有3个例程在release中：\nexample_test: led01 led02 shumaguan01\n\n[程序使用说明](doc/usage.md)\n\n\n\n\n## 源码说明：\n\n名称 | 说明 | 当前状态\n--|--|--\n[asm8051](doc/asm8051.md) | 8051的asm到hex的汇编编译器 | ✅ \n[ir/irread](doc/ir.md) | 定义的中间语言。中间语言的读写 |🕗 \n[cfront](doc/cfront.md) | c语言的前端 | 🕗 \n[backend/ir2asm8051](doc/ir2asm8051.md) | ir转为8051汇编语言的后端代码 | 🕗 \n[sim8051](doc/sim8051.md) | 8051的仿真代码，用于测试验证生成的hex代码运行功能是否正确 | ✅  \n[lmake](doc/lmake.md) | 简单的make的部分功能实现，用于生成项目和编译程序用 | ❌ \n[ide_one](doc/ide_one.md) | 总体编译器统一集成编译项目 | ✅  \n[misc](doc/misc.md) | 其他公共函数等 | ✅  \n\n\n 希望对编译器技术感兴趣的人一起讨论学习。\n 可以在项目的issues中讨论。\n\n## 开发说明：\n\n- [ir格式说明](doc/ir_format.md)\n- [如何添加新的前端](doc/add_new_front_how_to.md)\n- [如何添加新的后端](doc/add_new_backend_how_to.md)\n- [如何添加新的中间代码过滤器](doc/add_new_filter_how_to.md)\n\n\nsome code is from github:\n\n- json: https://github.com/nlohmann/json\n- sim8051: https://github.com/andersdellien/8051-sim\n- simplecpp: https://github.com/danmar/simplecpp\n\nif there is any license issue, please contact me.\n\n\n\n\n\n# 需要的帮助\n- 在github项目上点赞和fork\n- 对项目方向代码结构等方面提出各种问题\n- 编译器使用者：测试并提交异常问题或正常通过的例程代码\n- 编译器开发/爱好者：添加项目文档，添加前端/后端代码\n- 芯片开发/爱好者：添加新的前端/后端代码，运行时库代码\n- 其他：提供使用或者特定开发需求，提供资金支持\n\n\n\n\n\n\nsome resource I find useful:\n-   LCC: A Retargetable C Compiler: Design and Implementation\n    http://www.amazon.com/dp/0805316701,\n    https://github.com/drh/lcc\n\n-   TCC: Tiny C Compiler\n    http://bellard.org/tcc/,\n    http://repo.or.cz/w/tinycc.git/tree\n\n-   C99 standard final draft\n    http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf\n\n-   C11 standard final draft\n    http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf\n\n-   Dave Prosser's C Preprocessing Algorithm\n    http://www.spinellis.gr/blog/20060626/\n\n-   The x86-64 ABI\n    http://www.x86-64.org/documentation/abi.pdf\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiangshan00001%2Fmzc8051","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjiangshan00001%2Fmzc8051","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiangshan00001%2Fmzc8051/lists"}