首个64位汇编

我们先创建第一个AArch64上的首个汇编程序,这个64位代码是我在一个ARMv8服务器上运行的。有国产的华为鲲鹏/飞腾,非国产的也可以是安培或者Cavium。

first64.s

.arch armv8-a.global _start.text_start:mov x8, 93svc 0复制代码

编译:

as -g -o first64.o first64.s

ld -o first64 first64.o

在armv8机器上可以运行,当然没有什么输出的,可以通过echo $?来观看执行结果。

首个32位汇编

以树莓派3b为环境,这个是一个32位的ARM处理器,后面32位的代码都在我这个树莓派中运行的。

第一个程序如下:

.global main /* 'main' is our entry point and must be global */ main:          /* This is main */    mov r0, #2 /* Put a 2 inside the register r0 */    bx lr      /* Return from main */复制代码

as -o first.o first.s复制代码

gcc -o first first.o复制代码

然后执行:

./first

通过echo查看执行结果

$echo $?

2

这里bx是branch and exchange。分支意味着我们将改变指令执行的流程。该指令只是离开了主要功能,从而有效地结束了我们的程序。

这个代码在amrv8上是不能编译通故宫的,找不到bx指令。

Makefile

为了后续编译方便制作Makefile如下:

# Makefileall: first first: first.ogcc -o $@ $+ first.o : first.sas -o $@ $< clean:rm -vf first *.o



©著作权归作者所有:来自51CTO博客作者wx607823dfcf6a9的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 实现文件上下文管理(__enter__和__exit__)
  2. 第12部分- Linux ARM汇编 控制指令
  3. 流程控制之if判断
  4. 给我1万字,也讲不清Java内存排查。1万不行来2万~.~
  5. 想把Java代码写的更漂亮么?了解一下Try吧
  6. 解析Java横死之谜,气定神闲看花开花落
  7. 将java进程转移到“解剖台”之前,法医都干了什么?
  8. 工作累了,用java写个游戏吧!开源一款游戏引擎
  9. 一些好用的Java小库儿

随机推荐

  1. Android RIL总体架构介绍
  2. 图片走廊
  3. Mac Android Studio获取数字签名的方法
  4. Mac版Android studio中使用lambda表达式
  5. Android问题:com.android.builder.packagi
  6. Android Camera子系统代码流程1
  7. Android实现图片放大缩小
  8. cocos2dx在xcode下开发,编译到android上
  9. Android面试之---谈谈你对Android(安卓)N
  10. android 两点缩放图片