机器语言
每种 CPU 仅懂得自己的 machine language
,而在 machine language 中的指令相当艰涩难懂不容易阅读,每个指令都有属于自己的唯一识别码,称为 operation code
(或是 opcode
),通常位于指令的开头。
而要让 CPU 执行工作,必须给他 machine language 才可;然而,直接撰写 machine code 几乎是不可能的事情,因此,我们需要可以将 assembly
转为 machine code
的工具 - assembler 。
汇编语言
assembly 程式是以纯文字的方式进行储存的,其中类似的语法如下:
由程式中可以看得出来该行指令所要进行的动作,而将其转译成 machine code 的工作,则交给 assembler 来做即可。
而在其他的程式语言中,扮演此种角色(将程式转为 machine code)的,称为 compiler,然而 compiler 的复杂度远远高过 assembler
,原因是因为 assembly code 与 machine code 的关系是一行对一行的,而一般程式语言中的一行就常常产生多行相对应的 machine code。
另外与其他程式语言不同的地方是,每种 CPU 不但有自己的 machine language,也有自己的 assembly language,因此若要将 assembly code
进行 porting
,难度会比一般的程式语言高上许多。
指令操作数
一般 machine code 的指令中都会包含多个或多种的 operand(运算元
),而 operand 大概可以分为以下几类:
register
指向储存于 CPU register 中的植。
memory
指向储存于 memory 中的资料,而 memory address
有可能是直接写于指令中,或是由 register
的值所组成。
支付5UD,阅读全文
还有更多的精彩内容,作者设置为付费后可见