是否有一种编程语言“下面”汇编?

时间:2021-09-27 03:15:54

Is there a programming language "below" Assembly?

是否有一种编程语言“下面”汇编?

17 个解决方案

#1


70  

Actually there's a level of code that sits below machine code, called Microcode.

实际上,有一个代码级别位于机器代码下面,称为Microcode。

#2


38  

Machine code. Time it was programmers coded in the 1 and 0's of binary. Hex was considered an advance over this. That was before assembly, which uses the code's names and separates the parts of an instruction into its parts.

机器代码。时间是程序员用二进制的1和0编码的。 Hex被认为是对此的进步。那是在汇编之前,它使用代码的名称并将指令的各个部分分成它们的部分。

#3


18  

Assembly is a text representation of Machine code. It has a single statement which represents a single instruction within the CPU itself. "MOV X, Y" for example, is a single instruction which passes through the CPU and moves a value X into position Y. To get to machine code, the CPU will have a number that represents 'MOV', and a number that represents 'X' (if it's not already a number), and a number that represents Y. These raw HEX binary values are the Machine code. It's the numbers that cause the CPU to direct voltages / currents through the transistors to make it do what it does.

Assembly是机器代码的文本表示。它有一个语句,表示CPU本身内的单个指令。例如,“MOV X,Y”是一条指令,它通过CPU并将值X移动到位置Y.要获得机器代码,CPU将有一个代表“MOV”的数字和一个代表的数字'X'(如果它不是数字)和一个代表Y的数字。这些原始HEX二进制值是机器代码。这是导致CPU通过晶体管引导电压/电流以使其完成工作的数字。

Machine code is a lower level, but it's very very close to assembly. It's so close, that no one bothers using it due to the advantages of being able to read the instruction "MOV" = move. Variable names also become readable rather than raw addresses in the stack or heap.

机器代码是较低级别,但它非常接近装配。它非常接近,没有人会因为能够读取“MOV”=移动指令的优点而烦恼它。变量名也变得可读,而不是堆栈或堆中的原始地址。

#4


12  

And to go even lower, (not that the word "language" is appropriate for "machine" language or for even lower physical layers), but below machine language is the configuration of the many gates and switches used to actually implement each binary opcode for the particular hardware (CPU) involved... A great book to read that covers this even lower level is by Charles Petzold, called "CODE"

甚至更低,(不是“语言”一词适用于“机器”语言或更低的物理层),但机器语言以下是用于实际实现每个二进制操作码的许多门和开关的配置所涉及的特定硬件(CPU)...一本很好的书,涵盖了这个甚至更低的水平,由Charles Petzold称为“CODE”

#5


8  

If by below, you mean lower level, then yes. There is machine language. Assembly is turned into machine language before it is run. On many modern processes the machine language is emulated in microcode. See this for more details on microcode.

如果在下面,你的意思是较低的水平,那么是的。有机器语言。程序集在运行之前就会变成机器语言。在许多现代流程中,机器语言是在微代码中模拟的。有关微代码的更多详细信息,请参阅此

#7


6  

I think the lowest you can get is something called Physics or TRW (The Real World). This is what chip designers and manufacturers use to create CPUs and other processors that can take the output of computer languages and turn them into something valuable.

我认为你能得到的最低价是物理学或TRW(真实世界)。这就是芯片设计者和制造商用来创建CPU和其他处理器的能力,这些处理器可以将计算机语言的输出转化为有价值的东西。

#8


3  

Depends on why you're asking. There's nothing that you can't do in assembly that you can do via some other method. Machine code is just another representation of the exact same data.

取决于你问的原因。你可以通过其他方法做任何你不能做的装配。机器代码只是完全相同数据的另一种表示。

#9


3  

The very first computers (ENIAC) used hard wiring so that output from one computation could be fed as input to another. To run another program, you had to unplug some cables and re-wire them differently.

最初的计算机(ENIAC)使用硬接线,因此一次计算的输出可以作为输入馈送到另一台计算机。要运行另一个程序,您必须拔下一些电缆并以不同方式重新连接它们。

#10


3  

Assembler is translated into machine code by the assembler. You could write it with a binary editor. (Ouch!) CISC computers can have microcode, which sequences segments of the chip (ALU, memory fetch, etc). Typically, no one writes microcode, except at the chip manufacturer.

汇编程序将汇编程序转换为机器代码。你可以用二进制编辑器编写它。 (哎哟!)CISC计算机可以有微码,它对芯片的各个部分进行排序(ALU,内存提取等)。通常,除芯片制造商外,没有人编写微码。

#11


3  

Well, there's machine language, as others have mentioned. Machine language is typically a 1-to-1 translation of what you write in assembly, so it's at the same level of abstraction as assembly code -- just much harder to write by hand.

嗯,有机器语言,正如其他人提到的那样。机器语言通常是您在汇编中编写的一对一翻译,因此它与汇编代码处于相同的抽象级别 - 手工编写要困难得多。

There are exceptions to this, like the pseudo-instructions provided by the MIPS assembly language.

这有例外,例如MIPS汇编语言提供的伪指令。

There is, or maybe I should say was a level below even assembly/machine language: microcode. Modern logic-transistor budgets being what they are, I suspect that microcode is losing its relevance.

有,或者我应该说是甚至低于汇编/机器语言的级别:microcode。现代逻辑晶体管预算就像它们一样,我怀疑微码正在失去其相关性。

#12


3  

Assembly language is the lower floor of the programming language building as machine code is not a language because it does not involve any grammatic rules to follow. Machine code may be the only data format to execute microprocessor operations: the CPU fetches data from memory and executes the instruction directly according to the machine code fetched.

汇编语言是编程语言构建的较低层,因为机器代码不是一种语言,因为它不涉及任何语法规则。机器代码可能是执行微处理器操作的唯一数据格式:CPU从存储器中提取数据并根据提取的机器代码直接执行指令。

However, in some recent designs, such as the Intel Pentium 4 and up, machine code is the expression of a lower level RISC execution unit operations, known as uops or microoperations. So the decoding logic of those designs is to translate CISC-type instructions into small uops which are generally targeted at a simpler load/store unit, RISC-like. In this aspect, we can say (altough this may not be technically exact) that machine code describes the "higher-level" complex instructions of the architecture, not the "real" operations that are carried atomically by the underlying execution logic of the CPU.

然而,在一些最近的设计中,例如Intel Pentium 4及更高版本,机器代码是较低级别RISC执行单元操作的表达,称为uops或微操作。因此,这些设计的解码逻辑是将CISC类型的指令转换为小的uop,这些指针通常针对更简单的加载/存储单元,类RISC。在这方面,我们可以说(尽管这可能在技术上并不精确)机器代码描述了架构的“更高级”复杂指令,而不是由CPU的底层执行逻辑原子地执行的“真实”操作。 。

So we've an architectural instruction set, or architectural machine code, and an inner-level "micro-instruction" set which is hidden from the outer world. The trace cache of the Intel processors was conceived to store such ops to optimize the superscalar performance of the processor (as the CPU executes uops not the architectural instruction-set available for execution by programs).

因此,我们有一个架构指令集,或架构机器代码,以及一个隐藏在外部世界中的内部“微指令”集。英特尔处理器的跟踪缓存被设想为存储此类操作以优化处理器的超标量性能(因为CPU执行微操作而不是可由程序执行的架构指令集)。

#13


2  

Well, you can always write code in binary (or hex, or some other representation). You'll then have to calculate jump offsets etc in your head. Not recommended. ;)

好吧,你总是可以用二进制(或十六进制或其他表示)编写代码。然后你必须计算你头脑中的跳跃偏移等。不建议。 ;)

