assembly 有没有一个伊萨学?如果没有,我应该学哪一个?

4bbkushb  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(78)

我在大学里学过8086英特尔处理器的汇编程序设计,现在正在复习。
我听说汽车嵌入式系统需要组装,所以我想知道学习它的方法是最好的?我不需要浪费时间,因为我想找工作。
修改8086的汇编真的有帮助吗?* 或者 * 移动到像32位x86汇编这样的东西更好?

hvvq6cgz

hvvq6cgz1#

你的标题问的问题和正文完全不同。一般来说,你应该问一个直截了当的问题。
不,没有通用的汇编语法--或者实际上有,但您可能不是这个意思,汇编语法是 * 一般 *:

[<label>:] <opcode> <operands> [<comment>]

字符串
、或类似物。
对于x86,实际上有两种常见的语法-- Intel和AT&T(Intel语法的多种变体来自不同的汇编器,包括用于非指令行的完全不同的指令),但它们和其他语法或多或少都是这种形式。
但你可能想问的是“是否有通用汇编语言指令集”。如果是这样的话,那么“不”就没有了。这与“语法”不是一回事。与自然语言一样,机器语言也有语法、词汇和语义--单词是如何排序的,哪些单词是可用的,以及它们的含义。汇编语言的要点在于汇编助记符和机器代码指令集之间存在着一对一的关系。因此,有多少种处理器体系结构,就有多少种汇编语言。
修改8086的汇编真的有帮助吗?或者转移到类似32位汇编的东西更好?

  • 16位 * 8086汇编程序很少使用(如在您的案例中所示,超出了教学范围),而且x86一般来说并不是一种汽车设备(如果您对它感兴趣的话)。除非您特别指的是32位x86汇编程序,否则“32位汇编程序”不是一个东西。

学习汇编语言对于理解计算机的基本工作原理是很有用的--这可能就是为什么你会学习一套过时的指令集,因为你的目的不是为了能够用它来编码,而是为了理解基本原理。这反过来又能写出更好的高级语言代码,编译成更小、更好的代码。更快的机器语言代码。它在调试高级代码时也很有用--有时你需要在指令级单步执行,以了解为什么编译器生成的代码没有达到你的预期。但是,你只需要能够 * 读取 * 汇编,而不是写出来。
对于可以在系统级语言(如C或C++)中实现的大量代码,汇编语言是不必要的,也是低效的。不仅编译器是目标机器代码指令集的Maven,因此您不必如此,而且高级语言也更有可能得到广泛的工具支持,这些工具用于测试、验证、静态分析、安全性分析性能分析和错误检测。代码还将更易于维护,更易于重用,并能够从更广泛的第三方库中受益。
也可以这样看,例如,你是PIC汇编方面的Maven,但你的下一份工作是ARM Cortex-M,现在你不再是Maven了,你编写的代码将比编译器生成的代码差得多,而且耗时更长,那么你就失业了。
在一个大的代码库中,现代优化编译器在生成高效asm方面的工作可能比人类做得更好,除了一些您可以返回并调优的重要循环之外。内联和常量传播在asm中很难实现,但编译器在这方面做得非常出色,尤其是对于那些编译器目标很好、编译器开发人员花费了大量时间的处理器,如x86或ARM,更是如此。

相关问题