ARMv8 汇编指令

1、加载,存储指令

1.1 MOV   

MOV <Xd|SP>, <Xn|SP>

MOV <Xd|SP>, #<imm16>

  • 常用于寄存器之间的搬移和立即数搬移,  
  • 仅仅支持imm16, 0-4096大小范围的立即数操作

1.2 MRS,MSR访问系统寄存器

MRS: 状态寄存器 --> 通用寄存器的传送指令。

MSR: 通用寄存器 --> 状态寄存器的传送指令。

注意:在ARMv7里通过CP15协处理器方位系统寄存器

mrs x10, sctlr_el1     // 读取sctlr_el1系统控制寄存器属性配置
msr sctlr_el1 , x10    // 设置sctlr_el1

还可以访问PSTATE寄存器一些重要的相关字段。

特殊的系统寄存器 说明
CurrentEL 当前系统的异常等级
DAIF

获取和设置PSTATE中的DAIF掩码,

比如:可用来关闭/打开本地处理器中断

msr daifset, #0xf  //disable daif
msr daifclr, #0xf  //enable daif
NACV 获取和设置PSTATE中的条件掩码
PAN 获取和设置PSTATE中的PAN字段
SPSel 获取和设置当前SP寄存器
UAO 获取和设置PSTATE中的UAO字段

1.3 LDR, STR

LDR Xt, [Xn] //以Xn寄存器中的内容作为内存地址,加载此内容地址的内容到Xt目标寄存器中

LDR Xt, =<label>  // 把label标记的地址加载到Xt寄存器中

STR Xt, [Xn] //把Xt寄存器中的内容存储到Xn寄存器的内容地址中

    #define MY_PC_OFFSET 0x100
	my_data:
        .quad 0x09

   // 1. 测试ldr地址偏移模式
	mov x1, 0x80000
	mov x3, 16

	/* 读取0x80000地址的值到x0寄存器*/
	ldr x0, [x1]
    ldr x1, MY_PC_OFFSET //读取当前PC+0x100的地址的内容到x1中
    ldr x4, =my_data // 把my_data对应的地址加载到x4寄存器中
    ldr x5, [x4]    //加载x4内存地址对应的值到x5中

得到的结果:

0x80000对应的memory空间:8x8 = 64bit的空间

1.4 LDXR, STXR独占内存访问指令

LDXR <Xt>, [<Xn|SP>{,#0}]

STXR <Ws>, <Xt>, [<Xn|SP>{,#0}]

<Ws>:  Is the 32-bit name of the general-purpose register into which the status result of the store exclusive  is written,表示写的状态是成功还是失败
0  If the operation updates memory.
1  If the operation fails to update memory.
<Xt>:Is the general-purpose register to be transferred.
<Xn|SP>:Is the general-purpose base register or stack pointer.

独占内存访问指令,LDXR指令尝试在内存总线中申请一个独占访问的锁,然后访问一个内存地址。STXR指令会往刚才LDXR指令已经申请独占访问的内存地址写入新内容。LDXR和STXR指令通常组合使用完成一些同步操作,比如linux内核的自旋锁。

另外还有LDXP,STXP也是支持多字节独占访问的指令;还有LDAR, STLR,内存屏障原语操作

1.4 LDP, STP   多字节内存加载和存储指令

LDP <Xt1>, <Xt2>, [<Xn|SP>{, #<imm>}] 

  • 说明:LDP 以Xn/SP 寄存器的值为基地址,然后读取Xn|SP寄存器的值+imm地址的值到Xt1寄存器,读取Xn|SP寄存器的值+imm+8地址的值到Xt2寄存器,

STP <Xt1>, <Xt2>, [<Xn|SP>{, #<imm&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值