机器码编译
Java编译后是字节码,C/C++以前全都是是机器码。
电脑只能运行机器码。Java在运行的时候把字节码变成机器码。
C/C++在编译的时候直接编译成机器码。
不过现在微软的Visual Studio C++ 2005以后的C++也可以编译成字节码,用CLR运行是转换成机器码(和Java差不多)。
⑵ 将下列程序代码手工编译为用十六进制数表示的机器码.(可查51指令码表),什么是十六进制表示的机器码
5:LJMPMAIN
6:ORG0030H
7:MAIN:
C:0x0000020030LJMPMAIN(C:0030)
C:0x000300NOP
C:0x000400NOP
C:0x000500NOP
C:0x000600NOP
C:0x000700NOP
C:0x000800NOP
C:0x000900NOP
C:0x000A00NOP
C:0x000B00NOP
C:0x000C00NOP
C:0x000D00NOP
C:0x000E00NOP
C:0x000F00NOP
C:0x001000NOP
C:0x001100NOP
C:0x001200NOP
C:0x001300NOP
C:0x001400NOP
C:0x001500NOP
C:0x001600NOP
C:0x001700NOP
C:0x001800NOP
C:0x001900NOP
C:0x001A00NOP
C:0x001B00NOP
C:0x001C00NOP
C:0x001D00NOP
C:0x001E00NOP
C:0x001F00NOP
C:0x002000NOP
C:0x002100NOP
C:0x002200NOP
C:0x002300NOP
C:0x002400NOP
C:0x002500NOP
C:0x002600NOP
C:0x002700NOP
C:0x002800NOP
C:0x002900NOP
C:0x002A00NOP
C:0x002B00NOP
C:0x002C00NOP
C:0x002D00NOP
C:0x002E00NOP
C:0x002F00NOP
8:MOVA,BCD1
C:0x0030E530MOVA,0x30
9:ADDA,BCD2
C:0x00322540ADDA,0x40
10:DAA
C:0x0034D4DAA
11:MOVBCD1,A
C:0x0035F530MOV0x30,A
12:MOVA,BCD1+1
C:0x0037E531MOVA,0x31
13:ADDCA,BCD2+1
C:0x00393541ADDCA,0x41
14:DAA
C:0x003BD4DAA
15:MOVBCD1+1,A
C:0x003CF531MOV0x31,A
16:SJMP$
C:0x003E80FESJMPC:003E
C:0x004000NOP
⑶ c语言代码编译成的是机器码,那么怎么实现可移植性呢
C语言写的代码编译成了机器码,与编译器有关,与当前的电脑的CPU没有关系
有个概念叫交叉编译,我们做嵌入式的,就靠这个工作了
也就是在PC上编译的机器码,下载到其他的芯片里面,让它在这个芯片里运行
只要其他的电脑也支持同样的编译器产生的机器码,就可以一致到它上面
⑷ LINUX怎么编译本地机器码
请先去看看 Linux 相关基础。
Linux 其实总的来说,全都是第三方函数库,根本就没有官方函数库。
为啥?因为 Linux 就是一个内核,所有的函数库,程序都是运行在内核上的程序,都是可以换的。
⑸ 编译时选择机器码,能反编译出来吗
可以说绝大部分的程序是不能反编译的,因为同样的机器码,可以由多种不同的高级语言的程序代码生成,所谓殊途同归,不管外表看起来多么不同的代码,编译后生成的机器码也可能完全一样的
⑹ 请问高级语言为什么不直接编译成机器码,而编译成汇编代码
2.Que:? ACK:1)其中有一个好处是方便优化,因为,编译器也是工具,也是机器,毕竟是机器生成的程序,不可以非常 完美的,而汇编是机器指令的助记符,一个汇编指令就对应一条机器指令(特殊指令除外)调试起来肯定会比 机器指令方便的方便,这样优化起来也方便。 2)高级语言只需要编译成汇编代码就可以了,汇编代码到机器码的转换是由硬件实现即可,有必要用软件实 现这样分层可以有效地减弱编译器编写的复杂性,提高了效率.就像网络通讯的实现需要分成很多层一样,主要 目的就是为了从人脑可分析的粒度来减弱复杂性. 3)如果把高级语言的源代码直接编译成机器码的话,那要做高级语言到机器码之间的映射,如果这样做的 话,每个写编译器的都必须熟练机器码。这个不是在做重复劳动么。
⑺ 后缀为exe的文件本身是机器码吗C++编译过的程序是机器码么。但是java好像也能做出exe程序。
c++编译产生二进制可执行文件,
java编译生成可执行字节码,也可生成二进制可执行文件。
解释性生成字节码,点击就可执行,这就像系统的批处理一样,只不过功能简单,执行方便。java强大。原理一样。
编译器必须编译才可执行。
⑻ 请问c语言的源程序被编译后的代码是机器码吗
首先语言和被编译成的代码没有直接关系。有把Java编译成机器码的编译器也有把C语言编译成Java字节码的编译器。
机器码只是CPU直接认读的编码,不等于和硬件打交道的。操作硬件是你通过程序操作CPU做到的。操作系统只不过是别人写的程序而已,说到底还是程序。
⑼ 怎么用机器码写程序
机器码就是0和1,现在人不这么做了
以前的人是用打孔机做的
用汇编或是C语言吧
⑽ C语言编译到机器码的过程求详细解说,不胜感激
从编码到生成可执行的binary文件是有好几个过程的:(默认已完成编码)
1, 预编译(预处理), 也就是替换工作, 先把代码中的宏做替换, 条件编译等会做处理,为编译做作准备;
2,编译,包括了语法的检查,汇编代码等中间代码的生成,代码优化,obj文件(也算是目标代码)的生成,已经是有机器码了;
3.库的合成,这个不一定有,不是必须的;
4.链接, 连接器会按照一定的规则,比如根据连接脚步,把code组织起来,生成elf文件(elf可能不是一个所有通用的格式),这个时候已经可以执行了,里面的可以执行的机器码;
5,裁剪, 可以把elf文件中的非必需的段 strip,生成一个更精简的elf文件;
6,binary的生成,obj命令可以把elf文件转换成binary文件,binary文件烧录到存储器中可以直击运行。