[国嵌笔记][026][ARM伪指令]
ARM机器码
1.汇编程序通过汇编器变成机器码,然后才能在ARM处理器上运行
2.ARM机器码是一个32位的数,被分成了多个段,每个段都有各自的含义
3.格式:

cond:表示条件(4位)
I:表示源操作数是寄存器还是立即数
opcode:表示指令类型(4位)
S:表示是否影响cpsr寄存器
Rn:第一个源寄存器,有的指令中没有使用(4位)
Rd:目的寄存器(4位)
shift_operand:位移标志(4位)和第二个源寄存器或立即数(8位),所以mov指令中源操作数不能超过255
4.示例:
mov r0, r1 机器码:e1a00001
1110 00 0 1101 0 0000 0000 000000000001
moveq r0, #0xff 机器码:03a000ff
0000 00 1 1101 0 0000 0000 000011111111
伪指令定义
伪指令本身并没有对应的机器码,它只是在编译的时候起作用,或者转化为其他的实际指令来运行
定义类伪指令
1.global
作用:把一个标号定义为全局的,使其能够被其他C语言程序调用
示例:
.global _start
2.data
作用:定义数据段,表明数据将被存到数据段中
示例:
.data
3.byte word ascii
作用:定义数据类型
示例:
_byte: .byte 0xff
_word: .word 0xaabbccdd
_string: .ascii “hello world!”
4.equ
作用:宏定义,相当于C语言中宏的替换
示例:
.equ DATA, 0xff
mov r1, #DATA
5.align
作用:使数据地址按n字节对齐
示例:
.align 4
操作类伪指令
1.nop
作用:空操作指令,通常用来做延时
示例:
nop
@在执行时相当于
mov r0, r0
2.ldr
作用:用来在寄存器中装入大于8位的立即数,相当于mov,但mov不能装入大于8位的立即数
示例:
ldr r1, =0x1ff @在ldr伪指令中“=”表示立即数
@在执行时相当于
ldr r1, [pc, #-4]
.word 0x000001ff
[国嵌笔记][026][ARM伪指令]的更多相关文章
- [国嵌笔记][021-022][ARM处理器工作模式]
[ARM处理器工作模式] 处理器工作模式 1.User(urs):用户模式,linux应用程序运行在用户模式 2.FIQ(fiq):快速中断模式 3.IRQ(irq):中断模式 4.Superviso ...
- [国嵌笔记][020][ARM家族大检阅]
ARM芯片:2440(arm9) 6410(arm11) 210(cortex-A8) ARM核:arm9(arm-v4) arm11(arm-v6) cortex-A8(arm-v7) 指令架构:a ...
- [国嵌笔记][027][ARM协处理器访问指令]
协处理器作用 协处理器用于执行特定的处理任务,如数学协处理器可以执行控制数字处理,以减轻处理器的负担.ARM处理器最多可以支持16个协处理器,其中CP15是最重要的一个协处理器 CP15的作用 CP1 ...
- [国嵌笔记][025][ARM指令分类学习]
算术和逻辑指令 1.mov 格式:mov {条件}{s} <dest>, <op> 作用:把一个值从一个地方移动到另一个地方,<dest>必须是寄存器 示例: @m ...
- [国嵌笔记][024][ARM汇编编程概述]
汇编程序用途 1.在bootloader与内核初始化时,还没有建立C语言运行环境,需要用到汇编程序 2.在对访问效率要求很高的情况下,需要用到汇编程序 ARM汇编分类 1.ARM标准汇编:适合于Win ...
- [国嵌笔记][029][ARM处理器启动流程分析v2]
2440启动流程 启动方式:nor flash启动.nand flash启动 地址布局: 选择nor flash启动时,SROM(nor flash)地址为0x00000000 选择nand flas ...
- [国嵌笔记][023][ARM寻址方式]
寻找方式 1.处理器根据指令中给出的信息来找到指令所需操作数的方式 2.立即数寻址 操作数本身在指令中给出,立即数前加”#”表示立即数寻址,操作数在指令中 3.寄存器寻址 利用寄存器中的数值作为操作数 ...
- [国嵌笔记][008-009][远程登录Linux]
[国嵌笔记][008][远程登录Linux] 1.windows与Linux能够相互ping通 2.关闭Linux防火墙 /etc/init.d/iptables stop 3.通过ssh(字符界面) ...
- [国嵌笔记][014][Mini2440安装Linux]
引导安装步骤 相关介绍: 开发板软件构成:Bootloader.嵌入式操作系统.嵌入式文件系统 JTAG接口常用于对flash等器件进行编程,常见的JTAG下载线有并口和USB接口两种 硬件连接: 1 ...
随机推荐
- 如何严格设置php中session过期时间
如何严格限制session在30分钟后过期! 1.设置客户端cookie的lifetime为30分钟: 2.设置session的最大存活周期也为30分钟: 3.为每个session值加入时间戳,然后在 ...
- lesson - 11 正则表达式
正则就是有一定规律的字符串,有几个特殊符号很关键(. * + ? | ),我们平时不仅可以用命令行工具grep/sed/awk去引用正则,而且还可以把正则嵌入在nginx.apache.甚至php.p ...
- js构建函数,点击按钮显示div,再点击按钮或其他区域,隐藏div
这只是一个例子,先看看效果: html代码: <nav> <span class="nav_logo"></span> <h1>云蚂 ...
- 小白的Python之路 day4 软件目录结构规范
软件目录结构规范 为什么要设计好目录结构? "设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题.对于这种风格上的规范,一直都存在两种态度: 一类同 ...
- iOS学习—— UINavigationController的返回按钮与侧滑返回手势的研究
侧滑返回手势是从iOS7开始增加的一个返回操作,经历了两年时间估计iPhone用户大部分都已经忽略了屏幕左上角那个碍眼的back按钮了.之前在网上搜过有关侧滑手势的技术博客,发现大多比较散乱,甚至有很 ...
- Python核心编程笔记--私有化
一.私有化的实现 在Python中想定义一个类是比较简单的,比如要定义一个Person类,如下代码即可: # -*- coding: utf-8 -*- # __author : Demon # da ...
- 关于 jar 包数据更新的问题
参考: 人乐草心的博文 如果要更新一个 jar 包内文件的一些信息,又不想重新编译,发包,可以如下操作. Extract JAR file unzip 拆包方式 unzip xxx.jar [ -d ...
- Jenkins:基于linux构建ivy项目
Jenkins:基于linux构建ivy项目 (二) 基于以上<Jenkins:VMware虚拟机Linux系统的详细安装和使用教程(一)>的配置再进行对ivy项目构建: 启动tomcat ...
- 警惕phpstudy等开发神器使用默认配置可能带来的危险
0x00 前言 其实这个点早在之前,我就已经想到了,当时也觉得没啥就记在了我的印象笔记里. 而今天重新把这个点拿出来讲,主要是因为今天早上在温习nmap的时候,一不小心利用这个点,拿下了一位同事的电脑 ...
- HTTP2的新特性
多路复用 二进制分帧 首部压缩(Header Compression) 服务端推送(Server Push) 请求优先级