Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编语言?_Assembly - Fatal编程技术网

Assembly 汇编语言?

Assembly 汇编语言?,assembly,Assembly,对于没有CS背景(我的专业是应用数学)的人来说,asm语言的学习曲线陡峭吗 通常,熟悉高级编程语言(如C/C++等)的人编写asm程序需要多长时间才能完成一些基本的数学计算,如线性回归、一维正交多项式计算等 顺便问一下,现代asm是否支持以下功能: 使用SIMD指令的数学运算 多线程和线程控制 通常,在asm中执行此操作而不是在C/C++中使用一些最新优化的编译器会有很大的性能提升吗 对于大多数人来说,ASM通常被认为是相当困难的。然而,它在逻辑上是简单明了的,我认为有应用数学背景的人不会有

对于没有CS背景(我的专业是应用数学)的人来说,asm语言的学习曲线陡峭吗

通常,熟悉高级编程语言(如C/C++等)的人编写asm程序需要多长时间才能完成一些基本的数学计算,如线性回归、一维正交多项式计算等

顺便问一下,现代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指令序列对它的运行速度也有影响:不明显或较长的指令序列如果匹配以保持忙碌,可能会更快

编写最佳汇编是计算密集型的:根据循环计数、考虑流水线等计算出各种可能性可能需要多长时间。这种计算由优化编译器完成,它可能比您做得更好(更快、更准确)

这是一本非常有趣的书,但在书的最后,它开始谈论奔腾类