This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Addi on the AVR micro


Jonathan Hunt <jhuntnz@users.sourceforge.net> writes:

> Hi,
> 
> The AVR has an instruction subi (subtract immediate) but no addi. So I use 
> subi reg, -(num) to add immediate. However this poses a problem when you try
> and do it with a memory address like this:
> 
>          .data
>          .org 0x00
>          __X_60:
>          mema:   ; Real address is 0x60, offset address is 0x00
> 
>          .text
>          subi    r16, -mema      ; Generates an error
>          subi    r16, 0x100 - mema ; Generates an error
>          subi    r16, !mema + 1  ; Uses the offset address of mema for the ! 
> which makes         
>                                  ; it incorrrect
>          ; The only work around I have found
>          subi    r16, lo8(__X_60_ + (0xff - 0x60) - mema)

Use "subi r16, lo8(-(mema))"

Denis.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]