【问题标题】:Journey from Assembly Code to Machine Code [closed]从汇编代码到机器代码的旅程[关闭]
【发布时间】:2012-07-17 20:57:59
【问题描述】:

我无法完全理解的是,我们在计算机中键入并从屏幕上读取的内容如何变成计算机可以使用和执行的内容。即使在汇编等最低级语言中,我也读到“汇编是高级语言与实际机器代码本身之间的桥梁”。但这真的是如何工作的。如果计算机只能根据高低信号进行操作,我们如何编写一个可以根据字母数字和符号进行操作的编译器。这些代码串实际上如何成为通过晶体管栅极发射的高低信号?当您键入一个键时,这实际上是存储在计算机电路某处的寄存器中的一系列信号吗?这是否也会将该字符的信号发送到屏幕上,还是当您按下一个键时,这是一个完全独立的过程?

【问题讨论】:

  • 从处理器架构开始。因为您似乎想知道的是通过处理器运行的高低信号如何导致任何事情发生。
  • 这是一个过于宽泛的问题,是电气工程,而不是编程。你会想从一个非常简单的处理器开始,因为你的理解似乎很初级。您还可以查看简单的 FPGA CPU,因为您实际上可以设计和运行一个没有太多困难的(最终)。
  • 获取 Petzold 的《代码》一书。 amazon.com/Code-Language-Computer-Hardware-Software/dp/… 它不会替代以物理学为主的电气工程学位、计算机科学和其他多年的学习和实地经验,需要真正了解它的各个方面。但它至少将你从与计算机不可能有任何关系的东西带入基本的构建块。

标签: assembly compiler-construction signals byte machine-code


【解决方案1】:

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

我建议深入研究组装。处理器在称为“机器代码”的东西上运行,这实际上只是数字,其中“0x1234 0x001A 0x0002”可能意味着“将 2 加到寄存器 X 的内容”。大多数汇编指令直接翻译成它们的机器代码对应物,因此您将了解处理器如何一一执行指令。之后,您可以更进一步,阅读处理器架构(如 TheZ 建议的那样),在那里您将了解这些机器代码指令如何实际转换为不同的晶体管被​​切换和位被存储。

CPU 也有一些称为“中断”的东西,它们是(非常简单地说)在其上的行,例如键盘输出高电压,触发CPU执行某个子程序进行处理,例如一个按键。从这个中断到出现在屏幕上的一封信,虽然这仍然是一段旅程。

不要一头雾水,因为它只会让你感到困惑,一步一步地学习。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2021-04-23
    • 2010-10-01
    • 2014-06-21
    • 2012-01-24
    • 2011-05-04
    相关资源
    最近更新 更多