gpt4 book ai didi

assembly - 汇编语言是如何工作的?

转载 作者:行者123 更新时间:2023-12-03 22:50:59 26 4
gpt4 key购买 nike

我很好奇汇编语言是如何工作的——我保持一般性,因为我不仅仅是在谈论英特尔 x86 汇编(尽管它是我远程熟悉的唯一一个)。为了更清楚一点......

mov %eax,%ebx

计算机如何知道像“mov”这样的指令的作用?它怎么知道 eax 和 ebx 是寄存器?人们会为汇编语言编写语法吗?他们怎么写这个?我想没有什么能阻止某人编写一种替代 mov 的汇编语言。指令类似于 doghorse等,(显然这根本不是语义)

对不起,如果这不是太清楚,但我觉得有点令人费解 - 我知道这不可能是魔法,但我看不出它是如何工作的。我在维基百科上查了一些东西,但它似乎只是说它把它翻译成机器代码,好吧,我想问的是我想这种翻译是如何发生的。

想法?

编辑:我意识到这些东西是在引用手册和东西中定义的,我想我想知道的是你如何告诉你的处理器“好吧,当你看到 mov 你会这样做”。我也知道它可能是一吨逻辑门的序列......但是处理器必须有某种方式来识别 mov是表示“使用这些逻辑门”的符号

最佳答案

你看到的是助记符,它使程序员编写汇编变得容易;然而,它不能以助记符形式执行。
当你通过汇编器传递这些汇编指令时,它们被翻译成它们代表的机器代码,这是 CPU 及其各种协处理器解释和执行的(它通常被 CPU 分解为更小的单元,称为微操作) .

如果您对它究竟是如何做到的感到好奇,那么这是一个漫长的过程,但是 this拥有所有这些信息。

所有语义等都由汇编器处理,汇编器在可能的情况下检查有效性和完整性(但是仍然可以组装无效代码!)。这基本上使汇编成为一种低级语言,即使它与输出的机器代码具有 1 比 1 的相关性(除非使用基于宏的汇编程序,但宏仍然扩展为 1 比 1)。

关于assembly - 汇编语言是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6463938/

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