进行学习练习我偶然发现了为ARMv7架构编写的以下代码:
register char* reg_r0 asm ("r0");
*reg_r0 = putch(*reg_r0);
包含此代码的函数由汇编程序例程和" r0"将包含一些指向某个静态变量的地址。代码使用gcc和-O0编译,并按预期工作(它将putch
的返回值写入之前提到的静态变量)。按照惯例,返回值在R0中返回,所以我想知道某些编译器是否可以取消引用并在reg_r0
返回后写入putch
中包含的地址,如果返回值不是,则会导致某些访问冲突你应该写的地址。