汇编指令及其特点

进心进利 进心进利     2022-09-04     302

关键词:

基础知识

指令与伪指令

汇编指令:CPU机器指令的助记符,编译后得到1和0组成的机器码,由CPU读取执行

伪指令:本质上不是指令,由编译环境提供,目的在于指导编译过程,最终不会生成机器码

不同的ARM风格

ARM官方汇编风格:指令一般大写,windows IDE开发环境常用。(譬如:LDR、STR)

GNU风格的ARM汇编:指令一般小写,linux中常用。(譬如:ldr、str)

ARM汇编的特点

ARM汇编特点1:LDR和STR架构

ARM采用RISC架构,CPU不能直接读取内存,需要将内存内容加载到CPU通用寄存器才能被CPU处理。

ldr(load register):将内存内容加载到通用寄存器    

str(store register):将指令存取通用寄存器

用ldr和str组合就能很好实现数据交换

ARM汇编特点2:八种寻址方式

寄存器寻址 mov r1, r2             //把r2存入r1
立即寻址 mov r0, #0xFF00           //把后面的数字存入r0
寄存器移位寻址 mov r0, r1, lsl #3      //把r1左移3位后存入r1
寄存器间接寻址 ldr r1, [r2]        //把r2这个内存地址所对应的值赋值给r1
基址变址寻址 ldr r1, [r2, #4]       //把r2+4后的内存地址多对应的值存入r1
多寄存器寻址 ldmia r1!, {r2-r7, r12}   //把r1到r7以及r12依次存在r1,r2,r3,r4,r5,r6,r7,r12
堆栈寻址 stmfd sp!, {r2-r7, lr}      //把堆栈SP中的内容依次存在r2,r3,r4,r5,r6,r7,lr中
相对寻址   beq flag           //跳转到标号flag
     flag:     

ARM汇编特点3:指令后缀

同一指令经常附带不同后缀,变成不同的指令。

经常使用的后缀有:

B(byte)功能不变,操作长度变为8位

H(half word)功能不变,长度变为16位      //由于我们在32位系统中,依次操作32位的效率是最高的,所以一般用ldr

S(signed)功能不变,操作数变为有符号 如 ldr ldrb ldrh ldrsb ldrsh   

S(S标志)功能不变,影响CPSR标志位 如 mov和movs movs r0, #0

ARM汇编特点4:条件执行后缀

无后缀:mov r0, r1

有后缀:moveq r0, r1    //如果eq后缀成立则执行mov r0, r1,如果不成立则本句代码作废

注意:(1)条件执行后缀是否成立,不是取决于本句代码,而是取决于之前代码执行的结果

   (2)条件后缀决定了本句代码是否执行,而不会影响上一句和下一句代码是否被执行

常用的一般就是EQ(equal)、NE(not equal)、GT(great than)、LT(less than)

ARM汇编特点5:多级指令流水线

 

 

为了让CPU处理起来更加的具有效率,CPU往往是一边执行指令的同时就在提前读取下面的指令了,对于三级流水线,以ARM为例子,在32位系统中,一条指令刚好4个字节。

举例分析:假设有三条指令地址为:0xd002_0040、0xd002_0044、0xd002_0048

当前已经执行到0xd002_0040,为了保证运行流畅高效,实际上CPU指令指针PC已经指向0xd002_0048了,开始做准备工作了。所以对应的,他们的地址分别为:PC-8和PC。

 

常用汇编指令及其影响的标志位

 加法指令 ADD(addition)指令对标志位的影响:                     CF=1   最高有效位向高位有进位&n 查看详情

汇编语言从入门到精通-预备知识

汇编语言1、预备知识1.1 汇编语言的由来及其特点1.1.1机器语言  机器指令是CPU能直接识别并执行的指令,它的表现形式是二进制编码。机器指令通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指... 查看详情

001-开发环境及其基本常识(代码片段)

...内存         3、难阅读、难修改    2、汇编语言:用“助记符”来表示机器指令      如:ADD(加)  A,B      特点:1、计算机无法直接执行(需要汇编程序)         2、执行效率... 查看详情

arm汇编指令集特点之一:条件执行后缀

 movr0,r1;moveqr0,r1;//这句代码是否执行取决于上几句代码的运行结果(最后一次CPSR寄存器的高四位  NZCV的标志位)条件后缀执行特点:1、条件后缀执行是否成立,不是取决于本句代码,而是取决于这句代码之前的代码... 查看详情

at&t汇编语言及其寻址方式

汇编语言论风格来分主要是两类,一类是Intel汇编,一类是AT&T汇编,分别被Windows和Linux作为主流风格。因为我博客以推荐Linux系统为主,所以以后多以Linux汇编为主要描述语言。 简单说一下AT&T汇编,"#"井号开头的是注... 查看详情

汇编语言mov指令

...若正确,放高8位还是低8位呢???高8位都补0???在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的)。其特点是不破坏源地... 查看详情

