assembly - 如何在 ARM 汇编中移动字节
问题描述
假设我在寄存器中存储了以下十六进制值;
r1 = #0x1
r2 = #0x2
r3 = #0x3
r4 = #0xA
我想将#0x123A 存储在 r0 中。
有没有一种移位字节值的方法,类似于使用 LSL/LSR 移位位,以便我可以将每个寄存器 (r1-r4) 与掩码相加,然后将字节移位到 r0 中的正确位置?
解决方案
ARM 移位是作为其他操作中第二个操作数的一部分完成的。所以你会做这样的事情:
OR r0, r4, r3, LSL #4
OR r0, r0, r2, LSL #8
OR r0, r0, r1, LSL #12
尽管如果源寄存器的其他位不为零,这不会执行“掩码”部分。
推荐阅读
- excel - 使用集合对象填充 Excel 表
- java - 使用 tika 库进行数据提取
- cookies - 如何为我的 Xpages 应用程序设置/切换语言
- r - 将矩阵中的每个元素除以 R 中的一个元素
- python-3.x - 如何将 wx 位图图像对象转换为 numpy 指标?
- php - 运行测试时无法使 Laravel 更改数据库
- powershell - 在Powershell中将字符串与数字进行比较
- config - nuxt.config.js:为开发或生产加载不同的配置
- node.js - 如何正确处理 context.sendActivity?
- systemd - systemd-udev 规则多次应用(在我的情况下是两次)