不同机器上的不同编译程序的转换(T型图)
创始人
2025-05-30 08:21:14
0

题解仅提供思路,答案是对的

目录

移植

例题

求解过程

总结


移植

在此之前,我们先看看在不同机器上相同编译程序的转换。(相同机器上不同编译程序的转换其实很简单,只要看懂移植这个过程就都会了)

已知在A机器上有L语言的编译程序AC,希望在B机器上实现L语言的编译程序BC。现要求通过L语言在A机器上的编译程序AC实现。

如果觉得题目比较抽象或者读起来比较拗口,可用具体的高级语言或者你熟悉的编程语言,来代替题目中的字母。这里我们用C语言来代替L语言,得到

已知在A机器上有C语言的编译程序,希望在B机器上实现C语言的编译程序。现要求通过C语言在A机器上的编译程序实现。

我们先分析题目,题目要求我们在B机器上实现C语言的编译程序BC。那么我们所得到的T型图应该是这样的。(为了省事...直接手写了)

T型图上半部分代表着这个编译程序的功能,下面代表的是这个编译程序的描述语言。这里我们用B代表B机器的机器码。那么这个T型图表示的是:用C语言编写的能在B机器上运行的C语言编译程序。 (因为高级语言最后都得转换为机器码才能在对应的机器上运行,所以这里我们才会用B来表示B机器的机器码)

但根据自展的相关知识,我们知道:如果想在某台机器上实现某种语言的编译程序,最直接的方法就是用该机器的机器语言或者汇编语言直接去编写这个编译程序--而不是通过某种高级语言去编写。所以我们最后要得到的实际上是:用B机器的机器码编写的能在B机器上运行的C语言编译器。那么我们的目标T型图应该是

那问题就变成了--怎么用C语言去得到B的机器码?我们再看看题目

已知在A机器上有C语言的编译程序AC

也就是说我们要借助A机器的机器码这个工具, 来实现这个转换。即用A的机器码写的能在B机器上运行的C语言编译程序

 那么我们得到下面这张T型图。

步骤二

这个T型图代表的是:

先用C语言编写能在B机器上运行的C语言编译程序(我们假设这个编译程序叫L1)。

再把L1当作输入,通过A机器上的C语言去编译这个编译程序L1,使其能在B机器上运行。这个过程我们又得到了新的编译程序(L2)。

最后L2输出,我们就得到了右边的目标T型图

其实相当于三个T型图又重新组合成了新的T型图,这个T型图同样有三部分,且各部分代表的含义和单张T型图一样不变。

但还有个问题,“用A机器码写的能在B机器上运行的C语言编译程序”,它并不是我们已有的、可以直接拿来用的工具。也就是说我们还得实现这个编译程序。怎么实现呢?

我们继续反推,把工具当作新的T型图的输出,反推得到对应输入。那么这就变成了一个填空题--怎么实现工具--“用某语言实现的能在A机器上运行的C语言编译器”。

还记得题目里给了啥吗?

已知在A机器上有C语言的编译程序AC

还是这个工具,编译程序AC是已知的,我们可以直接拿来用。得到T型图:

 也许你在反推输入的时候碰到了问题。根据上图,我们输出的是”A的机器语言编写的能在B机器上运行的C语言编译器“。那么输入也应该”某语言编写的能在B机器上运行的C语言编译程序“,只不过描述语言从A的机器语言改为了C语言。所以根据题意,我们应该输入一个用C语言编写的能在B机器上运行的C语言编译程序

Stage1
步骤一

 至此,我们实现了这个转换过程,步骤一和二便是本题答案。记得把C语言换回L语言就成了。

例题

设A机器上有语言L的编译程序,可以用它来编制 B 机器上的语言L'的编译程序,试用T形图进行表示

求解过程

将L语言换成C语言,L‘换成Java。

设A机器上有C语言的编译程序,可以用它来编制 B 机器上的Java的编译程序,试用T形图进行表示

 再改下题目让它变得更加直观,得到

已知A机器上有C语言的编译程序,希望在 B 机器上实现Java的编译程序。用T型图表示

我们观察题目,先把题目要求的T型图和最后得到的目标T型图(即输入和输出)写出来,有了上题的经验,我们很快可以得到 

现在图中只剩”工具“中的一个位置没填,这个位置我们能填什么呢?

