树莓派实验三: ARM指令

本文通过一系列实验详细探讨了在树莓派上使用C代码生成ARM指令的情况,包括如何通过编译参数改变指令类型、产生条件执行指令、寄存器移位寻址、复杂数装载到寄存器的过程,以及函数调用时的参数传递、本地变量堆栈分配和寄存器管理。同时,文章展示了如何生成带累加的乘法MLA指令,并通过反汇编工具objdump进行分析验证。
摘要由CSDN通过智能技术生成

一、实验目的

       1. 熟悉ARM指令集

       2. 掌握在树莓派下使用反汇编工具

 

二、实验内容

通过C代码和反汇编工具研究:

  1. 生成了Thumb指令还是ARM指令,如何通过编译参数改变;
  2. 对于ARM指令,能否产生条件执行的指令;
  3. 设计C的代码场景,观察是否产生了寄存器移位寻址;
  4. 设计C的代码场景,观察一个复杂的32位数是如何装载到寄存器的;
  5. 写一个C的多重函数调用的程序,观察和分析:
    1. 调用时的返回地址在哪里?
    2. 传入的参数在哪里?
    3. 本地变量的堆栈分配是如何做的?
    4. 寄存器是caller保存还是callee保存?是全体保存还是部分保存?
  6. MLA是带累加的乘法,尝试要如何写C的表达式能编译得到MLA指令。

 

三、主要仪器设备

       1. 树莓派板子 1个 (配有电源线、组装塑料外壳、以及一根装用的串口线)

       2. 8G大小的SD卡 1张

       3. 操作系统为Windows7的笔记本电脑1台

四、操作方法和实验步骤

1. 生成了Thumb指令还是ARM指令,如何通过编译参数改变;

       1.1 编写测试程序如下

 

       1.2 使用objdump查看.o文件࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值