Hello, 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 AVR-GCC-list@nongnu.org http://lists.nongnu.org/mailman/listinfo/avr-gcc-list