#14


2  

Sort of. Machines don't read assembly, they read "machine language", which is what assembly is converted into. Machine language has "opcodes" instead of assembly's mnemonics, and these opcodes are usually just binary data. Machine code isn't usually considered human-readable.

有点。机器不读取汇编,它们读取“机器语言”,即汇编转换成的内容。机器语言有“操作码”而不是汇编的助记符,这些操作码通常只是二进制数据。机器代码通常不被认为是人类可读的。

On RISC systems, machine code is often a straightforward translation of assembly, but on x86 systems, in particular, the two are quite different.

在RISC系统上,机器代码通常是组装的直接转换,但在x86系统上,特别是两者完全不同。

#15


2  

Sure: "machine code", about which, Wikipedia, in the article on Assembly Language (http://en.wikipedia.org/wiki/Assembly_language), says: "implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture."

当然:“机器代码”,*在汇编语言文章(http://en.wikipedia.org/wiki/Assembly_language)中说:“实现了数字机器代码和其他常量所需的符号表示编程特定的CPU架构。“

#16


2  

Even below machine code, one could say, is VHDL - chip design. You don't even need to design the chip to execute code, but just instantly transform inputs into outputs.

可以说,甚至低于机器代码的是VHDL芯片设计。您甚至不需要设计芯片来执行代码,而只需将输入立即转换为输出。

(not that I'm an expert - I'm using C++)

(不是我是专家 - 我正在使用C ++)

#17


1  

You could send electric currents into the CPU and tell it where to place pixels. (Pretty much binary, but you don't use the computer to write it.)

您可以将电流发送到CPU并告诉它放置像素的位置。 (几乎是二进制文件,但你不使用计算机来编写它。)

#1


70  

Actually there's a level of code that sits below machine code, called Microcode.

实际上,有一个代码级别位于机器代码下面,称为Microcode。

#2


38  

Machine code. Time it was programmers coded in the 1 and 0's of binary. Hex was considered an advance over this. That was before assembly, which uses the code's names and separates the parts of an instruction into its parts.

机器代码。时间是程序员用二进制的1和0编码的。 Hex被认为是对此的进步。那是在汇编之前,它使用代码的名称并将指令的各个部分分成它们的部分。

#3


18  

Assembly is a text representation of Machine code. It has a single statement which represents a single instruction within the CPU itself. "MOV X, Y" for example, is a single instruction which passes through the CPU and moves a value X into position Y. To get to machine code, the CPU will have a number that represents 'MOV', and a number that represents 'X' (if it's not already a number), and a number that represents Y. These raw HEX binary values are the Machine code. It's the numbers that cause the CPU to direct voltages / currents through the transistors to make it do what it does.

Assembly是机器代码的文本表示。它有一个语句,表示CPU本身内的单个指令。例如,“MOV X,Y”是一条指令,它通过CPU并将值X移动到位置Y.要获得机器代码,CPU将有一个代表“MOV”的数字和一个代表的数字'X'(如果它不是数字)和一个代表Y的数字。这些原始HEX二进制值是机器代码。这是导致CPU通过晶体管引导电压/电流以使其完成工作的数字。

Machine code is a lower level, but it's very very close to assembly. It's so close, that no one bothers using it due to the advantages of being able to read the instruction "MOV" = move. Variable names also become readable rather than raw addresses in the stack or heap.

机器代码是较低级别,但它非常接近装配。它非常接近,没有人会因为能够读取“MOV”=移动指令的优点而烦恼它。变量名也变得可读,而不是堆栈或堆中的原始地址。

#4


12  

And to go even lower, (not that the word "language" is appropriate for "machine" language or for even lower physical layers), but below machine language is the configuration of the many gates and switches used to actually implement each binary opcode for the particular hardware (CPU) involved... A great book to read that covers this even lower level is by Charles Petzold, called "CODE"

甚至更低,(不是“语言”一词适用于“机器”语言或更低的物理层),但机器语言以下是用于实际实现每个二进制操作码的许多门和开关的配置所涉及的特定硬件(CPU)...一本很好的书,涵盖了这个甚至更低的水平,由Charles Petzold称为“CODE”

#5


8  

If by below, you mean lower level, then yes. There is machine language. Assembly is turned into machine language before it is run. On many modern processes the machine language is emulated in microcode. See this for more details on microcode.

如果在下面,你的意思是较低的水平,那么是的。有机器语言。程序集在运行之前就会变成机器语言。在许多现代流程中,机器语言是在微代码中模拟的。有关微代码的更多详细信息,请参阅此

#6


#7


6  

I think the lowest you can get is something called Physics or TRW (The Real World). This is what chip designers and manufacturers use to create CPUs and other processors that can take the output of computer languages and turn them into something valuable.

我认为你能得到的最低价是物理学或TRW(真实世界)。这就是芯片设计者和制造商用来创建CPU和其他处理器的能力,这些处理器可以将计算机语言的输出转化为有价值的东西。

#8


3  

Depends on why you're asking. There's nothing that you can't do in assembly that you can do via some other method. Machine code is just another representation of the exact same data.

取决于你问的原因。你可以通过其他方法做任何你不能做的装配。机器代码只是完全相同数据的另一种表示。

#9


3  

The very first computers (ENIAC) used hard wiring so that output from one computation could be fed as input to another. To run another program, you had to unplug some cables and re-wire them differently.

最初的计算机(ENIAC)使用硬接线,因此一次计算的输出可以作为输入馈送到另一台计算机。要运行另一个程序,您必须拔下一些电缆并以不同方式重新连接它们。

#10


3  

Assembler is translated into machine code by the assembler. You could write it with a binary editor. (Ouch!) CISC computers can have microcode, which sequences segments of the chip (ALU, memory fetch, etc). Typically, no one writes microcode, except at the chip manufacturer.

汇编程序将汇编程序转换为机器代码。你可以用二进制编辑器编写它。 (哎哟!)CISC计算机可以有微码,它对芯片的各个部分进行排序(ALU,内存提取等)。通常,除芯片制造商外,没有人编写微码。

#11


3  

Well, there's machine language, as others have mentioned. Machine language is typically a 1-to-1 translation of what you write in assembly, so it's at the same level of abstraction as assembly code -- just much harder to write by hand.

嗯,有机器语言,正如其他人提到的那样。机器语言通常是您在汇编中编写的一对一翻译,因此它与汇编代码处于相同的抽象级别 - 手工编写要困难得多。

There are exceptions to this, like the pseudo-instructions provided by the MIPS assembly language.

这有例外,例如MIPS汇编语言提供的伪指令。

There is, or maybe I should say was a level below even assembly/machine language: microcode. Modern logic-transistor budgets being what they are, I suspect that microcode is losing its relevance.

有,或者我应该说是甚至低于汇编/机器语言的级别:microcode。现代逻辑晶体管预算就像它们一样,我怀疑微码正在失去其相关性。

#12


3  

Assembly language is the lower floor of the programming language building as machine code is not a language because it does not involve any grammatic rules to follow. Machine code may be the only data format to execute microprocessor operations: the CPU fetches data from memory and executes the instruction directly according to the machine code fetched.

汇编语言是编程语言构建的较低层,因为机器代码不是一种语言,因为它不涉及任何语法规则。机器代码可能是执行微处理器操作的唯一数据格式:CPU从存储器中提取数据并根据提取的机器代码直接执行指令。

However, in some recent designs, such as the Intel Pentium 4 and up, machine code is the expression of a lower level RISC execution unit operations, known as uops or microoperations. So the decoding logic of those designs is to translate CISC-type instructions into small uops which are generally targeted at a simpler load/store unit, RISC-like. In this aspect, we can say (altough this may not be technically exact) that machine code describes the "higher-level" complex instructions of the architecture, not the "real" operations that are carried atomically by the underlying execution logic of the CPU.

然而,在一些最近的设计中,例如Intel Pentium 4及更高版本,机器代码是较低级别RISC执行单元操作的表达,称为uops或微操作。因此,这些设计的解码逻辑是将CISC类型的指令转换为小的uop,这些指针通常针对更简单的加载/存储单元,类RISC。在这方面,我们可以说(尽管这可能在技术上并不精确)机器代码描述了架构的“更高级”复杂指令,而不是由CPU的底层执行逻辑原子地执行的“真实”操作。 。

So we've an architectural instruction set, or architectural machine code, and an inner-level "micro-instruction" set which is hidden from the outer world. The trace cache of the Intel processors was conceived to store such ops to optimize the superscalar performance of the processor (as the CPU executes uops not the architectural instruction-set available for execution by programs).

因此,我们有一个架构指令集,或架构机器代码,以及一个隐藏在外部世界中的内部“微指令”集。英特尔处理器的跟踪缓存被设想为存储此类操作以优化处理器的超标量性能(因为CPU执行微操作而不是可由程序执行的架构指令集)。

#13


2  

Well, you can always write code in binary (or hex, or some other representation). You'll then have to calculate jump offsets etc in your head. Not recommended. ;)

好吧,你总是可以用二进制(或十六进制或其他表示)编写代码。然后你必须计算你头脑中的跳跃偏移等。不建议。 ;)

#14


2  

Sort of. Machines don't read assembly, they read "machine language", which is what assembly is converted into. Machine language has "opcodes" instead of assembly's mnemonics, and these opcodes are usually just binary data. Machine code isn't usually considered human-readable.

有点。机器不读取汇编,它们读取“机器语言”,即汇编转换成的内容。机器语言有“操作码”而不是汇编的助记符,这些操作码通常只是二进制数据。机器代码通常不被认为是人类可读的。

On RISC systems, machine code is often a straightforward translation of assembly, but on x86 systems, in particular, the two are quite different.

在RISC系统上,机器代码通常是组装的直接转换,但在x86系统上,特别是两者完全不同。

#15


2  

Sure: "machine code", about which, Wikipedia, in the article on Assembly Language (http://en.wikipedia.org/wiki/Assembly_language), says: "implements a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture."

当然:“机器代码”,*在汇编语言文章(http://en.wikipedia.org/wiki/Assembly_language)中说:“实现了数字机器代码和其他常量所需的符号表示编程特定的CPU架构。“

#16


2  

Even below machine code, one could say, is VHDL - chip design. You don't even need to design the chip to execute code, but just instantly transform inputs into outputs.

可以说,甚至低于机器代码的是VHDL芯片设计。您甚至不需要设计芯片来执行代码,而只需将输入立即转换为输出。

(not that I'm an expert - I'm using C++)

(不是我是专家 - 我正在使用C ++)

#17


1  

You could send electric currents into the CPU and tell it where to place pixels. (Pretty much binary, but you don't use the computer to write it.)

您可以将电流发送到CPU并告诉它放置像素的位置。 (几乎是二进制文件,但你不使用计算机来编写它。)