如何将源代码转换为1和0?

时间:2010-09-01 11:02:32

标签: compiler-construction compilation binary

计算机除了一个和零之外什么都不懂。但是我想知道如何将源代码或指令集转换成1和0的详细信息。exe文件只包含1和0吗?

4 个答案:

答案 0 :(得分:8)

微处理器instruction set中的每种操作都由操作码指定,操作码表示为1和0的模式。 compilerinterpreter将源语言中的代码转换为由machine code组成的代码。

例如,使用此代码,其中变量x被赋值为50:

x = 50;

编译器可能会将其转换为以下汇编语言,其中AX寄存器(对于x变量)使用MOV指令设置值50(以十六进制表示):< / p>

mov ax, 0x32

如果MOV的操作码 0xA0 且AX寄存器的代码为 0xB ,那么二进制的机器代码将如下所示:

10100000 00001011 00110010

答案 1 :(得分:4)

您需要研究Compilers

答案 2 :(得分:2)

是。 .exe本质上是一个包含0和1的二进制文件格式(它还包含运行程序的其他重要操作系统信息)

CPU附带某些基本操作的规范,如SUM,MOV等。这些是CPU知道的唯一操作。编译器的工作是解释2 + 3之类的东西并将其转换为CPU可以解释的内容(SUM和标志检查溢出等等。)。

因此,在本质上编写像2 + 3这样的高级代码时,这只是编写大量汇编代码的一种较短的方式(这只是二进制文件的人类可读版本)。

答案 3 :(得分:0)

编译代码时,编译器在Assembly中创建等效项,然后运行到处理器。汇编程序将汇编程序转换为二进制文件。

每个高级指令(用您的编程语言)作为与之关联的汇编指令。这些汇编指令可以高度优化(因此GCC和其他编译器,优化标志)。

您可能需要阅读http://computer.howstuffworks.com/bytes.htm