[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] rjmp confusion
From: |
Richard Urwin |
Subject: |
Re: [avr-gcc-list] rjmp confusion |
Date: |
Wed, 11 Feb 2004 20:17:30 +0000 |
User-agent: |
KMail/1.5.3 |
On Wednesday 11 Feb 2004 7:19 pm, Simon Han wrote:
> Hello,
> Based on AVR instruction set documentation, rjmp is defined to be
> "relative jump to an address within PC - 2K + 1 and PC + 2K (words)".
> Then it says that "for AVR microcontrollers with Program memory not
> exceeding 4K words this instruction can address the entire memory
> from EVERY address location". I capitalize the word I am confused
> about. How can a rjmp instruction located at flash memory 3.5K jump
> back to flash memory location at 0.5K? This will require rjmp (-3K).
> Does avr-gcc generate code at some middle point (say flash memory
> location at 2K) to solve this problem?
No. The program memory is self-contained, so jumps off the end of the
address space will wrap around to the other end.
0xfff + 1 = 0x000
3.5K + 1K = 0.5K QED
in fact:
3.5K = 0x0e00
1K = 0x0400
0.5K = 0x0200
0x0200 - 0x0e00 = 0xf400
0xf400 has obviously overflowed, but to twelve bits it is 0x400, ie +1K.
--
Richard Urwin