是否有一个大会ISA学习?如果没有,我应该学习哪一个?

Gam*_*man 0 embedded assembly 32-bit x86-16 automotive

我已经在大学里学习了8086英特尔处理器的汇编编程.我现在正试图修改它.

我听说汽车嵌入式系统需要汇编,所以我想知道哪种方式可以学习它是最好的?我不需要浪费时间,因为我想找份工作.

修改8086大会真的有帮助吗?或者转向32位x86组件更好?

谢谢.

Cli*_*ord 7

你的头衔问一个完全不同的身体问题.一般来说,你应该问一个简单的问题.

不,没有通用的汇编语法 - 或实际存在,但您可能并不意味着,汇编语法通常是:

[<label>:] <opcode> <operands> [<comment>]
Run Code Online (Sandbox Code Playgroud)

或类似的.

对于x86,事实上有两种常见的语法 - 英特尔和AT&T(来自不同汇编程序的多种英特尔语法变体,包括非指令行的完全不同的指令),但它们和其他形式或多或少都是这种形式.

但你可能想要的是有一个通用的汇编语言指令集.如果是这样的话,那么没有没有.这与语法不同.与自然语言一样,机器语言具有语法,词汇和语义 - 单词的排序方式,可用的单词以及它们的含义.关于汇编语言的观点是汇编助记符和机器码指令集之间存在一对一的关系.因此,存在与处理器架构一样多的汇编语言.

修改8086大会真的有帮助吗?或者转向像32位装配这样的东西更好?

很少使用16位 8086汇编程序(在你的情况下不在教学之外),如果你感兴趣的话,x86一般不是汽车设备."32位汇编"不是一件事,除非你是特指32bit x86汇编.

学习汇编语言对于理解计算机如何工作的基础知识很有用 - 这可能就是为什么你被教授过时的指令集,因为目的不是为了编写代码而是为了理解基本原理.这反过来可以导致编写更好的高级语言代码,编译成更小,更快的机器语言代码.它在调试高级代码时也很有用 - 有时您需要在指令级执行,以了解编译器生成的代码无法满足您的期望.但为此你只需要能够阅读汇编,而不是它.

可以用C,C++等系统级语言实现的大型代码的汇编语言是不必要且无效的.编译器不仅是目标机器代码指令集的专家,因此您不必如此,但高级语言也更有可能被广泛的测试,验证,静态分析工具所支持,安全性分析,性能分析和错误检测.该代码还将更易于维护,更可重用,并能够从更广泛的第三方库中受益.

同样以这种方式看待它,所以你是PIC组件的专家,但你的下一个工作是ARM Cortex-M,现在你不再是专家了,并且编写的代码远比编译器生成的代码差,并且花更长的时间去做.然后你就失业了.

在一个庞大的代码库中,一个现代优化编译器可以更好地制作高效的asm而不是人类可以或将会,在一些重要的循环之外你可以回来调整(通过调整C或重写一个循环在asm).内联和常量传播在asm中很难,但编译器非常出色.对于编译器目标良好且编译器开发人员花费大量时间的处理器(如x86或ARM)尤其如此.