GNU环境下伪操作伪指令的测试

news2024/9/30 13:24:07

目录

1.伪操作ldr转为指令的验证

测试目标:

测试代码:

测试结果:

结果分析:

2、伪操作ALIGN使用的例子

测试目标:

测试代码:

测试结果:

(1)未使用align伪操作:

(2)使用了align伪操作:

结果分析:


1.伪操作ldr转为指令的验证

测试目标:

(1)理解并熟练运用ARM处理器的伪指令,理解ldr伪指令的功能。

(2)在GNU环境下练习ARM处理器伪指令和伪操作,并学会分析反汇编代码。

测试代码:

start.s

.globl _start

_start:

ldr r0,=0x70000000

orr r0,r0,#0x13

mcr p15,0,r0,c15,c2,4



ldr r0,=0x7e004000

mov r1,#0



str r1,[r0]



ldr r1,=0x7e000020

mov r0,#0x1000

str r0,[r1]



ldr r1,=0x7e000024

mov r0,#0

str r0,[r1]

halt:

b halt

测试结果:

结果分析:

start.txt是start.s反汇编后的文件。我们以当前正在执行的指令作为参考点,也就是以第一条指令为参考点,那么 R15(PC)中存放的就是第三条指令,换句话说就是 R15(PC)总是指向当前正在执行的指令地址再加上 2 条指令的地址。对于 32 位的 ARM 处理器,每条指令是 4 个字节,所以R15 (PC)值 = 当前执行的程序位置 + 8 个字节。

当执行到ldr伪指令时,会在代码末尾开辟一块内存,用来存放不是合法立即数的常数。

