Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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_Cpu_Cpu Architecture - Fatal编程技术网

Assembly 程序集是否仅在软件中实现?

Assembly 程序集是否仅在软件中实现?,assembly,cpu,cpu-architecture,Assembly,Cpu,Cpu Architecture,我有一些困惑 汇编是否仅在带有汇编程序的软件中实现 谁更新和编写汇编程序 cpu甚至不知道程序集存在吗 如果说Intel发布了一个新的cpu,并添加了新的指令,那么需要做些什么来利用这些新指令 我的意思是,最终cpu只执行机器代码,然后通过微码引擎将其转换为电信号 汇编是否仅在带有汇编程序的软件中实现 汇编语言是一种非常接近机器代码的语言。因此,必须将其视为软件 谁更新和编写汇编程序 因此,每个对指令集有很好了解的人都可以编写汇编程序,但他也需要知道汇编代码。这意味着他还必须知道操作

我有一些困惑

  • 汇编是否仅在带有汇编程序的软件中实现

  • 谁更新和编写汇编程序

  • cpu甚至不知道程序集存在吗

  • 如果说Intel发布了一个新的cpu,并添加了新的指令,那么需要做些什么来利用这些新指令

    我的意思是,最终cpu只执行机器代码,然后通过微码引擎将其转换为电信号

汇编是否仅在带有汇编程序的软件中实现

汇编语言是一种非常接近机器代码的语言。因此,必须将其视为软件

谁更新和编写汇编程序

因此,每个对指令集有很好了解的人都可以编写汇编程序,但他也需要知道汇编代码。这意味着他还必须知道操作系统想要这种格式。Cpu制造商具备所需的知识,但如果提供了足够的文档,每个人都可以编写类似于开源社区的汇编程序

cpu甚至不知道程序集存在吗

Cpu不知道机器代码是如何生成的。它只是执行机器指令

如果说Intel发布了一个新的cpu,并添加了新的指令,那么需要做些什么来利用这些新指令


如果英特尔添加了新指令,则必须通过为这些指令添加新的助记符来更新汇编程序。

汇编语言只不过是对机器指令进行编码的一种形式,与十六进制或十进制数字相同,还添加了一些用于描述内存中数据字段的指令。(注意,在冯·诺依曼体系结构中,数据和可执行代码没有区别)

当然,汇编程序提供的编码对于人类的阅读、书写和理解来说要方便得多。它的发明就是为了实现这个目标

汇编程序是由人类编写的。例如,Tomasz Grysztar,一位来自波兰的杰出程序员和数学家,已经编写并得到了他的支持

是另一个好的汇编程序。它是由一组程序员编写的

汇编是否仅在带有汇编程序的软件中实现

对。汇编语言和其他语言一样,是一种编程语言,它只使用与处理器中的指令集非常接近的操作代码。它仍然从包含源代码的文本文件编译成处理器可以使用的机器代码

谁更新和编写汇编程序

任何喜欢的人,从大型软件公司到开源项目

创建处理器的公司指定指令集,任何人都可以编写汇编程序来编译该指令集

cpu甚至不知道程序集存在吗

没错。处理器只执行机器代码,它不知道它是通过编译汇编源代码还是Visual Basic源代码创建的

如果说Intel发布了一个新的cpu并添加了新的指令, 利用这些新指令需要做些什么


您可以直接在汇编程序中使用它们,只需将指令的字节码放入代码中。如果要使用汇编操作代码来使用它们,则需要在汇编程序中添加这些代码。

这还不完全清楚。汇编语言只是另一种与底层指令集非常接近(实际上是1:1)的编程语言。因此,在此上下文中,x64汇编设计并实现intel?如果添加新指令,谁更新汇编程序?谁开发汇编程序。英特尔必须更新它自己的实现,开源社区,它自己的版本,…@JUnitorCompressor——嗯,英特尔实际上没有汇编程序实现。至少,还没有出版。是的,你是对的!!!我只是想说,每个拥有实现的人都必须更新它。因此,为了编写汇编程序,开发人员必须知道每一条指令的机器代码,以及寄存器机器代码中的每一种编码?@BsD你听起来很难,但事实并非如此。当然,他们不需要背诵每一个操作码,他们可以根据需要查找。很好的解释。这是否意味着Intel和AT&T语法就像是一个标准,当将机器代码映射到汇编助记符时,汇编程序必须遵循这个标准?@BsD:不,汇编程序根本不需要遵循指令集,任何人都可以根据自己的喜好发明自己的指令集,但保持接近已定义的指令集意味着许多程序员已经知道了这一点。一个值得注意的例外是.NET framework,这是一种面向对象的汇编语言,它编译成字节码,而字节码不是特定于任何CPU的。当代码被执行时,它是第一个由JIT(准时制)编译器自动转换为特定CPU运行的机器代码。有两个问题:首先,对于“创建处理器的公司指定指令集”,不清楚ARM(以及其他销售设计而非硬件的公司)是否会被称为“创建”处理器和个人可以授权ISA创建硬件,而无需获得更改ISA的许可;其次,ISA说明符通常指定操作码名称,甚至是程序集格式。@PaulA.Clayton我还没有完全理解你说的话。你是说ARM只卖ISA而不卖cpu?第二,你所说的ISA说明符是什么意思?@BsD ARM(目前)只销售处理器(以及其他硬件,如GPU内核)的设计,其他人将其集成到芯片设计中并制造,以及设计和制造ARM兼容处理器的权利(以及扩展ISA的权利)。ARM不卖硬件。所谓ISA说明符,我指的是定义ISA的MIPS、ARM、Tensilica等组织,通常还有定义ISA并销售硬件的Intel、AMD、Oracle等组织。,