微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决机器码和汇编语言有什么关系?

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

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

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

祝您有美好的一天!

解决方法

如果您希望从事处理器业务,无论是芯片还是 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,例如员工将直接支持这项工作。同样,有些工具是由与供应商完全分开的人创建的。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。