On 09.08.14 18:18, Erik Christiansen wrote:
> 
>    ldiw  Z,buf

What, that's not an avr mnemonic? It is if you have this in a header
file:

; Data Pointer (or any word value) initialisation of a register pair.
; Usage: ldiw  Y,some_data
;        ld    r16,Y          ; OR lpm r16,Y if some_data is in flash.
                              ; Avoids need for manual endianness perfection.
   .macro ldiw reg,addr
   ldi   \reg,lo8(\addr)
   ldi   (\reg + 1),hi8(\addr)
   .endm

And for completeness:

; Program Pointer (word address) initialisation of a register pair.
; Usage: pptr  Z,program_address
;        icall

   .macro pptr reg, addr
   ldi   \reg, pm_lo8(\addr)           ; Word addressed program memory.
   ldi   (\reg + 1), pm_hi8(\addr)
   .endm

There's no reason why we should do word operations by hand, especially
with that lo8/pm_lo8 guff to increase the likelihood of human error.

Erik

-- 
Programs must be written for people to read, and only incidentally for
machines to execute.                            - Abelson and Sussman


_______________________________________________
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
https://lists.nongnu.org/mailman/listinfo/avr-gcc-list

Reply via email to