MAE: Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
→Błędy w kompilatorze: świeża dostawa
 
(Nie pokazano 9 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
{{grafr|mae.png}}
{{grafr|mae.png}}
'''Macro-Assembler-Editor''' - środowisko programowania dla Atari XL/XE autorstwa [[John Harris|Johna Harrisa]] składające się z edytora, asemblera i debugera. Charakteryzuje się następującymi cechami:
... czyli Macro-Assembler-Editor - środowisko programowania dla Atari XL/XE autorstwa [[John Harris|Johna Harrisa]] składające się z edytora, asemblera i debugera.


*używa rozszerzonej pamięci do przechowywania części źródła i tablicy etykiet, dzięki czemu użytkownik ma około 40 kilobajtów bufora na źródło (zależy od aktualnej wartości MEMLO) plus prawie drugie tyle na tablicę symboli
== Charakterystyka ogólna ==
*obsługuje makrodefinicje, asemblację warunkową i etykiety lokalne
 
*argumenty makrodefinicji podstawiane są jako ciągi tekstowe, przez co mogą mieć składnię taką, jak argumenty rozkazów (ważne zwłaszcza w trybach pośrednich i indeksowanych)
*używa rozszerzonej pamięci do przechowywania kodu źródłowego, dzięki czemu użytkownik ma około 40 kilobajtów bufora na źródło plus prawie drugie tyle na tablicę symboli;
*obsługuje asemblację dla procesora [[65C816]] (oczywiście [[6502]] też)
*obsługuje makrodefinicje, asemblację warunkową i etykiety lokalne;
*ma dosyć wygodny i bogaty w funkcje edytor działający w całości za pośrednictwem systemowego urządzenia "E:"; edytor ten w ostatnich wersjach (powyżej 1.1) niestety nie jest pozbawiony błędów
*argumenty makrodefinicji podstawiane są jako ciągi tekstowe, przez co mogą mieć składnię taką, jak argumenty rozkazów (ważne zwłaszcza w trybach pośrednich i indeksowanych);
*obsługuje asemblację dla procesora [[65C816]] (oczywiście [[6502]] też);
{{grafr|mae64kol.png}}
{{grafr|mae64kol.png}}
*z poziomu debugera dostępne są etykiety zawarte w źródle
*z poziomu debugera dostępne są etykiety zawarte w kodzie źródłowym;
*rozpoznaje do 15tego znaku w etykiecie
*rozpoznaje do 15-go znaku w etykiecie;
*może działać także w trybie 64 (w trybie graficznym, na obrazku obok) i 80 kolumn (w trybie graficznym lub z użyciem [[XEP80]])
*ma dosyć wygodny i bogaty w funkcje edytor działający w całości za pośrednictwem systemowego urządzenia "E:"; edytor ten w ostatnich wersjach (powyżej 1.1) niestety nie jest pozbawiony błędów;
*edytor, jako że używa systemowego urządzenia "E:", może działać także w trybie 64 (w trybie graficznym, na obrazku obok) i 80 kolumn (w trybie graficznym albo przez [[XEP80]] lub [[VBXE]]).


Najnowsza wersja to 1.3. Więcej na temat MAE i pełną instrukcję obsługi można znaleźć tutaj: http://www.mixinc.net/atari/mae.htm
Najnowsza wersja to 1.3.


== Wady programu ==
== Wady programu ==
Linia 24: Linia 26:
* Użycie etykiety o wielkości ponad 15 znaków, zwłaszcza kiedy przypisuje się jej wartość przez operator '=', może powodować zawieszanie się podczas asemblacji. Błąd ten nie występuje w MAE 1.0.
* Użycie etykiety o wielkości ponad 15 znaków, zwłaszcza kiedy przypisuje się jej wartość przez operator '=', może powodować zawieszanie się podczas asemblacji. Błąd ten nie występuje w MAE 1.0.
* '''LDA ($1234),Y''' jest akceptowane bez zastrzeżeń, mimo że nie ma takiego trybu adresowania. Kod wynikowy jest jak po '''LDA ($34),Y'''.
* '''LDA ($1234),Y''' jest akceptowane bez zastrzeżeń, mimo że nie ma takiego trybu adresowania. Kod wynikowy jest jak po '''LDA ($34),Y'''.
* Na '''LDA #$<1234''' program powinien zglosić błąd składni, nie robi tego jednak. Kod wynikowy jest jak po '''LDA #$01'''.
* Na '''LDA #$<1234''' program powinien zgłosić błąd składni, nie robi tego jednak. Kod wynikowy jest jak po '''LDA #$01'''.
* Poniższy kod powoduje xłe działanie:
* Poniższy kod powoduje złe działanie:


  AA = BB
  AA = BB
Linia 33: Linia 35:
     LDA AA
     LDA AA


Rozkaz '''LDA AA''' traktowany jest jako '''LDA 32768'''. W rzeczywistości kompilator powinien zglosić błąd, gdyż etykieta '''AA''' pozostaje niezdefiniowana w trakcie drugiego przejścia asemblacji.
Rozkaz '''LDA AA''' traktowany jest jako '''LDA 32768'''. W rzeczywistości kompilator powinien zgłosić błąd, gdyż etykieta '''AA''' pozostaje niezdefiniowana w trakcie drugiego przejścia asemblacji.
* Kod obliczający wartości wyrażeń arytmetycznych miewa problemy, jeśli pierwszą wartością w wyrażeniu jest 0, np. 0*n (gdzie n>0) daje w wyniku zawsze 2752512 (= $2a0000). Ale n*0 daje prawidłowy wynik.
* Podobne kłopoty występują przy obliczaniu wartości liczb ujemnych: -255 daje prawidłowe $FFFF01, lecz już -256 to $FFFE00 zamiast $FFFF00. Z kolei $FFFF00 jest wg programu równe tyle co -0. Jednak wyrażenia typu 0-256 i 0-0 są obliczane poprawnie (odpowiednio $FFFF00 i 0).
 
== Zobacz też ==
* [http://www.mixinc.net/atari/mae.htm Instrukcja obsługi] (po angielsku)


== Download ==
== Download ==

Aktualna wersja z 22 sty 2017, 16:59

... czyli Macro-Assembler-Editor - środowisko programowania dla Atari XL/XE autorstwa Johna Harrisa składające się z edytora, asemblera i debugera.

Charakterystyka ogólna

  • używa rozszerzonej pamięci do przechowywania kodu źródłowego, dzięki czemu użytkownik ma około 40 kilobajtów bufora na źródło plus prawie drugie tyle na tablicę symboli;
  • obsługuje makrodefinicje, asemblację warunkową i etykiety lokalne;
  • argumenty makrodefinicji podstawiane są jako ciągi tekstowe, przez co mogą mieć składnię taką, jak argumenty rozkazów (ważne zwłaszcza w trybach pośrednich i indeksowanych);
  • obsługuje asemblację dla procesora 65C816 (oczywiście 6502 też);

  • z poziomu debugera dostępne są etykiety zawarte w kodzie źródłowym;
  • rozpoznaje do 15-go znaku w etykiecie;
  • ma dosyć wygodny i bogaty w funkcje edytor działający w całości za pośrednictwem systemowego urządzenia "E:"; edytor ten w ostatnich wersjach (powyżej 1.1) niestety nie jest pozbawiony błędów;
  • edytor, jako że używa systemowego urządzenia "E:", może działać także w trybie 64 (w trybie graficznym, na obrazku obok) i 80 kolumn (w trybie graficznym albo przez XEP80 lub VBXE).

Najnowsza wersja to 1.3.

Wady programu

Jedynymi wadami MAE są błędy w edytorze i kompilatorze.

Błędy w edytorze

  • Wyszukiwanie (Ctrl/F) nie wyszukuje wszystkich miejsc wystąpienia tekstu zgodnego z podanym wzorcem. Błąd ten wystepuje w MAE 1.2 oraz 1.3, nie ma go natomiast wersja 1.1 i wcześniejsze.

Błędy w kompilatorze

  • Użycie etykiety o wielkości ponad 15 znaków, zwłaszcza kiedy przypisuje się jej wartość przez operator '=', może powodować zawieszanie się podczas asemblacji. Błąd ten nie występuje w MAE 1.0.
  • LDA ($1234),Y jest akceptowane bez zastrzeżeń, mimo że nie ma takiego trybu adresowania. Kod wynikowy jest jak po LDA ($34),Y.
  • Na LDA #$<1234 program powinien zgłosić błąd składni, nie robi tego jednak. Kod wynikowy jest jak po LDA #$01.
  • Poniższy kod powoduje złe działanie:
AA = BB
BB = CC
CC = 1
   .OR $0600
   LDA AA

Rozkaz LDA AA traktowany jest jako LDA 32768. W rzeczywistości kompilator powinien zgłosić błąd, gdyż etykieta AA pozostaje niezdefiniowana w trakcie drugiego przejścia asemblacji.

  • Kod obliczający wartości wyrażeń arytmetycznych miewa problemy, jeśli pierwszą wartością w wyrażeniu jest 0, np. 0*n (gdzie n>0) daje w wyniku zawsze 2752512 (= $2a0000). Ale n*0 daje prawidłowy wynik.
  • Podobne kłopoty występują przy obliczaniu wartości liczb ujemnych: -255 daje prawidłowe $FFFF01, lecz już -256 to $FFFE00 zamiast $FFFF00. Z kolei $FFFF00 jest wg programu równe tyle co -0. Jednak wyrażenia typu 0-256 i 0-0 są obliczane poprawnie (odpowiednio $FFFF00 i 0).

Zobacz też

Download