我正在为Beaglebone Black PRU(使用PASM
汇编语言)编写一些汇编代码,而我一直在努力解决看似简单的问题。
正如标题所示,我需要将一个位从指定位置复制到同一位置的另一个寄存器中。 例如,
说我有
r1 = 0bABCDExGH
r2 = 0bIJKLMyOP
其中大写字母表示不应修改的现有数据。我想将x复制到y。
现在,我知道在正常情况下可以执行此操作的百万种方法,但是要注意的是,我只能执行一个操作。我可以预先设置一些其他内容,但是这种移动本身应该在一次操作中完成。
PASM允许通过点后缀来引用各个位,例如r2.t3
具体引用位3。通过这个,我想我可以使用类似的东西
MOV r2.t3, r1.t3
但是编译器抱怨use of .T field not allowed here
。
我的下一个尝试是将r2复制到例如r3中,清除相关位,然后将其与相同的.t位进行“或”运算。所以
MOV r3, r2
CLR r3, 3
OR r2, r3, r1.t3
但是,再一次,use of .T field not allowed here
。
这就是我放弃的地方。关于PASM的文档非常有限且令人困惑,我找不到任何不允许在此使用.T
后缀的充分原因(用于字节级访问的.b
似乎很好)。
我一直在使用的一些参考资料: