Quantcast
Channel: Question and Answer » assembly
Viewing all articles
Browse latest Browse all 23

Initialize ARM registers to specific value via Inline assembly

$
0
0

I have a need to initialize the ARM registers of my ARM7TDMI development board to a specific values using inline assembly. For example currently I do something like the following :

    #pragma ARM
        void init(char * reg)  {

            __asm  {
                MOV    R0,#0x0
                MOV    R1,#0x1
                MOV    R2,#0x2
                MOV    R3,#0x3
               ...
}

The idea is to closely control the contents of each of the registers here. I am using KEIL UVision 5 and it warns me that this may not be a smart thing to do . And looking at the debugger there is no guarantee that the initialization will happen as per my request. For example the value 0×2 maybe stored in register r12 instead of r2 as i requested in my inline assembly ..

a.c(102): warning:  #1267-D: Implicit physical register R0 should be defined as a variable

Reading up on Keil documentation http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka11441.html it suggests using variable names. Something like this

{
  int val2;

__asm
    {
    MOV val2,0xFFFF0000
    MOV val,val,LSL #16
    }

Well this is not good enough for me as I want precise control over my register contents. How is it possible to do ? Any ideas ?

Thanks


Viewing all articles
Browse latest Browse all 23

Trending Articles