CM3 支持 64 位整数, LDRD STRD

复制代码
 1 ;CM3 在一定程度上支持 64 位整数。
 2 ;其中 LDRD/STRD 就是为 64 位整数的数据传送而设的,语法 格式为:
 3 
 4     LDRD.W RL, RH, [Rn, #+/-offset] {!}
 5     STRD.W RL, RH, [Rn, #+/-offset] {!}
 6     LDRD.W RL, RH, [Rn],#+/-offset
 7     STRD.W RL, RH, [Rn],#+/-offset
 8 
 9     LDR R2, =0x1000     ;(0x1000)= 0x1234_5678_ABCD_EF00 : 00 EF CD AB 78 56 34 12
10     LDRD.W R0, R1,[R2]  ;R0= 0xABCD_EF00, R1=0x1234_5678
11     STRD.W R1, R0,[R2]  ;(0x1000)=0xABCD_EF00_1234_5678 : 78 56 34 12 00 EF CD AB 
复制代码

Memory : [ RL ] [ RH ]

For example, the following piece of code stores the 64-bit value 0x0123456789ABCDEF to address 0xA0000000:
void perip_64bitaccess(void)
{
  unsigned long long value = 0x0123456789ABCDEF;
  *((volatile unsigned long long*) (0xA0000000)) = value;
}

 

 

复制代码
__asm void stm_llout(unsigned long long* addr, unsigned long long value)
{
  STM r0, {r2,r3}
  BX LR
}

__asm unsigned long long ldm_llin(unsigned long long* addr)
{
  LDM r0, {r0,r1}
  BX LR
}

unsigned long long perip_64bitaccess(void)
{
  unsigned long long ullvalue = ldm_llin((unsigned long long*)0x40004000);
  stm_llout((unsigned long long*)0x40000000, ullvalue);
  return ullvalue;
}
复制代码

 

posted @   IAmAProgrammer  阅读(786)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示