ARM aarch64汇编学习笔记(一):搭建编译环境

转载:https://blog.csdn.net/yhb1047818384/article/details/80382783

最近,对arm的汇编产生了兴趣,之前对汇编的知识掌握的不深,算是从零学习吧,用blog记录下学习的点滴,希望能够坚持下去。

环境搭建
市面上其实是有一些arm64位的服务器可以供选择的,比如cavin的thunder x2,华为的泰山服务器等。 
不过没有arm的服务器并不代表学不了arm64汇编,我主要是在x86的虚拟机上使用QEMU和cross- toolchain学习aarch64汇编。

环境准备: 
1. 操作系统:centos 7.4(x86_64版本) 


2. 安装QEMU模拟器 
yum install qemu-user 

如果找不到该安装包,需要配置epel源 
配置方法: 
https://www.cnblogs.com/renpingsheng/p/7845096.html

3. 安装 linaro aarch64交叉编译链 
去官网(www.linaro.org)下载解压 


设置环境变量: 

此时,使用aarch64–linux-gnu-gcc 命令可以编译arm aarch64位程序

第一个arm aarch64 汇编程序
任意一门编程语言,我们第一个程序都会选择打印’hello world‘. 
vim hello.S

.text

.global main
main:
        ldr x0, addr_of_keep_x30
        str x30, [x0]

        ldr x0, addr_of_msg
        bl puts

        ldr x0, addr_of_keep_x30
        ldr x30, [x0]

        mov w0, #0
        ret


addr_of_msg: .dword msg
addr_of_keep_x30: .dword keep_x30
.data
msg: .asciz "hello world!\n"
keep_x30: .dword 0

将hello.S文件编译成.o文件

aarch64-linux-gnu-as -o hello.o hello.S
1
现在使用aarch64-linux-gcc进行编译(-static标志很重要)

aarch64-linux-gnu-gcc -static -o hello hello.o
1
查看文件是否64位 


最后一步,运行. 


大功告成! 
万事开头难,可以先不用考虑hello.S每一行汇编的含义,先尝试着运行一次。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值