我们得到用Java编制的Java转成B的机器语言的编译程序后,由于这个编译程序没法直接在机器B上运行,那我们只能借助其他机器的机器语言将其转换为B的机器语言,所以此处只能填上A的机器语言。 

继续往前推,我们已经有了输出,再往前推又可以得到T型图。

再根据输入,我们应该用Java去编写在机器B上运行的Java编译程序,再将这个编译程序用机器A描述,才能得到图中的输出。

那么现在问题又来了,我们刚刚得到的T型图中,工具”A语言编写的Java编译程序“并不是题目给我们的。我们再把工具当输出,往回推导推导出对应的输入,再补充上工具“C语言编写的C语言编译器。最后把步骤一,二,三总结在一起就得到了结果。当然别忘了把Java和C换为L和L'。 

总结

 先看题目,找出T型图的输出。从输出推导出我们要使用的”工具“和输入。如果工具题目中没有直接给出,我们再把”工具“当作输出,再从输出推导出要使用的”工具“和输入,直到得到题目给出的”工具“为止。

相关内容

热门资讯

Python基础(二十一):a... 简介argparse 模块主要用于处理 Python 命令行参数和选项,程序定义好所需...
用Pytorch构建第一个神经... 本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.ne...
俞敏洪:家庭教育的灵魂是人品教... 我之所以能够在这谈谈家庭教育的心得,确实是因为我接触的孩子太多了。我看到过很多幸福的学生,也看到了很...
汕尾最新学区划分,最新或202... 汕尾公办小学招生范围按照义务教育免试就近入学原则,市区公办小学实行依街道划片招生。本文为您介绍汕尾小...
最新或2023(历届)小外面试... 朴新晟嘉教育全市16大分校快速提分,94%名校录取率暑期特价班50元/科语数英108小时开始正式报名...
让老人带孩子到底好不好?如何打... 年轻父母忙于工作,无暇照顾孩子,越来越多的家庭成了隔代教育家庭。那么让老人来带孩子到底好不好?究竟该...
Oracle目录应急清理 Oracle目录应急清理清理错误位置的归档日志清理30天前的监听告警日志清理监听日志清理30天以前的...
最新或2023(历届)小升初作... 著名教育家苏霍姆林斯基说过:“应该让孩子生活在书籍的世界里”。北大资深教授钱理群先生:“学好语文有很...
光电器件——光电半导体器件简介... 首先我们进入光电器件的简介 主要由三五族来形成无机光电半导体 我们用二六族来形成的话,...
9、Cascaded Diff... 简介 主页:https://cascaded-diffusion.github.io/...
央视首推情感教育纪录片《镜子》... (4月19日)晚,央视纪录片《镜子》首播,给了中国家庭教育当头一棒。  之所以取名“镜子”,是因为“...
朱泾二小:满足孩子与家长的幸福... 教育工作要以孩子和家长“幸福”为追求,满足了学生个性化发展的需求,满足了家长自我提高的需求,家校共同...
争做模范好家长 共育家教新篇章... 为发现和宣传在家庭教育方面有创新有实效的好家长,以及关心教育,支持学校、班级工作的“好家长”先进典型...
比起富养孩子,培养孩子的抗挫商... 1去年十一月,安徽电视台记者段丹峰为情跳楼自杀。自杀前曾连发五小时微博,可见那段时间内她内心遭受多么...
蒙山中学:爆棚的“创城力” 蒙... 家校携手共创城4月27日上午,“我为创城 文明家校”金山区中学家校工作座谈会在蒙山中学举行,来自全区...
Notion汉化 市面上笔记软件五花八门,都各有特色。wolai、语雀、飞书、印象笔记、石墨、幕布、为知...
最新或2023(历届)5月20... 我们用全部的爱关爱家人,我们期待孩子健康快乐的长大,我们竭尽所有把最好的给孩子!每一个小天使的降临,...
最新或2023(历届).5.9... 亲爱的家人朋友们:欢迎您来到美丽的杭州,参加最新或2023(历届)5月9日—5月11日(周二至周四)...
孩子写作业总是拖拖拉拉?家庭教... 成就孩子美好人生!上城区学生成长支持中心第三讲“督促孩子完成作业的窍门 ”,欢迎家长朋友通过微信报名...
反腐正剧《人民的名义》,是一部... 《人民的名义》自最新或2023(历届)3月28日开播以来,已接近一个月,热度不减,而据CSM52城市...