Assembly 汇编语言?
对于没有CS背景(我的专业是应用数学)的人来说,asm语言的学习曲线陡峭吗 通常,熟悉高级编程语言(如C/C++等)的人编写asm程序需要多长时间才能完成一些基本的数学计算,如线性回归、一维正交多项式计算等 顺便问一下,现代asm是否支持以下功能:Assembly 汇编语言?,assembly,Assembly,对于没有CS背景(我的专业是应用数学)的人来说,asm语言的学习曲线陡峭吗 通常,熟悉高级编程语言(如C/C++等)的人编写asm程序需要多长时间才能完成一些基本的数学计算,如线性回归、一维正交多项式计算等 顺便问一下,现代asm是否支持以下功能: 使用SIMD指令的数学运算 多线程和线程控制 通常,在asm中执行此操作而不是在C/C++中使用一些最新优化的编译器会有很大的性能提升吗 对于大多数人来说,ASM通常被认为是相当困难的。然而,它在逻辑上是简单明了的,我认为有应用数学背景的人不会有
- 使用SIMD指令的数学运算
- 多线程和线程控制
通常,在asm中执行此操作而不是在C/C++中使用一些最新优化的编译器会有很大的性能提升吗 对于大多数人来说,ASM通常被认为是相当困难的。然而,它在逻辑上是简单明了的,我认为有应用数学背景的人不会有问题 在汇编中,您需要了解处理器是如何工作的,因为在编写asm时,您最终将以最基本的方式操纵处理器 考虑这一点:
if (val)goto next;
翻译成如下内容:
mov eax, [val]
cmp eax, 0
je next
本质上,汇编需要了解程序如何使用处理器执行任务。如何需要和使用寄存器(如eax)
一般来说,在asm中执行任务比在C中执行任务需要更长的时间。至于具体情况,我不知道
一些现代指令集提供了新的数学运算,这些运算可能是你想要的,也可能不是你想要的。
多线程,这是操作系统的角色,与处理器无关,因此与汇编无关(这不是严格的事实,因为硬件多任务存在,但很少使用,但我离题了。)
与优化的C/C++相比,编写ASM通常不会获得多少性能提升,除非您编写了一段小的、重复的代码,并且花了大量时间进行优化。对于大多数人来说,ASM通常被认为是相当困难的。然而,它在逻辑上是简单明了的,我认为有应用数学背景的人不会有问题 在汇编中,您需要了解处理器是如何工作的,因为在编写asm时,您最终将以最基本的方式操纵处理器 考虑这一点:
if (val)goto next;
翻译成如下内容:
mov eax, [val]
cmp eax, 0
je next
本质上,汇编需要了解程序如何使用处理器执行任务。如何需要和使用寄存器(如eax)
一般来说,在asm中执行任务比在C中执行任务需要更长的时间。至于具体情况,我不知道
一些现代指令集提供了新的数学运算,这些运算可能是你想要的,也可能不是你想要的。
多线程,这是操作系统的角色,与处理器无关,因此与汇编无关(这不是严格的事实,因为硬件多任务存在,但很少使用,但我离题了。)
与优化的C/C++相比,编写ASM通常不会有太多的性能提升,除非您编写了一小段重复的代码,并且花了大量时间进行优化
通常,在asm中执行此操作而不是在C/C++中使用一些最新优化的编译器会有很大的性能提升吗
没有
编写asm更加困难和耗时:因为每个asm指令都比HLL语句简单,所以需要更多的asm指令来实现相同的功能。在汇编中写入会带来额外的复杂性,例如,只有少量寄存器
此外,有许多方法可以编写汇编来实现相同的功能:例如,mov eax,0
和xor eax,eax
,两者都将零写入eax
寄存器,但其中一种速度比另一种快。此外,asm指令序列对它的运行速度也有影响:不明显或较长的指令序列如果匹配以保持忙碌,可能会更快
编写最佳汇编是计算密集型的:根据循环计数、考虑流水线等计算出各种可能性可能需要多长时间。这种计算由优化编译器完成,它可能比您做得更好(更快、更准确)
这是一本非常有趣的书,但在本书的结尾,我们将开始讨论奔腾类CPU,您可以看到编写最佳汇编变得越来越复杂
如果你对编译器的输出不满意,你可能会考虑得到一个更好的编译器:例如,英特尔的编译器产生(或者至少用于生产)比其他编译器更优化,并且包括对特定CPU的更好支持、不寻常的操作码、可能有更好的运行库等。 通常,在asm中执行此操作而不是在C/C++中使用一些最新优化的编译器会有很大的性能提升吗
没有 编写asm更加困难和耗时:因为每个asm指令都比HLL语句简单,所以需要更多的asm指令来实现相同的功能。在汇编中写入会带来额外的复杂性,例如,只有少量寄存器 此外,有许多方法可以编写汇编来实现相同的功能:例如,mov eax,0
和xor eax,eax
,两者都将零写入eax
寄存器,但其中一种速度比另一种快。此外,asm指令序列对它的运行速度也有影响:不明显或较长的指令序列如果匹配以保持忙碌,可能会更快
编写最佳汇编是计算密集型的:根据循环计数、考虑流水线等计算出各种可能性可能需要多长时间。这种计算由优化编译器完成,它可能比您做得更好(更快、更准确)
这是一本非常有趣的书,但在书的最后,它开始谈论奔腾类