Assembly 假设您有一台Pep/8型计算机

Assembly 假设您有一台Pep/8型计算机,assembly,pep8-assembly,Assembly,Pep8 Assembly,假设您有一台Pep/8类型的计算机和以下磁盘文件: 文件A:用机器语言编写的Pep/8汇编语言汇编程序 文件B:用汇编语言编写的C++到汇编语言编译器 文件C:一个C++程序,它可以读取数据文件中的数字并打印其中值 文件D:文件C中值程序的数据场 要计算中值,必须进行图5.28所示的四次计算机运行。每次运行都涉及一个输入文件,该文件将由程序操作以生成输出文件。一次运行产生的输出文件可用作输入文件或后续运行的程序。描述文件E、F、G和H的内容,并用适当的字母标记图5.27中的空块 图5.28

假设您有一台Pep/8类型的计算机和以下磁盘文件:

  • 文件A:用机器语言编写的Pep/8汇编语言汇编程序
  • 文件B:用汇编语言编写的C++到汇编语言编译器
  • 文件C:一个C++程序,它可以读取数据文件中的数字并打印其中值
  • 文件D:文件C中值程序的数据场
要计算中值,必须进行图5.28所示的四次计算机运行。每次运行都涉及一个输入文件,该文件将由程序操作以生成输出文件。一次运行产生的输出文件可用作输入文件或后续运行的程序。描述文件E、F、G和H的内容,并用适当的字母标记图5.27中的空块

图5.28 输入窗口

Run 1  -- A -- E
Run 2    -   -- F3
Run 3  --     -- G
Run 4  --   --
我想: C++-->(编译器)-->>汇编语言->(汇编程序)-->机器代码
我看到PEP8汇编程序为变量生成空间。 但是让我们假设我有一个包含数据的文件:它在哪里以及如何适应流程?在编译源代码C++的同时,它是否被翻译成机器语言? 如何回答原来的问题

  • 使用汇编程序汇编C++编译器获取机器代码。李>
  • 使用步骤1中的编译器编译中值C++代码,这将给出中间汇编代码。
  • 从步骤#2中汇编中值汇编代码,这将为您提供中值机器代码
  • 在输入数据文件上运行中值机器代码程序,这将为您提供输出

  • 不,数据文件当然是由中间值程序本身处理的。数据文件--中间值程序(c++)--输出是什么?或者更确切地说:数据文件===>中间值程序。exe==>输出是什么(机器代码、程序集或其他?),它会发生什么?描述中说“打印它们的中间值”,所以这就是输出。但这只是一个数字,不是一个文件。假定运行1:C++程序读取中值=>汇编编译器=>汇编代码。Run2:汇编代码==>>汇编程序===>机器代码(这是exec)为什么不直接编译成机器代码,假设计算机/Cpu的类型已知?为什么要进行中间装配步骤?如果没有这些规则,您可以这样做。你只有一个文件可以产生机器代码,那就是你的汇编程序。在现实生活中,有中间步骤吗?在PC上编译一个简单的C++或其他高级语言时,是否还有一个汇编程序,如果是的话,为什么?依赖于工具链。code>gcc生成asm代码,然后组装,我相信visual studio直接生成机器代码
    llvm
    还产生一些中间语言。这样你就可以重复使用零件。