Tengo la necesidad de inicializar los registros ARM de mi placa de desarrollo ARM7TDMI a unos valores específicos mediante el ensamblaje en línea. Por ejemplo, actualmente hago algo como lo siguiente:
#pragma ARM
void init(char * reg) {
__asm {
MOV R0,#0x0
MOV R1,#0x1
MOV R2,#0x2
MOV R3,#0x3
...
}
La idea es controlar de cerca el contenido de cada uno de los registros aquí. Estoy usando KEIL UVision 5 y me advierte que esto puede no ser algo inteligente. Y mirando al depurador no hay garantía de que la inicialización se realice según mi solicitud. Por ejemplo, el valor 0x2 puede almacenarse en el registro r12 en lugar de r2 como solicité en mi ensamblaje en línea.
a.c(102): warning: #1267-D: Implicit physical register R0 should be defined as a variable
Leer la documentación de Keil enlace Se sugiere utilizar nombres de variables. Algo como esto
{
int val2;
__asm
{
MOV val2,0xFFFF0000
MOV val,val,LSL #16
}
Bueno, esto no es lo suficientemente bueno para mí, ya que quiero un control preciso sobre el contenido de mi registro. ¿Cómo es posible hacer? ¿Alguna idea?
Gracias