目标代码、机器代码和汇编代码之间有什么区别?
你能举例说明它们的不同吗?
目标代码、机器代码和汇编代码之间有什么区别?
你能举例说明它们的不同吗?
当前回答
这里讨论程序集代码。
汇编语言是一种用于计算机编程的低级语言。它实现了数字机器代码和编程特定CPU架构所需的其他常量的符号表示。”
这里讨论机器代码。
机器代码或机器语言是由计算机中央处理单元直接执行的指令和数据系统。
基本上,汇编代码是一种语言,它由汇编程序(类似于编译器)翻译成目标代码(CPU运行的本机代码)。
其他回答
8b5d32是机器代码
Mov ebx, [ebp+32h]为组装体
lmylib。所以包含8b5d32是目标代码
汇编代码是人类可读的机器代码表示:
mov eax, 77
jmp anywhere
机器代码是纯十六进制代码:
5F 3A E3 F1
我猜你指的是目标文件中的目标代码。这是一种机器代码的变体,不同之处在于跳转是参数化的,这样链接器就可以填充它们。
汇编程序用于将汇编代码转换为机器代码(目标代码)。 链接器链接多个对象(和库)文件以生成可执行文件。
我曾经用纯十六进制写过一个汇编程序(没有汇编程序可用),幸运的是,这是在古老的6502上写的。但我很高兴有奔腾操作码的汇编器。
源代码,汇编代码,机器代码,对象代码,字节代码,可执行文件和库文件。
对于大多数人来说,所有这些术语都非常令人困惑,因为他们认为它们是相互排斥的。请参见图表了解它们之间的关系。下面给出了每个术语的描述。
源代码
人类可读(编程)语言的指令
高级代码
用高级(编程)语言编写的指令 例如,C、c++和Java程序
汇编代码
用汇编语言(一种低级编程语言)编写的指令。 作为编译过程的第一步,高级代码转换为这种形式。它是汇编代码,然后被转换成实际的机器代码。在大多数系统上,这两个步骤作为编译过程的一部分自动执行。 例如,program.asm
目标代码
编译过程的产物。它可以是机器代码或字节代码的形式。 例如,file.o
机器代码
机器语言指令。 例如,a.o ut
字节码
一种中间形式的指令,可由解释器(如JVM)执行。 例如,Java类文件
可执行文件
链接过程的产物。它们是可以被CPU直接执行的机器码。 例如,一个。exe文件。
注意,在某些情况下,包含字节码或脚本语言指令的文件也可能被认为是可执行的。
库文件
有些代码出于不同的原因被编译成这种形式,比如可重用性,然后被可执行文件使用。
程序的源文件被编译成目标文件,然后链接器将这些目标文件链接在一起,生成一个包含您的体系结构的机器代码的可执行文件。
当目标文件和可执行文件被文本编辑器打开时,都以可打印和不可打印字符的形式涉及到体系结构的机器代码。
尽管如此,文件之间的二分法是,目标文件可能包含未解析的外部引用(例如printf)。因此,它可能需要链接到其他对象文件。也就是说,需要解析未解析的外部引用,以便通过与其他目标文件(如C/ c++运行时库)的链接来获得良好的可运行的可执行文件。
汇编是人类可以理解的简短的描述性术语,可以直接转换为CPU实际使用的机器代码。
虽然汇编程序在某种程度上为人类所理解,但它仍然是低水平的。做任何有用的事情都需要大量的代码。
所以我们使用高级语言,如C, BASIC, FORTAN(好吧,我知道我和自己约会过)。当编译这些代码时,会生成目标代码。早期语言以机器语言作为目标代码。
现在的许多语言,如JAVA和c#,通常编译成字节码,这些字节码不是机器代码,而是在运行时容易解释以产生机器代码的字节码。