Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 从汇编代码到机器代码的旅程_Assembly_Compiler Construction_Signals_Byte_Machine Code - Fatal编程技术网

Assembly 从汇编代码到机器代码的旅程

Assembly 从汇编代码到机器代码的旅程,assembly,compiler-construction,signals,byte,machine-code,Assembly,Compiler Construction,Signals,Byte,Machine Code,我不能完全理解的是,我们在电脑中输入的内容和从屏幕上读取的内容如何转化为电脑可以利用和执行的内容。即使在汇编等最低级语言中,我也读到“汇编是高级语言和实际机器代码本身之间的桥梁”。但实际上这是如何工作的。如果计算机只能通过高、低信号进行操作,那么我们如何能够编写一个通过字母、数字和符号进行操作的编译器呢。这些代码串实际上如何成为通过晶体管门发射的高电平和低电平信号?当你键入一个键时,这实际上是一系列信号存储在计算机电路中某个寄存器中吗?这是否也会将该角色的信号发送到屏幕上,或者这是一个完全独立的

我不能完全理解的是,我们在电脑中输入的内容和从屏幕上读取的内容如何转化为电脑可以利用和执行的内容。即使在汇编等最低级语言中,我也读到“汇编是高级语言和实际机器代码本身之间的桥梁”。但实际上这是如何工作的。如果计算机只能通过高、低信号进行操作,那么我们如何能够编写一个通过字母、数字和符号进行操作的编译器呢。这些代码串实际上如何成为通过晶体管门发射的高电平和低电平信号?当你键入一个键时,这实际上是一系列信号存储在计算机电路中某个寄存器中吗?这是否也会将该角色的信号发送到屏幕上,或者这是一个完全独立的过程,当你按下一个键时会发生?

你实际上在那里问了很多(尽管是相关的)问题

我建议深入研究组装。处理器在所谓的“机器代码”上运行,这实际上只是数字,其中类似“0x1234 0x001A 0x0002”的内容可能意味着“将2添加到寄存器X的内容”。大多数汇编指令直接转换为对应的机器代码,因此您将了解处理器是如何逐个执行指令的。在此之后,您可以进一步阅读处理器体系结构(正如TheZ所建议的),在这里您将了解这些机器代码指令实际上是如何转换为不同的晶体管进行切换和存储位的

CPU也有一种叫做“中断”的东西,它是(非常简单地说)线路,例如键盘输出高电压,CPU被触发执行某个子例程进行处理,例如按键。从这个中断到屏幕上出现的一个字母,尽管这仍然是一段相当长的旅程


不要一头扎进去,因为这只会让你感到困惑,要一步一步地学习。

从处理器架构开始。因为你想知道的似乎是通过处理器运行的高低信号是如何导致任何事情发生的。这是一个过于宽泛的问题,是电气工程,而不是编程。您需要从一个非常简单的处理器开始,因为您的理解似乎还很初级。你也可以看看简单的FPGA CPU,因为你可能会设计和运行一个w/o太难了(最终)。它不会取代电子工程学位,该学位重在物理学、计算机科学和其他几年的学习和实地经验,这些都是真正理解它的各个方面所需要的。但它至少把你从一些不可能与计算机有任何关系的东西带到基本的构造块中。