11行ldr r0,[pc,#32]中32 是指针指向从当前指令的下两条指令开始的第32个字节的位置,即第22行PC=30的位置。

14行ldr r1,[pc,#24]中24 是指针指向从当前指令的下两条指令开始的第24个字节的位置,即第23行PC=34的位置。

17行ldr r1,[pc,#16]中16 是指针指向从当前指令的下两条指令开始的第16个字节的位置,即第24行PC=38的位置。

2、伪操作ALIGN使用的例子

测试目标:

对齐方式设置ALIGN伪操作通过用0或NOP指令进行填充来使当前位置与指定的边界对齐。

测试代码:

align.s

.globl _start

_start:

 mov r1,r0

    mov r0,#12

    ldr r4,str1

    ldr r3, =str1



    ldr r5,str

    ldr r6,=str

    ldr r7,str



str1:

    .word 7777

str:

    .word 0x33f80000

    .byte 0x88

    .byte 0x77

    .align

reset:

mov r8,#0

测试结果:

利用arm-linux-gcc 生成可执行文件并对生成的可执行文件进行反汇编:

(1)未使用align伪操作:

(2)使用了align伪操作:

结果分析

通过反汇编我们可以看出,前面所有的指令都是4的倍数,而在未使用align伪操作reset这个地址处的指令却不是4的倍数,我们知道ARM是32位处理器,在当前ARM指令状态下,所有指令的执行都是按照4的倍数进行执行的,使用align伪操作的程序反汇编后PC所指地址为00000028,是4的倍数,实现了对齐。

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

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

相关文章

BearPi Std 板从入门到放弃 - 后天篇(1)(I2C1 读取 光照强度)

简介 基于 BearPi Std 板从入门到放弃 - 引气入体篇(5)(printf打印到串口), 通过I2C接口,读取光照强度并打印到串口; 开发板 : Bearpi Std(小熊派标准板) 主芯片: STM32L431RCT6 LED : PC13 \ 推挽输出即可 \ 高电平点亮 串口: U…

chrome overrides 怎么用?

在network里找到你想替换的文件 右键选择override content 他会提示你选择文件夹 你选择本地的一个 紧接着他会提示你 点允许 再去你创建的那个目录里查看 会发现 他自动帮你创建了目录 他会把线上的被替换目标文件放在里面 你直接修改他就可以了

【面试经典150 | 二叉树】二叉树的最大深度

文章目录 写在前面Tag题目来源解题思路方法一:递归方法二:迭代 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的…

ssm社区医院儿童预防接种管理系统源码

ssm社区医院儿童预防接种管理系统源码709 开发技术:后端 ssm 后台管理 vue 用户端 vue.jshtml 一、课题研究目的和意义 为了方便家长用户更全面的掌握孩子的疫苗接种情况,系统提供便利的疫苗接种服务,同时也旨在推广疫苗接种知识&#xff…

数据库更换版本

目录 0.前言 1.官网下载MySQL 2.配置初始化文件my.ini 3.初始化MySQL 4.安装mysql服务并启动修改密码 5.配置环境变量​编辑 0.前言 心累,为了完成实验,必须使用8.0版本导致我更新版本的时候,把sqlyog干崩溃了,什么版本不兼…

全球与中国仿制药市场:增长趋势、竞争格局与前景展望

仿制药是指在剂型、功效、给药方法、品质、性能特征、用途等方面与原厂药相似并已获得原厂药上市许可的药品。仿制药的价格低于品牌药。糖尿病、癌症和心血管疾病等慢性疾病的快速成长推动了仿制药市场的成长。此外,仿制药的实惠价格以及最新产品的批准和推出也有助…

面试必会-JAVA基础篇-02

文章目录 11. ArrayList 和 LinkedList 的区别是什么?12. 说一下HashMap的实现原理?13. HashMap的put方法的具体流程?14. 讲一讲HashMap的扩容机制15. ConcurrentHashMap 底层具体实现知道吗?16. 创建线程的四种方式17. runnable …

Educational Codeforces Round 159 (Rated for Div. 2)(A~F)(LCA + 线性基)

A - Binary Imbalance 题意:给定一个01串,你能够在相邻相同字符中插入‘1’,在相邻不同字符中插入‘0’,求最终能否使得0的数量严格大于1的数量。 思路:可以发现,当出现了‘01’或者‘10’子序列时,能够无…

shopee主营店铺链接怎么填,shopee店铺url在哪里找——站斧浏览器

要设置Shopee主营店铺链接,在设置页面中填写自己想要推广的其他店铺的链接地址,并进行测试和提交审核。通过设置主营店铺链接,卖家可以增加销售量和曝光率。 shopee主营店铺链接怎么填? Shopee主营店铺链接是指卖家在Shopee平台…

[ISCTF 2023]——Web、Misc较全详细Writeup、Re、Crypto部分Writeup

前言 由于懒我直接把上交的wp稍加修改拉上来了,凑活看 文章目录 前言Pwntest_ncnc_shell ReverseCreakmeEasyRebabyReeasy_z3mix_reeasy_flower_tea Webwhere_is_the_flag圣杯战争!!!绕进你的心里easy_websitewafrez_ini1z_Ssqldouble_picklewebincludefuzz!恐怖G…

拼多多股价为什么可以创下两年新高并一举超越阿里巴巴?

来源:猛兽财经 作者:猛兽财经 拼多多再次证明了它是全球电商领域中不可忽视的力量 过去两年,由于某些众所周知的原因,很多中概股的股价都很疲软,甚至半死不活的,很多投资中概股的朋友也一直承受着很大的…

交通强国添力量 无人机巡航为何备受期待?

在高速建设交通强国的过程中,交通运输部海事局计划完善“陆海空天”一体化水上交通运输安全保障体系。无人机巡航系统将在提升海事船舶监管和水上搜救能力方面发挥关键作用,以构建更为全面的监管体系。尽管已初步建立了海事监管体系,但仍存在…

APP逆向工具环境安装

环境安装及配置: 1.JDK安装及配置链接:https://pan.baidu.com/s/146I4vDJdz8YeR0OEqLS8xw 提取码:7h00 2.SDK环境配置链接:https://pan.baidu.com/s/1A8rwqyw8Nn7p93Axqpll3A 提取码:cwv43.NDK环境配置链接&#xff1…

深度学习在工业自动化领域的简析

原创 | 文 BFT机器人 在机器视觉和工业自动化领域,很少有比“深度学习”更引人注目的词汇。大约七年前左右,这个词随着一波庞大的营销炒作而出现,附带着“革命性”和“颠覆性”等形容词。几年后,尘埃落定,深度学习在自…

销售人员一定要知道的6种获取电话号码的方法

对于销售来说,电话销售是必须要知道的销售方法,也是销售生涯中的必经之路。最开始我们并不清楚这么电话是从哪里来的,也不清楚是通过哪些方法渠道获取。那么今天就来分享给各位销售人员获取客户电话号码的方法。 1.打印自己的名片&#xff0…

[ 蓝桥杯Web真题 ]-视频弹幕

目录 介绍 准备 目标 效果 规定 思路 解答参考 扩展功能 介绍 弹幕指直接显现在视频上的评论,可以以滚动、停留甚至更多动作特效方式出现在视频上,是观看视频的人发送的简短评论。通过发送弹幕可以给观众一种“实时互动”的错觉,弹幕…

大数据 - MapReduce:从原理到实战的全面指南

本文深入探讨了MapReduce的各个方面,从基础概念和工作原理到编程模型和实际应用场景,最后专注于性能优化的最佳实践。 一、引言 1.1 数据的价值与挑战 在信息爆炸的时代,数据被视为新的石油。每天都有数以百万计的数据被生成、存储和处理&…

GUI库pyqt5的中线程通信问题

背景 在使用pyqt5编写GUI程序时,我们可能有时会需要使用多线程来处理问题,这就可能会涉及到线程之间相互通信的问题。比如接下来要解决的进度条问题。 解决思路 我们可以通过pyqt5的信号与槽机制来完成线程之间的通信。 代码编写 # Copyright (C) 2…

如何写好亚马逊listing页面?助你提高转化率!(下)

一、产品长描述 产品长描述位于listing页面的中部,是产品信息的重要组成部分。卖家可以描述产品的特点、功能和使用方法,有助于解决买家可能存在的疑虑,从而增加销售、提高转化率和品牌形象。 在亚马逊上,有两种长描述方式——有…