linux汇编(ARM64)

摘要:
标签可以直接视为地址。

linux汇编(ARM64)

quad

arm64汇编代码里(.S)的.quad,表示4个word,即8个字节

memset/__memset函数实现

这两个函数都是汇编函数,在如下路径里的.S文件里实现:

4.19archarm64libmemset.S

misc

一. 带点的(一般都是ARM GNU伪汇编指令)

1. ".text"、".data"、".bss"

依次表示的是

“以下是代码段”,

“以下是初始化数据段”,

“以下是未初始化数据段”。

2.".global"

定义一个全局符号,通常是为ld使用。比如经常看到的

.global _start

3.".ascii"、".byte"、".short"、".int"、".long"、".word"、".quad"

定义一个字符串,并为它分配空间

定义一个字节,并为它分配空间,占单字节,0x34

定义一个短整型,并为它分配空间,占双字节,0x1234

定义一个整型,并为它分配空间,占四字节,0x12345678

定义一个长整型,并为它分配空间,占四字节,0x12345678

定义一个字,并为它分配空间,

定义一个,并为它分配定义,占八字节,...

比如

.long 0x22011110//BWSCON

.long 0x00000700//BANKCON0

...

4.".abort"

停止汇编

5.".align"

.align absexpr1,absexpr2

以某种对齐方式,在未使用的存储区域填充值. 第一个值表示对齐方式,4, 8,16或32. 第二个表达式值表示填充的值

6.".if .else .endif"

.if

.else

.endif:支持条件预编译

7.".include"

.include "file":包含指定的头文件, 可以把一个汇编常量定义放在头文件中

8.".comm"

.comm  symbol, length:

在bss段申请一段命名空间,该段空间的名称叫symbol, 长度为length. Ld连接器在连接会为它留出空间

9.".equ"

.equ symbol, expression: 把某一个符号(symbol)定义成某一个值(expression).该指令并不分配空间,相当于C语言中的#define。例如

.equ aaa,0x20000000

10.".macro .endm"

.macro: 定义一段宏代码,.macro表示代码的开始,.endm表示代码的结束,.exitm跳出宏, 示例如下:

.macro SHIFTLEFT a, b.if < 0

mov a, a, ASR #-

.exitm

.endif

mov a, a, LSL #

.endm

11.".req"

name .req register name: 为寄存器定义一个别名

12.".code"

.code [16|32]: 指定指令代码产生的长度, 16表示Thumb指令, 32表示ARM指令

13.".ltorg"

.ltorg: 表示当前往下的定义在归于当前段,并为之分配空间

二.带下滑线的

1._start

汇编程序的缺省入口,但是可以更改,想要更改其他标志,到相应的链接脚本中去用ENTRY指明其他入口标志。标号可以直接认为是地址。

免责声明:文章转载自《linux汇编(ARM64)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP图像处理(GD库)学习笔记:新技术与新趋势(演讲者:王煜全-海银资本合伙人)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

PHP是怎么运行的

严格来说,与PHP相关的过程不需要手动启动。它们与Apache启动一起运行。当然,如果需要重新启动PHP服务,可以手动重新启动PHP。最后,它被移交给PHP内核的ZendEngine进行顺序执行。PHP在开始执行后将经历两个主要阶段:处理请求之前的开始阶段和请求之后的结束阶段。PHP的结束阶段分为两个阶段:禁用模块和关闭模块。...

CAS单点登录------未认证授权服务

问题背景:之前我使用的127.0.0.1进行CAS直接url进行过滤!后来我用nginx进行反向代理出现问题:如下图第一眼,就在内心想,草这什么鬼!调试了五分钟发现还是不行!  网上各种教程!  半小时过去了!我吧配置文件自己看看!    出现这样问题:原因是CAS 的服务认真之前先有个REgx的正则判断,目录如上看这个正则时候,我瞬间明白了,我下面这个问题...

grep多条件查找"与","或"

这里以jps命令为例jps查看全部的jvm进程"与"查找下图是所有jvm进程如果想查找256891ThriftServer服务用"与"查找可以理解为是条件查找命令:jps|grep-eer|grep-eT"或"查找方法一:grep-E'A|B'和grep-eA-eB方法二:egrep'A|B'方法三:awk'/A|B/'...

用python调用caffe时出错:AttributeError: 'module' object has no attribute 'bool_'

下面给出了一个解决方案,即重命名冲突的io文件:numpyと PyCaffe公司が io。年が 竞争す る よ で す$ pythonclassify。py--raw_scale255~/caffe/101_ObjectCategories/airaires/image_0001.jpg../result.npyTraceback:文件“classif.py...

java实现word转pdf文件(高效不失真)

importjava.io.File;importjava.io.FileOutputStream;importjava.io.InputStream;importorg.aspectj.weaver.ast.Test;importcom.aspose.words.Document;importcom.aspose.words.License;importc...

go语言游戏服务端开发(一)——架构

本教程以Go语言为例。特别是游戏服务进程有更新上线时,稳定性还没有被线上并发验证,宕机的几率会增加,数据丢失的风险也会增加。为了减轻风险,可以考虑把数据缓存跟服务进程分离。对于轻中度游戏,游戏的通信量不会很多,没必要每个分服都有一个长连接socket网关。假设一个分服同时连接服务器的客户端有5k,一台机器的socket网关能支持5w个玩家。因此网关需要参与服...