Fw: [问题] 如何开发出编译器 ?

楼主: EdisonX (卡卡兽)   2013-07-27 21:10:54
※ [本文转录自 Programming 看板 #1HyyOrG6 ]
作者: EdisonX (卡卡兽) 站内: Programming
标题: [问题] 如何开发出编译器 ?
时间: Sat Jul 27 21:07:52 2013
目前工作,有先用 C/C++ ,编译出一个 Execute.exe 后,
以读档方式,去做一些相对应的动作,
整体而言,Execute.exe 就像是直译器,举个例子好了
楼主: EdisonX (卡卡兽)   2013-07-27 21:11:00
目前小弟觉得 "可能" 和组语有关,若离题太远,有请版主删文
作者: ksmrt0123 (ksmrt)   2013-07-28 01:50:00
我做过类似的东西. 我是把script先编成中间码并且存成.H档, 主程式写一个执行中间码的virtual machine,再把.h档include进来一起make出执行档你的程式看来是在PC执行, 速度与容量应该都不是问题, 这样的话不需要中间码跟virtual machine, 直接把script转成 char array include进来, 原来从file读的改成从array读应该就可以了
楼主: EdisonX (卡卡兽)   2013-07-28 16:56:00
@ksmart~ : 程式"目前"绑定 PC/windows 无误,只是您说的script 转成 char array, 再改从 array 读, 是否能再详加说明 或是能有个参考网站、keyword ?? 谢谢您的回复。
作者: ksmrt0123 (ksmrt)   2013-07-29 11:37:00
.s转成.h需要写一个小程式, 把.s的内容的每个字符一个个转成.h档内的array初始值定义. 转出的.h档内容大致如下const char script[] = {'\n', '#', 'f', 'i', 'l', 'e', 'n', 'a', 'm', 'e',' ', ':", ' ', 's', 'a', 'm', 'p', 'l', 'e', '.',and so on};原程式 Execute.cpp 再include这个.h档, 就可从script[] 读到原来 .s的内容, make出来的 Execute.exe就不需再读 sample.s 了
楼主: EdisonX (卡卡兽)   2013-07-29 12:19:00
我看懂了,谢谢 k 大 :D
作者: WolfLord (呆呆小狼￾ ￾ N￾ ￾ )   2013-07-29 16:25:00
好复杂喔,我比较笨,我都把语法解析后指令指标跟资料指标推入堆叠,然后RUNTIME只要不断的POP堆叠来跑就好了重看一下你的问题,其实你需要的只是一个关键字而已,狗一下pe档案格式,然后把script写在执行档.data区段
楼主: EdisonX (卡卡兽)   2013-07-30 09:18:00
嗯嗯!W大的作法和 k 大所述相同 :D
作者: WolfLord (呆呆小狼￾ ￾ N￾ ￾ )   2013-07-31 03:00:00
我是说,你现在的程式只要小修改一下就能自己产生EXE档了参考一下这个 http://ppt.cc/fDNQ 然后把原本的SCRIPT黏到EXE的DATA或STORAGE区段就可以了
楼主: EdisonX (卡卡兽)   2013-07-31 23:05:00
这假日有空 try 一下好了,还在赶其他案,先谢谢 W 大 :D

Links booklink

Contact Us: admin [ a t ] ucptt.com