LINUX.ORG.RU

Директива .org работает не так, как ожидалось

 ,


0

1

а именно: удваивает адрес, например:

.device ATmega8
.org 0x00
nop

.org 0x100
nop
Выхлоп avra:
Pass 1...
Pass 2...
done

Used memory blocks:
   Code      :  Start = 0x0000, End = 0x0000, Length = 0x0001
   Code      :  Start = 0x0100, End = 0x0100, Length = 0x0001

Assembly complete with no errors.
Segment usage:
   Code      :         2 words (4 bytes)
   Data      :         0 bytes
   EEPROM    :         0 bytes
А в HEX-файле вместо 0х100 получаем 0х200:
:020000020000FC
:020000000000FE
:020200000000FC
:00000001FF
ЧЯДНТ?

★★★

Последнее исправление: Old_Hamster (всего исправлений: 1)

само по-себе это не страшно, но если сделать

.org 0x100
test: 
  .db 0x55

ldi ZL, Low(test)
ldi ZH, High(test)
то в ZH:ZL будет 0х100, при том, что константа лежит по 0х200 :(

Old_Hamster ★★★
() автор топика
Ответ на: комментарий от beastie

Собрал

.org 0x00
nop

.org 0x100
test:
  .byte 0x55
с помощью avr-gcc: байт там, где и ожидалось - по 0х100

Old_Hamster ★★★
() автор топика

Выравнивание по умолчанию?

AF ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.