C语言编写的编译器(生成汇编语言)

Charley_松糕 2015-11-14 11:22:11
有过开发经历的兄弟们分享一下经验吧
...全文
508 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2015-11-16
  • 打赏
  • 举报
回复
参考 “little c 解释器”
ljhhh7890 2015-11-16
  • 打赏
  • 举报
回复
对了,有本书《可变目标C编译器-设计与实现》讲的是编译器lcc的设计与实现,此编译器专注生成汇编代码。用vc6可编译成功。
ljhhh7890 2015-11-16
  • 打赏
  • 举报
回复
fabrice bellard 法国人,网址bellard.org tcc是他的代表作。号称编译速度最快的编译器。 otcc那一项进去,是国际混乱C代码大赛获奖作品。 otccelfn.c真的令人惊叹。你可看一下。
笨笨仔 2015-11-16
  • 打赏
  • 举报
回复
引用 楼主 sinat_32801569 的回复:
有过开发经历的兄弟们分享一下经验吧
此命题足以写成几本书,即便是高高手也未必能在此处说明白,若不能说明其中的前后关系岂不误人?还是不说为妙,楼主找相关资料系统了解一下吧。
Charley_松糕 2015-11-15
  • 打赏
  • 举报
回复
确实是这样,必须先熟悉目标代码
kenshu 2015-11-14
  • 打赏
  • 举报
回复
我写过编译器,反编译器,虚拟机,当然不见得写得非常好,但至少是亲手实践过,其中还有商用化的。 我个人的认为是,"目标机器的指令码非常熟悉",这个不一定。 (当然越熟越好,至少熟不会有坏处)但看你需求, 如果你要写的是一个全世界排名前几的C编译器,那当然目标机器的机器码越熟越好,甚至你肉眼看着机器码就可以脑补为汇编代码,可能会有帮助(尽管我认为这种帮助不会太大) 但, 如果你是出于其它原因,不一定需要非常熟,你有一张对照表,需要的时候查得到就行了,不极端考虑目标代码运行效率的情况下,你绝大部份的工作量,不是花在怎么把C代码转为汇编指令上(你有1/20的时间花在最后生成机器码上就算多了).
kenshu 2015-11-14
  • 打赏
  • 举报
回复
我书柜里至少10几本这个方面的书(因为10几年前要写一个程序,需要恶补一下编译原理),很多都没仔细看过。 如果你只是想写一个简单的编译器,上面第一本基本上是够的了(前提是你还有一些计算机基础;如果是一个读社会学的文科生突发奇想要写一个编译器,这本书明显不够用)。 第二本,对于写虚拟机有很大帮助。(本身看或不看,对写编译器影响不会很大),你看过之后,一些思路可能会恍然大悟.可以少走很多弯路。
kenshu 2015-11-14
  • 打赏
  • 举报
回复
编译器没写过,Casl (以前高程的汇编的假设的机器)的虚拟机写过。 可以参考一下 《编译器构造 C语言描述》,《游戏脚本高级编程》(后面这一本,实际上是教你如何发明自己的一种语言)
schlafenhamster 2015-11-14
  • 打赏
  • 举报
回复
搜索 YACC “Yet Another Compiler's Compiler”
worldy 2015-11-14
  • 打赏
  • 举报
回复
没有做过,但肯定的是,你要对目标机器的指令码非常熟悉

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