我已经完成了编译器课程并自己制作了一个基础知识,我对第一个编译器仍然存在这种挥之不去的疑问.
从高级别到低级别,我看到运行的代码可以说是C或C++,它可以通过它的编译器转换为相应的汇编语言(比如说gcc).此代码依赖于平台(假设我在intel x86架构上).
现在问题是,硬件如何运行程序集?
我记得从我的计算机组织类中,每个汇编语句都转换为特定的格式(取决于处理器),例如,像mov ax,bx这样的语句被转换为它的操作码,比如0110 101010 101000.假设汇编程序解析我的汇编语言程序中的每个语句都将其转换为机器代码,那么第一个汇编程序是如何编写的?
old*_*mer 10
其实我觉得你明白了.首先是标题问题,硬件如何运行程序集.硬件运行在机器代码或机器指令或任何术语上.正如您所正确描述的那样,汇编是该机器代码的代表,并不总是但是接近一对一的关系,一个asm指令到一个机器指令.这些是位,1和0,硬件现在可以执行位描述的操作.
现在第一个汇编程序是如何编写的?用铅笔和纸.您通常会在某种伪程序集中写下指令,因为您可能没有完全定义语言,然后根据编码写下这些位,这与汇编程序的作用相同.然后使用某种机制将这些位提供给计算机并告诉它运行.
最后,自然,这对于较大的程序来说变得乏味,因此您决定编写一个更大的程序来解析一种更容易编写的语言,然后用更复杂的语言和程序重复这一过程.
即使在今天,取决于团队和他们如何做事以及个别工程师测试指令解码器等.手工编写机器代码仍然会发生.最终创建了汇编程序并切换到该汇编程序,有时会有更高级别的编译器,您可以切换到大部分编码,但在芯片开发领域,您仍然非常了解并且不时会修改机器代码级别的指令位.
| 归档时间: |
|
| 查看次数: |
2519 次 |
| 最近记录: |