汇编指令简介
汇编语言是计算机语言的一种,是一种低级语言。相比高级语言,汇编语言更接近底层硬件,使用更加直接,效率更高。但相对而言,汇编语言更加复杂,语法更加严格。
操作数指示符:
大多数指令有一个或多个操作数,指示出执行一个操作中要使用的源数据值。
操作数一般可以分为三类:
立即数
寄存器
内存引用
数据传送指令:
最频繁使用的指令,负责将数据从一个位置复制到另一个位置。
例如:
mov %rbx, %rax : 将rbx寄存器的值移动到rax寄存器
mov %rbx, (%rax) : 将rbx寄存器的值移动到rax寄存器所表示的内存地址中
以及mov指令的一些扩展指令: movb, movw, movl, movq等等
压入和弹出栈数据
将数据压入程序栈中,以及从程序栈中弹出数据。
push %rbp : 将%rbp寄存器的值压入程序栈指针指向的位置
pop %rbp : 将栈指针指向的数据弹出,放入%rbp寄存器
算数和逻辑操作
跳转指令
导致执行切换到程序中一个全新的位置
jmp %rax 用寄存器%rax中的值作为跳转目标
jmp是无条件跳转,还有一些条件跳转指令,有兴趣的同学可以查一下资料。
比较和测试指令
比较指令CMP,只设置条件码,不更新目的寄存器,其余的行为和SUB指令一致
测试指令TEST,只设置条件码,不更新目的寄存器,其余的行为和ADD指令一致
更多详细的内容,可以通过相关书籍进行系统性的了解,鉴于篇幅,就不多介绍了。
让我们回到刚才的例子,可以看到由于把内存引用替换成了访问寄存器,程序性能就有了明显的提升。
全部0条评论
快来发表一下你的评论吧 !