ADS环境下的ARM汇编程序设计实验报告

news2024/9/20 21:54:10

ADS环境下的ARM汇编程序

    

一、 实验目的

1.了解 ARM汇编语言的基本框架,学会使用ARM的汇编语言编程。

2.熟悉ADS1.2下进行汇编语言程序设计的基本流程;

3. 了解AXD中调试功能。

二、 实验环境

硬件:PC机

软件:ADS1.2

三、 实验任务与步骤

实验任务

1、在ADS中新建工程,并设置开发环境

2、在Code Warrior环境中编辑、编译和链接汇编语言程序,并生成可执行文件

        ①在AXD中调试汇编程序。

        ②使用命令行界面编辑、编译和链接汇编程序。

实验步骤

1、 新建工程

打开 Code Warrior ,选择 File->New(project) 选项,使用 ARM Executable Image 模版新建一个工程。

2、设置编译和链接选项

在菜单栏 Edit-DebugRel Settings 里进行设置。由于我们使用的是模拟机,设置汇编语言编译器 Assembler 的模拟处理器架构为Xscale;在 ARM Linker 中,选择 output 选项卡并选择 Linktype为 Simple 类型,确认 RO Base 为 0x8000,修改 RW Base 为0x9000。

3、 添加源程序文件

ARM 汇编程序源文件后缀名为.S 大小写均可。确保添加入当前工程复选框选上。

4、 编辑源程序代码

5、 编译汇编源代码文件

右击.S 文件,选择 Compile,如果没有成功会弹出错误和警告窗口。成功生成.O 目标代码文件。

6、 编译整个工程

选择 Project Make 进行整个工程的编译。可以在目录空间查看是否生成了映像文件.axf。

7、 确认调试目标设置

设置目标处理器型号。

8、 运行映像文件

如果 load image 是灰色,options -> configure target -> ARMUL(没有目标板)然后点 OK 就可以加载 AXF 文件了

9、 调试准备

在 AXD 中,打开各个观察窗口,做调试准备。选择 Processor Views Registers 选项,打开 ARM 寄存器显示窗口。调整窗口大小,使得Current 节点的 R0~R2 寄存器可见。选择 Processor Views Memory 选项,打开 ARM 存储器显示窗口。在 Start Address 输入框中输入准备查看的内存区域首地址 0x9000。

10、调试映像文件

打开调试窗口。为了便于调试,观察各个寄存器和存储器的变化情况。

11、运行程序观察记录结果

在 AXD 中,选择 Execute Step 选项,或者 F10 键,单步运行程序,查看相关寄存器和存储器相应地址上的变化。

按下F10

寄存器地址变化:

r0

r1

r2

0x00000000

0x00000000

0x00000000

0x00000000

0x00000001

0x00000001

0x00000001

0x00000001

0x00000002

0x00000003

0x00000002

0x00000003

0x00000003

0x00000006

0x00000003

0x00000006

0x00000004

0x0000000A

0x00000004

0x0000000A

0x00000005

0x0000000F

0x00000005

0x0000000F

0x00000006

0x00000015

0x00000006

0x00000015

0x00000007

0x0000001C

0x00000007

0x0000001C

0x00000008

0x0000001C

0x00000008

0x00009000

存储器地址变化:

Address

0

1

2

3

4

5

6

7

8

9

a

b

c

d

e

f

0x00009000

10

00

FF

E7

00

E8

00

E8

10

00

FF

E7

00

E8

00

E8

1C

00

00

00

00

E8

00

E8

10

00

FF

E7

00

E8

00

E8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1965017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

释放群众的创造力:打赢网络犯罪战争

关注公众号网络研究观获取更多内容。 企业业非但没有享受到技术带来的好处,反而承受着高昂的成本。 事情不应该是这样的。 企业投资 IT 是因为相信它可以改变他们与客户的关系、供应链和业务敏捷性。在过去 12 个月中,我们还看到人们对 AI 如何增强…

linux深度学习环境配置(cuda,pytorch)

显卡驱动 首先查看linux服务器是否存在显卡驱动,可以输入以下命令 nvidia-smi如果没有直接显示下面的画面 则进行下面的步骤: ubuntu-drivers devices sudo ubuntu-drivers autoinstall上述步骤的意思是直接在线安装 然后重启linux服务器 reboot发现…

mysql 性能调优概述

1.查看执行计划 id:操作表顺序。 id不同,执行顺序从大到小,id相同,执行顺序从上到下。 select_type:select类型 Simple:简单查询,不包含子查询或union Primary:最外层的查询 Su…

c->c++(三):stl

本文主要探讨c的stl相关知识:模版,容器,泛型算法,萃取特化,智能指针等。 模版 模板typename和class均可定义 模板参数可是类型,还可是值 模板编译根据调用实参类型推导参数类型 编译器用值的类型…

个人做量化交易一定不靠谱?

在某乎上的『量化』话题下,有一类关于个人量化交易者的问题很热门,比如『个人做量化交易靠不靠谱吗?』、『个人做量化交易到底可不可行?』、『个人做量化没啥优势,不如买量化基金?』。 关注度高的&#xff…

