是否有“低于”汇编的编程语言?
17 回答
实际上,在机器代码下面有一层代码,称为Microcode。
机器码。时间是程序员用二进制的 1 和 0 编码的。Hex 被认为是在这方面的进步。那是在汇编之前,它使用代码的名称并将指令的各个部分分成其部分。
汇编是机器码的文本表示。它有一条语句,表示 CPU 本身内的一条指令。例如,“MOV X, Y”是一条通过 CPU 并将值 X 移动到位置 Y 的单个指令。要获取机器代码,CPU 将有一个表示“MOV”的数字,以及一个表示'X'(如果它还不是一个数字)和一个代表 Y 的数字。这些原始 HEX 二进制值是机器代码。正是这些数字导致 CPU 通过晶体管引导电压/电流以使其发挥作用。
机器代码是一个较低的级别,但它非常接近于汇编。它是如此接近,由于能够读取指令“MOV” = move 的优势,没有人会打扰使用它。变量名称也变得可读,而不是堆栈或堆中的原始地址。
甚至更低,(不是“语言”这个词适用于“机器”语言或更低的物理层),但在机器语言之下是用于实际实现每个二进制操作码的许多门和开关的配置所涉及的特定硬件(CPU)......查尔斯·佩佐德(Charles Petzold)写的一本好书,涵盖了这个甚至更低的级别,称为“代码”
如果低于,你的意思是更低的水平,那么是的。有机器语言。汇编在运行之前被转换为机器语言。在许多现代流程中,机器语言是在微码中模拟的。有关微码的更多详细信息,请参见此处。
我认为你能得到的最低值是所谓的物理或 TRW(现实世界)。这就是芯片设计人员和制造商用来创建 CPU 和其他处理器的方法,这些处理器可以将计算机语言的输出转化为有价值的东西。
汇编程序由汇编程序翻译成机器代码。您可以使用二进制编辑器编写它。(哎哟!)CISC 计算机可以有微码,对芯片的各个部分进行排序(ALU、内存提取等)。通常,除了芯片制造商之外,没有人编写微代码。
第一台计算机 (ENIAC) 使用硬接线,因此一个计算的输出可以作为输入提供给另一个计算。要运行另一个程序,您必须拔下一些电缆并以不同的方式重新接线。
取决于你问的原因。在汇编中没有什么是你不能通过其他方法做的。机器码只是完全相同数据的另一种表示。
汇编语言是编程语言构建的较低层,因为机器代码不是一种语言,因为它不涉及任何要遵循的语法规则。机器码可能是执行微处理器操作的唯一数据格式:CPU从内存中取出数据并根据取出的机器码直接执行指令。
但是,在最近的一些设计中,例如 Intel Pentium 4 及更高版本,机器代码是较低级别的 RISC 执行单元操作的表达,称为 uops 或微操作。因此,这些设计的解码逻辑是将 CISC 类型的指令转换为小微指令,这些指令通常针对更简单的加载/存储单元,类似 RISC。在这方面,我们可以说(尽管这在技术上可能不准确)机器代码描述了架构的“高级”复杂指令,而不是由 CPU 的底层执行逻辑原子地执行的“真实”操作.
所以我们有一个架构指令集,或架构机器代码,以及一个对外部世界隐藏的内部级别的“微指令”集。Intel 处理器的跟踪缓存被设计用来存储这些操作以优化处理器的超标量性能(因为 CPU 执行的是 uop,而不是可供程序执行的体系结构指令集)。
即使在机器代码之下,也可以说是 VHDL - 芯片设计。您甚至不需要设计芯片来执行代码,只需立即将输入转换为输出。
(并不是说我是专家——我使用的是 C++)
好吧,你总是可以用二进制(或十六进制,或其他一些表示)编写代码。然后,您必须在脑海中计算跳跃偏移等。不建议。;)
有点。机器不读取汇编,它们读取“机器语言”,这是汇编转换成的。机器语言有“操作码”而不是汇编的助记符,而这些操作码通常只是二进制数据。机器代码通常不被认为是人类可读的。
在 RISC 系统上,机器代码通常是汇编的直接翻译,但在 x86 系统上,尤其是两者完全不同。
当然:“机器代码”,维基百科在关于汇编语言的文章(http://en.wikipedia.org/wiki/Assembly_language)中说:“实现数字机器代码和其他所需常量的符号表示对特定的 CPU 架构进行编程。”
您可以将电流发送到 CPU 并告诉它在哪里放置像素。(几乎是二进制,但你不用电脑写。)