Re: Asembler



On Fri, 15 Nov 1996, Lukasz Kapiec wrote:

> CZe All
> Dlaczego gdy laduje FileInfoBlock za pomoca Examine pod dany adres
> to np: fib_size jest pod adrssem 122 zamiast 124 ???, dlaczego nazwa
> zaczyna sie od 6 zamiast od 8 bajtu ????, czy to jest zwiazane align'acja
> ??,
Dokladnie tak. Adres struktury FileInfoBlok musi sie zaczyanc od adresu
podzielnego przez cztry a wynika to z uzywania wskaznikow BPTR (obciete
dwa najmlodsze bity; taki adres zawsze trzeba lsl.l #2,d0 albo add.l d0,d0
i jeszcze raz add.l d0,d0 (szybsze). Normalnie jednbak jesli uzywasz
allocmem() z execa, adres zwracany przez ta procedure jest podzielny przez
4, a co wiecej, pamiec zaalokowana ma dlugosc conajmniej 8 bajtow (jesli
zaalokujesz np 3 bajty, to system i t ak przydzieli ci 8).
Jesli nie chcesz takiej struktury alokowac, a miec ja jako strukture
statyczna BSS czy DATA, to przed sama etykieta tej struktury wpisz

        cnop    0,4

Cromax/Alchemy