gpt4 book ai didi

assembly - 硬件如何运行汇编?第一个汇编程序是如何编写的?

转载 作者:行者123 更新时间:2023-12-02 10:19:01 26 4
gpt4 key购买 nike

在学习了有关编译器的类(class)并自己制作了一个基本的编译器之后,我仍然对第一个编译器抱有挥之不去的疑问。

从高到低的级别,我看到代码运行在 C 或 C++ 中,它们被编译器(比如 gcc)转换为相应的汇编语言。此代码依赖于平台(假设我使用 intel x86 架构)。

现在问题来了,硬件如何运行汇编?

我记得在我的计算机组织类(class)中,每个汇编语句都会转换为特定格式(取决于处理器),例如,像 mov ax,bx 这样的语句会转换为它的操作码,比如 0110 101010 101000。假设汇编程序会解析我的汇编语言程序中的每条语句并将其转换为机器代码,那么第一个汇编程序是如何编写的?

最佳答案

其实我想你是明白的。首先标题问题,硬件如何运行汇编。硬件在机器代码或机器指令或任何术语上运行。正如您所正确描述的那样,汇编是该机器代码的代表,并不总是但接近一对一的关系,一条汇编指令与一条机器指令。这些是位、一和零,硬件现在可以执行这些位描述的操作。

现在第一个汇编程序是如何编写的?用铅笔和纸。您通常会以某种伪汇编形式写下指令,因为您可能没有完全定义该语言,然后根据编码写下这些位,这与汇编器所做的相同。然后使用某种机制将这些位输入计算机并让它运行。

最终,自然地,对于较大的程序来说,这会变得乏味,因此您决定编写一个较大的程序来解析更容易编写的语言,然后使用更复杂的语言和程序重复此操作。

即使在今天,这取决于团队及其做事方式以及测试指令解码器的个别工程师等。手动编写机器代码仍然会发生。最终,汇编器被创建,你切换到它,有时有一个更高级别的编译器,你切换到它来进行大部分编码,但在芯片开发世界中,你仍然非常清楚,并且时不时地会修改机器代码级别的指令位。

关于assembly - 硬件如何运行汇编?第一个汇编程序是如何编写的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12007435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com