keil使用日记(一)

kile文件编译以后生成

CODE      程序代码部分

RO-data  程序中定义的常量 const

RW-data  已初始化的全局/静态变量

ZI-data    未初始化的全局/静态变量

ROM(flash) size = code + ro-data + rw-data

RAM size = RW-data + ZI-data

code编译后,MDK将程序中赋初值的全局/静态变量放到Flash中,紧靠在可执行code之后

程序进入main之前,会运行一段库代码,将这部分数据拷贝到相应RAM位置

初始化时候,RW-data从flash拷贝到RAM

生成map文件

total RO SIZE = CODE + RO DATA

total RW SIZE = RW DATA +ZI DATA

total ROM SIZE = CODE + RO DATA + RW DATA

ARM指令长度为1个字(4B) Thumb指令长度半字(2B )

R0-R15 (R15-PC   R14-LR  R13-SP ) 32位

每个异常模式带有一个程序状态保存寄存器 SPSR 用于堡村子啊异常事件发生之前的CPSR

LDMIA R1!,{R2-R7,R12}    将R1单元中的数据读出到R2-R7 R12 , R1 自动加1

STMIA RO! ,{R3-R6,R10}      将R3-R6,R10的数据保存到RO指向的地址 RO自动加1

^这条指令从存储器中装载PC的同时,CPSR也得到回复

0x12345678

大端  低地址  12 34 56 78 高地址

小端  低地址  78 56 34 12 高地址

7种运行模式  CPSR M[4:0]

用户模式(usr):ARM处理器正常的程序执行状态          10000

快速中断(fiq): 用于高速数据传输或通道处理              10001

外部中断(irq): 用于通用的中断处理                         10010

管理模式(svc):操作系统使用的保护模式                    10011

数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储和存储保护   10111

系统模式(sys): 运行具有特权的操作系统任务              11111

定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。    11011

ARM正常工作一般在用户模式和系统模式,复位时进入管理模式

对于ARM指令集来说 PC指向当前指令的下两条指令的地址

注意PC,在调试的时候显示的当前指令地址,而用MOV LR,PC 的时候,lr保存的此指令向后数两条指令的地址

假设反汇编代码: 0x000001 :mov lr pc

pc寄存器的值 0x000001 实际上PC值0x000003,lr里面保存的是0x000003

fields指定传送的区域(psr CPSR 或 SPSR)

c 控制域屏蔽字节(psr[7..0])

x 控制域屏蔽字节(psr[15..8])

s 控制域屏蔽字节(psr[23..16])

f 控制域屏蔽字节(psr[31..24])

时间: 2024-10-21 17:34:37

keil使用日记(一)的相关文章

小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描

端口扫描 二三四层发现的目的只是为了准确发现所有活着主机IP,确定攻击面,端口扫描即发现攻击点,发现开放端口.端口对应网络服务及应用端程序,服务端程序的漏洞通过端口攻入.[所有的扫描结果,都不要完全相信] 一个端口就是一个潜在的通信通道,也就是一个入侵通道.对目标计算机进行端口扫描,能得到许多有用的信息.进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行扫描.在手工进行扫描时,需要熟悉各种命令.对命令执行后的输出进行分析.用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能.通过

小白日记8:kali渗透测试之主动信息收集(二)三层发现:ping、traceroute、scapy、nmap、fping、Hping

三层发现 三层协议有:IP以及ICMP协议(internet管理协议).icmp的作用是用来实现intenet管理的,进行路径的发现,网路通信情况,或者目标主机的状态:在三层发现中主要使用icmp协议,arp协议属于二层协议,它是基于广播的,所以不可路由.而ICMP协议是可以路由的,理论上可以使用icmp协议发现全球的ip,如果没有边界防火墙(禁止icmp的探测包)进行过滤的话,对目标主机进行扫描,则会收到相应的响应,从而进行捕捉[有边界防火墙的现象比较普遍],但是三层发现的扫描速度也较二层要慢

学习日记之状态模式和Effective C++

状态模式(State):当一个对象内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类. (1),状态模式主要负责解决的是当控制一个对象转换的条件表达式过于复杂时的情况.把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化. (2),状态模式的好处是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来. (3),将特定的状态相关的行为都放入一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以很容易地增加新的状态和

天天写日记争当文艺青年 2014-5-21

纠结啊为毛感觉只过了一天,就有两天没写了,今天晚上的机票离开上海.希望小叶子不会难为我. 昨晚研究了一下插卡小哥的业务流程,发现他并不是每个房间都插的,时间在每晚的9点到11点之间.估计是会在周边每个宾馆巡回一遍,插广告的房间有两种可能,第一种就是他们和宾馆沆瀣一气,知道哪个房间有人,第二种可能就是他们只给大床房的房间发,7天没有单间所以单身旅客一般会选择大床房,这绝对是优质潜在用户哇. 晚上看了个 正者无敌 还挺好看的样子,里面男主娶了3房姨太太,不错不错~ 晚上做了个梦,醒来后还是格外清晰,

学习日记

五一耍了三天,自己的计划有泡汤,那种制止力哪里去了,不过我认真起来还有有废寝忘食的时候,不过希望这种时候多一点,回家妈妈告诉我,她给老师打电话了的,老师说了我的一些情况,不过我没有老师说的那么好,学习在班上算中等.我觉得还算不上吧!任重而道远吧. Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量

windows 下部署kafka 日记 转

windows 下部署kafka 日记 转一.下载去apache 的官网(http://kafka.apache.org/downloads.html)下载最新的二进制版的压缩包.目前的最新版本是kafka_2.11-0.8.2.1.tgz.二.解压直接解压到D 盘根目录下.三.修改配置文件注意版本不同,可能配置文件不同.请参照实际情况修改.1.修改log4j.properties 文件中的“kafka.logs.dir=logs ”为“kafka.logs.dir=/tmp/logs”.2.修

Python爬虫个人记录(四)利用Python在豆瓣上写一篇日记

涉及关键词:requests库 requests.post方法 cookies登陆 一.目的分析 利用cookie登陆豆瓣,并写一篇日记 https://www.douban.com/note/636142594/ 二.步骤分析 1.使用浏览器登陆豆瓣,得到并分析cookie 2.使用cookie模拟登陆豆瓣(使用账号密码登陆也可以,需要验证码,cookie的时效一般就几天) 3.分析浏览器写日记行为,在python中模拟post行为 4.源码及测试 三.scrapy shell 模拟登陆 1.

Java学习日记:Week1---day1-2 Java初识

前言: 新的旅程正式开始了,经过了两周的c语言预科班学习,对程序的开发有了第一步的认知.如今Java课程也如期开始,对于一个程序员究竟是先学习哪个语言好已经没有必要去探究了,如今既然上了Java的船自然要老老实实的走,能到什么程度就看自己了,个人对自己还是有点信心的. 课从昨天就正式开始了,昨天老师讲了一天大方面的东西,总之没什么具体内容,今天开始了初始java的第一课:简单理了理今天老师讲的内容,挑了一些重点的记在日记. 一.JAVA的版本以及JDK 1)Java的几个版本 java SE(j

数据库分离附加(附日记丢失的处理)

汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 数据库分离,exec sp_detach_db NewTest 数据库附加(如果日记变动则重新创建日记,此时日记名和逻辑日记名相同)[日记丢失可以这样写] exec sp_attach_db NewTest,N'E:\SQL\Test.mdf' 完整写法:exec sp_attach_db NewTest,N'E:\SQL\Test.mdf',N'E:\SQL\Test_log.ldf