汇编实验第二章总结

...对第一、二章做出总结,感觉很不好意思。如下正文:1.1汇编语言的特点。相较于机器语言,汇编语言更易于辨别和记忆。汇编语言的主体是汇编指令。汇编指令也是汇编语言的核心。汇编指令与机器指令的差别在于指令的表示... 查看详情

汇编语言(面向机器的程式设计语言)详细资料大全

参考技术A汇编语言(assemblylanguage)是一种用于电子计算机、微处理器、微控制器或其他可程式器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label... 查看详情

arm体系结构和汇编指令(代码片段)

...司)定义的,本质上是一串由1和0组成的数字。这就是CPU的汇编指令集2.从源代码到cpu执行过程第二节指令集对cpu的意义1.汇编语言与C等高级语言的差异汇编无移植性,c语言有一定可移植性,jave等更高级的语言移植性更强汇编语... 查看详情

汇编语言中操作数寻址方式都有哪些,各自有啥特点,怎么区分呢?

形成操作数的有效地址的方法,称为操作数的寻址方式。  例如,一种单地址指令的结构如下所示,其中用X、I、D各字段组成该指令的操作数地址。  操作码OP  变址X  间址I   形式地址D  指令中操作数字段的地址码... 查看详情

用vcomputer机器指令与汇编指令分别编程

用Vcomputer机器指令与汇编指令分别编程求大神帮忙参考技术A汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址妈。这样用符号代替机器语盲的... 查看详情

csapp:处理器如何执行指令

前一章叙述了c语言如何转化为汇编程序,如何使用汇编程序。但是,汇编程序具体是如何执行的呢?例如(add%eax%edx)这条指令,我们知道它的功能,处理器是何如执行指令来获得想要的结果?——这是本章的主题。 (一)... 查看详情

关于汇编语言

 汇编语言是早期机器语言受到极大限制后开发的语言,虽然在如今高级语言称霸的今天,汇编依赖硬件并不具备可移植性,显得有些落伍,但还是有许多人愿意学习汇编,因为学透了汇编,我们才能真正了解计算机和它的工... 查看详情

汇编语言基础知识总结

这学期选修了汇编语言课程,通过大一一年对于C语言以及C++的学习,已经认识到了计算机语言给人们生活带来了许多便捷,之前对于汇编语言的印象是与计算机病毒有关。个人认为作为计科系的学生,不能只掌握高级程序设计... 查看详情

优化系列汇编优化技术:arm架构32位汇编优化及demo

DATE:2021.8.15文章目录1、前言2、Arm汇编架构和ReferenceManuals3、Arm32位寄存器4、ARM指令寻址方式5、ARM指令特点以及优化技巧6、ARM和NEON指令集常用指令汇总7、ARM32位加载数据的两种格式8、ARM32位汇编编写demo9、注意事项10、汇编优化... 查看详情

mips汇编及模拟器下载

1.简述汇编语言发展在计算机发展初期,人们用0-1序列来表示每一条语言,亦即二进制的机器指令由于机器指令过于繁琐,程序员们开发出了一种新的语言,这种用符号表示的计算机语言被称为汇编语言计算机继续发展则生成了... 查看详情

如何加入产品及其特点

】如何加入产品及其特点【英文标题】:Howtojoinproductsandtheircharacteristics【发布时间】:2016-03-1616:54:03【问题描述】:我有两张桌子。产品(id、标题、价格、created_at、updated_at等)和ProductCharacteristic(id、product_id、sold_quantity、dat... 查看详情

汇编语言基础知识

1.汇编语言的特点:机器相关性;高速度和高速率;编写和调试的复杂性2.指令和数据是应用上的概念。在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。CPU在工作的时候把有的信息看做指令,有的信息看做数据,... 查看详情