This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Addi on the AVR micro
- To: jhuntnz at users dot sourceforge dot net
- Subject: Re: Addi on the AVR micro
- From: Denis Chertykov <denisc at overta dot ru>
- Date: 12 May 2001 11:48:28 +0400
- Cc: binutils at sources dot redhat dot com
- References: <01051016531400.01268@bobbafett>
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.