arm的bin二进制代码分析

本文详细分析了ARM架构下bin文件的机器指令,通过实例展示了如何在ADS环境下进行代码反汇编。讨论了MOV指令、BL调用子程序指令的机器码,并探讨了在不同情况下的指令定位和参数设置,如导入函数、内存操作及SUBROUTINE中的参数传递方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bin文件中,就是一条条的机器指令,每条指令4个字节。

ADS中打开一个.s文件,选择project->disassemble

可以看到汇编的机器码

汇编代码如下(ADS中的一个例程/ARM/ADSv1_2/Examples/asm/armex.s):

        AREA ARMex, CODE, READONLY  ; name this block of code

        ENTRY                       ; mark first instruction

                                    ; to execute

start

        MOV     r0, #10             ; Set up parameters

        MOV     r1, #3

        ADD     r0, r0, r1          ; r0 = r0 + r1

 

stop

        MOV     r0, #0x18           ; angel_SWIreason_ReportException

        LDR     r1, =0x20026        ; ADP_Stopped_ApplicationExit

        SWI     0x123456            ; ARM semihosting SWI

 

        END                         ; Mark end of file

 

执行project->disassemble后:

** Section #1 'ARMex' (SHT_PROGBITS) [SHF_ALLOC + SHF_EXECINSTR + SHF_ENTRYSECT]

    Size   : 28 bytes (alignment 4)

 

    start

    $a

    ARMex

        0x00000000:    e3a0000a    ....    MOV      r0,#0xa

        0x00000004:    e3a01003    ....    MOV      r1,#3

        0x00000008:    e0800001    ....    ADD      r0,r0,r1

    stop

        0x0000000c:    e3a00018    ....    MOV      r0,#0x18

### ARM架构下安装Docker二进制文件的方法 要在ARM架构的Linux系统上通过二进制方式安装Docker,可以按照以下方法操作: #### 准备工作 在开始之前,需确认当前系统的CPU架构是否为aarch64(即ARM架构)。可以通过命令`uname -m`来验证。如果返回的结果是`aarch64`,则表示该系统支持ARM架构。 #### 下载Docker二进制文件 访问官方提供的最新稳定版本页面,找到适用于ARM架构的Docker二进制包并下载。通常情况下,可以在[Docker官方网站](https://download.docker.com/linux/static/stable/aarch64/)获取到适合ARM架构的静态二进制文件[^2]。 以下是具体的下载和解压过程: ```bash curl -fsSL https://download.docker.com/linux/static/stable/aarch64/docker-<version>-linux-aarch64.tar.gz -o docker.tgz tar -xzvf docker.tgz sudo mv docker/* /usr/bin/ rm -rf docker docker.tgz ``` 上述脚本中的`<version>`应替换为你希望安装的具体Docker版本号。 #### 配置Docker服务 为了使Docker能够作为后台服务运行,需要创建一个Systemd服务文件 `/etc/systemd/system/docker.service` 并写入如下内容: ```ini [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service containerd.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2 Restart=always LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TasksMax=infinity Delegate=yes KillMode=process [Install] WantedBy=multi-user.target ``` 完成编辑后执行以下命令以加载新配置和服务启动: ```bash sudo systemctl daemon-reload sudo systemctl start docker sudo systemctl enable docker ``` 此时,Docker应该已经在ARM架构下的Linux环境中成功部署完毕,并可通过命令 `docker version` 来检验其正常运作状态。 #### Docker Compose 的额外说明 需要注意的是,在某些场景下可能还需要搭配使用Docker Compose工具。然而由于官方并未直接提供针对ARM平台预编译好的Compose二进制程序,因此建议采用第三方构建或者自行交叉编译的方式获得适用版本[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值