【愚公系列】2022年06月 ARM汇编的相关介绍

举报
愚公搬代码 发表于 2022/06/30 20:44:44 2022/06/30
【摘要】 相关知识关于ARM架构ARM架构,过去称作高级精简指令集机器(英语:Advanced RISC Machine,更早称作Acorn精简指令集机器,AcornRISC Machine),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由于节能的特点,其在其他领域上也有很多作为。ARM处理器非常适用于移动通信领域,匹配其主要设计目标为低成本、高性能、低耗电的特性。...

相关知识

  1. 关于ARM架构
    ARM架构,过去称作高级精简指令集机器(英语:Advanced RISC Machine,更早称作Acorn精简指令集机器,AcornRISC Machine),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由于节能的特点,其在其他领域上也有很多作为。ARM处理器非常适用于移动通信领域,匹配其主要设计目标为低成本、高性能、低耗电的特性。另一方面,超级计算机消耗大量电能,ARM同样被视作更高效的选择。安谋控股开发此架构并授权其他公司使用,以供他们实现ARM的某一个架构,开发自主的系统单片机和系统模块(system-on-module,SoC)。

  2. 关于汇编语言
    汇编语言(英语:assembly language)是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的机器语言指令集。 一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可以在不同系统平台之间移植。

  3. 树莓派安装参考:

    https://mp.weixin.qq.com/s/nKVVomLX07RmM65fbayrpg

相关工具

汇编语言只是机器代码之上的一个简单语法层,它由映射了二进制机器码的助记符组成。二进制机器码是CPU所能理解的指令。那么为什么我们不直接写机器码呢?我只能说,那会很蛋疼(原文为that would be a pain in the ass,终于知道蛋疼怎么说了,新技能get)。因此我们会使用汇编语言,这对于人类来说更易于理解。当然,我们的计算机本身不能运行汇编代码,它需要机器码。我们将使用GNU Binutils工具集中的汇编器as将汇编代码转换为对应的机器码,as会读取后缀为“.s”的汇编源代码文件,然后输出汇编后的二进制目标文件。

编写了后缀为“.s”的汇编文件后,可以使用as将它汇编,最后使用ld链接,如下所示:

$ as program.s -o program.o

$ ld program.o -o program

在接下来的一系列实验中,针对重点和难点部分我都会使用gdb配合调试观察,方便我们理解指令的具体含义,gdb本身功能已经很强大了,不过这里我们给它装上gef插件,gef支持多架构,而且功能强大比如heap的分析功能等。

首先启动树莓派:

qemu-system-arm -kernel ~/qemu_vms/qemu-rpi-kernel/kernel-qemu-4.4.34-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 rootfstype=ext4 rw" -hda ~/qemu_vms/rasbian.img -redir tcp:5022::22 -no-reboot

在这里插入图片描述
启动成功后在本机用SSH连接:ssh pi@127.0.0.1 -p 5022,pi账户密码raspberry

三条命令安装gef(已装)

wget  -q  -O-  https://github.com/hugsy/gef/raw/master/gef.sh | sh # manually # 下载 `gef.py`, 并将其 `source` 写入 `.gdbinit`
wget  -q  -O  ~/.gdbinit-gef.py  https://github.com/hugsy/gef/raw/master/gef.py
echo  source  ~/.gdbinit-gef.py  >> ~/.gdbinit

在这里插入图片描述
接着启动gdb如图所示则表示安装成功
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。