交付:为小语言生成汇编
场景:~/gen 给了半成品生成器,说明列了要补的一小段(二元运算的选指令)。 任务:把它补成能为一段 IR 正确生成汇编的生成器,让说明里的用例通过。补好运行 ~/check。 范围:只在 ~/ge
修好选错助记符的生成器
场景:~/gen 的生成器把加法选成了错的助记符(比如 + 发成了 SUB),生成的汇编里该有的 ADD 一条都没有。 任务:把助记符映射改对,让加法生成 ADD。改好运行 ~/check(它核对 A
修好漏了 STORE 的生成器
场景:~/gen 的生成器有 bug——二元运算少发了最后那条 STORE,结果没存回,生成的指令数偏少。 任务:把生成器改对(补回 STORE),让它为已知 IR 生成正确条数的指令。改好运行 ~/
要溢出几个寄存器
场景:~/gen/说明.txt 写了这段 IR 用了几个临时值、机器有几个寄存器。对照表列了八个数。 任务:算出要溢出到内存几个(临时值减寄存器、最少 0),到对照表里查那个数对应的标记。 范围:只在
这段 IR 一共几条
场景:~/gen/ir.txt 是一段三地址码。对照表列了八个数。 任务:数出这段 IR 一共几条(不是生成后的汇编),到对照表里查那个数对应的标记。 范围:只在 ~/gen 下你自己的生成器与 IR
生成里有几条加法
场景:~/gen 生成的汇编里有若干条 ADD。对照表列了八个数。 任务:跑生成器,数出汇编里 ADD 出现几次,到对照表里查那个数对应的标记。 范围:只在 ~/gen 下你自己的生成器与 IR 文件
生成了几条指令
场景:~/gen 的生成器会为 ir.txt 里的 IR 生成汇编。对照表列了八个数。 任务:跑生成器,数出一共生成了几条汇编指令,到对照表里查那个数对应的标记。 范围:只在 ~/gen 下你自己的生
把生成器跑起来
场景:~/gen 下有一个代码生成器和一段 IR,说明写了怎么跑。 任务:把它跑起来,让它为那段 IR 生成汇编,然后运行 ~/check(它核对生成的指令数)。 范围:只在 ~/gen 下你自己的生
从现象认生成的问题
把四种现象和原因配对,打印四个字母:
真机上怎么算生成对了
在真实机上跑代码生成器,判定它「对了」看的是【0】。