繁体   English   中英

机器码和汇编语言有什么关系?

[英]What is the relation between machine code and assembly language?

我想知道机器码和汇编语言之间的关系。

汇编器是由架构制造商共同制造的吗?

否则,任何人都可以通过参考架构制造商的指令集来制造汇编器吗?

祝你今天过得愉快!

如果您希望从事处理器业务,无论是芯片还是 IP 核,如果没有工具链,您将走不远。 无论是像过去一样成长的家庭(仍然有人这样做)或说 gnu 或 llvm。

同样,如果没有指令集文档,您将无法走多远。 该文档几乎总是包含语法。 现在,该语法与供应商创建或支持的汇编器工具的语法完美匹配。 但是您可能会看到工具在没有文档匹配的情况下发展。 您需要一些最小的方法来用人类可读的东西来描述指令集。 所以这已经成为常态。

但是有一个标准并不是事情发生的方式。 使用流行平台很容易看到,ARM、MIPS x86(不谈论intel vs at&t)等。

正如我们所见,汇编程序作者可以完全自由地做他们想做的任何事情。

orange pickle,apple[#4]

可能是一个完全有效的指令,您所需要的只是一个人用该语法创建一个汇编程序,然后它就存在了。

现在你的汇编器会有多有用和流行吗? 不是特别的。 在 x86 中重载 mov 迫切需要不同的助记符,但即使在那里你也会感到一些阻力,尽管解决了原始字节 ptr 类型解决方案的许多问题。

基本上,如果汇编程序为目标生成可用的机器代码,则它是一种汇编语言。 还要理解,虽然两个工具可能支持 ldr r0,[r1] 指令的助记符不是整个汇编语言。 大多数情况下,不兼容性超出了指令本身,您如何进行注释、定义标签、宏、表示数字(十进制、十六进制等)。 但是我们看到主流工具的指令本身是不兼容的(不是在谈论 intel 与 at&t 的区别)。 所以这已经发生了,而且还在继续发生。

有些是由他们创建/拥有工具的供应商制造的。 有些是签约的。 而免费工具、GNU、LLVM,例如员工将直接支持这项工作。 同样,有些工具是由与供应商完全分开的人创建的。

是否可以从文档中创建汇编程序。 实际上,这在我以前很少见,有时仍然通过编写反汇编程序来学习指令集。 有些比其他的要好,通常你需要一个工作工具来找出文档中的差距。 但是,是的,如果文档写得很好,您当然可以创建自己的汇编器、链接器等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM