[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] in-line assembler

From: Wouter van Gulik
Subject: Re: [avr-gcc-list] in-line assembler
Date: Tue, 11 Aug 2009 12:51:40 +0200
User-agent: Thunderbird (Windows/20090605)


I don't know what you intended to do but I guess this is more like it (read the value and write it back):
I personally prefer the %[] construction.

uint8_t get_ram_byte(uint16_t ram_address)
    uint8_t    byte;

    asm  ("ld  %[reg] , %[adr]"  "\n\t"
          "sts %[adr] , %[reg]"  "\n\t"
    : [reg] "=&r" (byte)
    : [adr] "e"   (ram_address));
    return byte;

You're construction of "sts %0, __tmp_reg__" is not correct. GCC is trying to feed sts r24 as first argument, which is invalid. You are feeding him the uninitialized variable 'byte'. Which is also allocate to R24.



Robert von Knobloch schreef:
I've been trying to decipher the intricacies of in-line assembler (using
the Inline Assembler Cookbook as my guide).

I have a very simple application that I cannot seem to realise.

I want a C function that will return the contents of the RAM address
that I give it as argument.

My assembler-based function looks like this:

file is hex.c
uint8_t get_ram_byte(uint16_t ram_address)
    uint8_t    byte;

    asm  ("ld __tmp_reg__, %a1"    "\n\t"
    "sts %0, __tmp_reg__"    "\n\t"
    : "=&r" (byte) : "e" (ram_address));
    return byte;

and is called from

            rambyte = get_ram_byte(i );
            u_hex8out(rambyte);         // Print byte as 8-bit hex.

Trying to compile this results in "~/Monitor/hex.c:5: undefined
reference to `r24' "
If I comment out the line "sts %0, __tmp_reg__"    "\n\t" then it
compiles and I see that the parameter is passed in R24,25, copied to
R30,31[Z] and the value is read into R0 [__tmp_reg__].
I cannot see what is wrong with the sts command or why R24 is mentioned.

Can anybody help me ?

Many thanks,

Robert von Knobloch.

AVR-GCC-list mailing list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]