Intel X86微处理器的汇编语言和 Alpha AXP 微处理器的汇编语言完全不同。以下 alpha AXP汇编代码演示了程序可以执行的操作 类型: Ldr rl6,(r15);第一行 Ldrr17,4(15);第二行 Beqr16,r17,100;第三行 Str17,(r15);第四行 100:;第五行 if(xl=y X- y
Intel X86微处理器的汇编语言和Alpha AXP 微处理器的汇编语言完全不同。以下Alpha AXP汇编代码演示了程序可以执行的操作 类型: Ldr r16, (r15) ; 第一行 Ldr r17, 4(r15) ; 第二行 Beq r16,r17,100; 第三行 Str r17, (r15); 第四行 100: ; 第五行 if (x != y) x = y;
第一条语句(第一行)将寄存器15指定的地址中 的内容加载到寄存器16中。第二条指令将紧接着 的内存中的内容加载到寄存器17中。第三行比较 寄存器16和寄存器17,如果相等,分支到标号100 否则,继续执行第四行,将寄存器17的内容存到 内存中。如果内存中的数据相同,就不必存储数 据。编写汇编级的程序需要技巧而且十分冗长 容易出错。 Linux系统的核心很少的一部分是用汇 编语言编写,而这些部分之所以使用汇编语言只 是为了提高效率,并且和具体的微处理器相关
第一条语句(第一行)将寄存器15指定的地址中 的内容加载到寄存器16中。第二条指令将紧接着 的内存中的内容加载到寄存器17中。第三行比较 寄存器16和寄存器17,如果相等,分支到标号100, 否则,继续执行第四行,将寄存器17的内容存到 内存中。如果内存中的数据相同,就不必存储数 据。编写汇编级的程序需要技巧而且十分冗长, 容易出错。Linux系统的核心很少的一部分是用汇 编语言编写,而这些部分之所以使用汇编语言只 是为了提高效率,并且和具体的微处理器相关
汇编程序的处理过程: 汇编语编译机器码的连接 言程序 目标程序 程序 10101 ⊥ADD 0101 1111 0010 JUMP 0010
汇编语 言程序 机器码的 目标程序 可执行 程序 编译 连接 MOV ADD … JUMP 0101 1111 … 0010 0101 1111 0010 汇编程序的处理过程:
使用汇编语言编写大型程序十分困难,消耗时 间,容易岀错而且生成的程序不能移植,只能 束缚在特定的处理器家族。更好的选择是使用 和机器无关的高级语言,例如C。C允许你用逻 辑算法描述程序和要处理的数据。被称为编译 程序( compiler)的特殊程序读入C程序,并将 它转换为汇编语言,进而产生机器相关的代码 好的编译器生成的汇编指令可以和好的汇编程 序员编写的程序效率接近
使用汇编语言编写大型程序十分困难,消耗时 间,容易出错而且生成的程序不能移植,只能 束缚在特定的处理器家族。更好的选择是使用 和机器无关的高级语言,例如C。C允许你用逻 辑算法描述程序和要处理的数据。被称为编译 程序(compiler)的特殊程序读入C程序,并将 它转换为汇编语言,进而产生机器相关的代码。 好的编译器生成的汇编指令可以和好的汇编程 序员编写的程序效率接近