2025年穿戴甲全球市场预测与分析

传统美甲一直是大美业里的为数不多的“稳定”型项目,无论是产品、技术还是市场规模。直到2020年开始,穿戴甲的出现,打破了这一平衡生态,究其原因还是因为:创新!通常我们在判断一个创新型产品或者服务的出现…

远程访问mysql数据库的正确打开方式

为了安全,mysql数据库默认只能本机登录,但是在有些时候,我们会有远程登录mysql数据库的需求,这时候应该怎么办呢? 远程访问mysql数据,需要两个条件: 首先需要mysql服务器将服务绑定到0.0.0.0…

LazyLLM:长上下文场景下提高LLM推理效率

LazyLLM旨在优化大型语言模型(LLM)在处理长文本语境下的推理效率。传统上,LLM的推理过程分为预填充和解码两个阶段,其中预填充阶段负责计算并存储输入提示的所有token的键值(KV)缓存,这一步骤在…

转转上门履约服务拆分库表迁移实践

文章目录 1 背景2 数据迁移方案2.1 方案一:双写新旧库2.2 方案二:灰度开关切换新旧库 3 迁移细节3.1 业务代码改造3.2 数据同步3.3 数据一致性校验 4 总结5 参考资料 1 背景 随着业务不断发展,一个服务中部分功能模块适合沉淀下来作为通用的…

OverlayFS 文件系统介绍

引言 OverlayFS(Overlay Filesystem)是 Linux 内核中的一种联合文件系统(Union Filesystem),它通过叠加多个目录形成一个单一的文件系统视图。作为 Docker 的默认存储驱动之一,OverlayFS 在提高性能和简化容…

Python 装饰器简单使用

在Python编程中,装饰器(Decorators)是一种强大且优雅的功能,它允许我们在不修改原有函数代码的情况下,给函数增加新的功能。装饰器本质上是一个函数,它接收一个函数作为参数并返回一个新的函数,…

【医疗大数据】健康分析法应用于商业领域的文献回顾

这几天在看医疗大数据的文章,找到了这篇关于健康分析学在商业领域的应用,概括性地探讨了通过医疗大数据来解决医疗领域的问题。 Health analytics in business research: a literature review 1、研究背景: 本文探讨了健康分析学&#xff0…

吴恩达老师机器学习-ex3

使用逻辑回归 导入库,因为这次的数据是mat文件,需要使用scipy库中的loadmat进行读取数据。 通过对数据类型的分析,发现是字典类型,查看该字典的键,可以发现又X,y等关键字。 import numpy as np import m…

Python none和0区别是什么

None是Python中的一个关键字,None本身也是个一个数据类型,而这个数据类型就是None,它和0、空字符串以及false均不一样,这些都只是对象,而None也是一个类。 给个bool测试: val None if val:print "No…

【应急响应】Linux权限维持 -隐藏权限

前言 不知攻焉知守,学会排查就要先学习如何攻击。 隐藏文件 Linux下创建一个隐藏文件:touch .test.txt 查看Linux下的隐藏文件需要用到命令:ls -al 隐藏文件时间戳 touch -r .docker hello.php 创建的hello.php文件会和.docker创建文件的时间…

printf颜色格式化使用

前言 本文介绍了如何使用C语言标准函数进行字符的有色打印,以及实现一些特殊的输出。 一、一般使用 在C语言中,printf常用来进行标准化格式输出,其作用是将字符串打印到屏幕上面,其中可以使用占位符、转义符来对字符串进行格式…

[玄机]流量特征分析-常见攻击事件 tomcat

题目网址【玄机】:https://xj.edisec.net/ Tomcat是一个开源的Java Servlet容器,它实现了Java Servlet和JavaServer Pages (JSP) 技术,提供了一个运行这些应用程序的Web服务器环境。Tomcat由Apache软件基金会的Jakarta项目开发,是…

使用思科模拟电子邮件实验

实验十 电子邮件实验 文章目录 实验十 电子邮件实验1.实验目的2.实验流程3.实验步骤 1.实验目的 1)理解电子邮件的含义 2)理解邮件系统的工作过程 3)掌握简单的邮件服务器的配置 2.实验流程 开始 → 布置拓扑 → 配置路由及IP地址 → 配置…

JAVA—面向对象编程基础

面向对象是java编程的套路。更符合人类思维习惯,编程更直观。面向对象有三大特征:封装,继承,多态。 目录 1.理解面向对象 2.对象在计算机中的执行原理 3.类和对象的一些注意事项 4.类与对象的一些语法知识 (1&am…

小阿轩yx- KVM 高级功能部署

小阿轩yx- KVM 高级功能部署 案例分析 案例概述 企业内部为了使服务器资源达到最大化利用会进行 KVM 虚拟化每台服务器部署多台 KVM 虚拟机。KVM 虚拟机数量不断增多个别服务器会出现资源过载现象,就需要对部分 KVM 虚拟机迁移针对可停机的 KVM 虚拟机可使用静态…