作者:超级冷笑话驿站料_663 | 来源:互联网 | 2022-11-30 15:36
我一直试图在ARM M0 +处理器的汇编中进行一些简单的操作.
到目前为止,我失败了.
我想分配两个变量,a&b到一些值,3和8,然后我想将一个变量设置为另一个的值.
在任何更高级别的语言我只需要
int a = 3;
int b = 8;
b = a;
到目前为止,在汇编中我想出了如何分配和设置变量.
a DCD 3
b DCD 8
我想出了如何获得变量的值和地址
LDR r0, =a ; r0 = &a
LDR r0, [r0] ; r0 = a
这就是我陷入困境的地方,我如何将r0的值存储到变量b中?
1> Ped7g..:
只需将加载操作转换为存储操作,即需要内存地址,其中保留空间为b
:
LDR r1, =b ; r1 = &b (do not overwrite "a" value in r0)
然后将"a"值存储到内存中:
STR r0, [r1] ; b = r0 (a)
这似乎应该是任何基础教程或书籍的一部分,所以也许试着寻找一个,"猜测"关于汇编的一切自己,只使用指令集手册是以后的重要实践,但对于基础使用也有一些教程或预订让你开始更快,装配不是"猜测"友好.
请记住,CPU指令是由CPU的硬件设计设计的,因此它们的内部"逻辑"是高级语言可能需要和使用的"编程逻辑"之间的折衷,以及哪些晶体管可以有效地执行(HW逻辑) ),汇编不是那么多"编程语言",因为它是"硬件设计CPU描述",所以如果你一直期待"编程"逻辑,你会经常遇到奇怪的事情(一旦你试着考虑就很有意义)硬件思维方式然后那些奇怪的东西被高级编程语言编译器隐藏,所以普通的程序员不需要确切地知道硬件是如何运行的.