//存储
mov x1, x2//把x2里面的内容复制在x1--64位寄存器
mov w1, w9//把w9里面的内容复制在w1--32位寄存器
mov x0, xzr//在x0寄存器中复制一个0--xzr就是0
mov w0, wzr//在w0寄存器中复制一个0--wzr就是0
mov x0, #1//在x0寄存器中赋值1--赋值=加
mov w0, #1//在w0寄存器中赋值1--赋值=加
STR X0, [x1, #88]//x0把内容存储在x1偏移88的位置
STRB W1, [x1, #196]//将W1寄存器的最低字节存储到x1加上偏移196的内存地址中
SUB X4, X29, #72 //将寄存器X29的值减去72并将结果存储到寄存器X4中
LDR X0, [x1, #168]//将x1偏移168位置内容存储到x0中--其中x0为8字节--为什么是8字节呢--请看以下AI解释
EOR W3, W1, W2 //将寄存器W1和W2的值进行按位异并将结果存储到寄存器W3中
ORR W1, W2, #6 //将寄存器W2的值与6进行按位运算并将结果存储到寄存器W1中
//ARM64架构中的X寄存器是64位的,这意味着每个寄存器可以存储8字节的数据(1字节 = 8位)。因此,X0 寄存器是一个64位的寄存器,可以存储8字节的数据-----AI
ADDS X8, X8, #1 //将寄存器X8的值加1并将结果存储回X8同时更新标志寄存器
MOVK W8, #62787, LSL #16 //62787左移16位后保持W8的其他位不变将结果存储到W8中---LSL=左移, ASR=右移
//调用程序
BL sub_16384//执行偏移16384处的函数块
//加法
add X1, x3,#1//x3的内容再加1然后x3加1后的内容存储在x1
//减法
SUB X1, x2;//x2的值减x1= 96-91,91就是x2,x1就是96
STUR XZR, [X29,#-72]//将零寄存器XZR的值存储到X29减去72偏移存地址中
//程序结束并返回运行结果
RET
//加载寄存器,这是一个例子
ADRP X0, #off_54CD98 //计算off_54CD98所在页面的基地址并将其加载到寄存器X0中
LDRB W8,[x2, #196]//x2加上偏移196的内存地址加载一个字节到寄存器W8中
//判断
CBZ X1//判断x1的寄存器是否为0
CBNZ X1 //判断x1的寄存器是不否为0
TBNZ W8, #0//判断w8寄存器的第0位是否不等于0
TBZ W8, #0//判断w8寄存器的第0位是否等于0
CMN W0, #1//比较寄存器W0的值也就是-1-----CMN取负值比较
CMP W8, #0 //比较寄存器W8的值是否等于0
AND W0, W19, #1 //将寄存器W19的最低位与1进行按位与运算并将结果存储到寄存器W0中
CSEL W14, W12, W14, EQ //如果之前指令的结果为零则将W14设置为W12的值则保持W14的值不变
CSET W19, NE//如果比较结果不达成则将寄存器W19设置为1--以下是他的设置
//条件设置:CSET W19, NE 根据比较结果设置W19的值如果W8不达成条件则W19被设置为1如果W8达成条件则W19被设置为 0
CSINC X19, X0, XZR, NE //判断比较值的结果不等于0,等于就将X0的值赋给X19否则将XZR(零)的值赋给X19
B.EQ//判断是否等于
B.NE//判断条件是否不等于B.CS//判断是否小于
B.CC//判断是否大于或等于B.HI//判断是否小于或者等于--也可以说是否大于=高于
B.GT//判断是否大于//作用例子--未完工
mov X1, xzr
RET//返回一个0