EMAS: Różnice pomiędzy wersjami
Przejdź do nawigacji
Przejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
EMAS jest assemblerem skrośnym dla MERRY 400, używającym, w odróżnieniu od [[ASSEM]], składni bliższej współczesnym assemblerom, oraz mnemoników MERY 400 (bez przyrostków zależnych od lokalizacji argumentu, patrz: [[Lista rozkazów]]). | EMAS jest assemblerem skrośnym dla MERRY 400, używającym, w odróżnieniu od [[ASSEM]], składni bliższej współczesnym assemblerom, oraz mnemoników MERY 400 (ale bez przyrostków zależnych od lokalizacji argumentu, patrz: [[Lista rozkazów]]). | ||
= Wywołanie = | = Wywołanie = | ||
Linia 20: | Linia 20: | ||
** '''-v''' - wyświetl informacje o wersji i zakończ działanie | ** '''-v''' - wyświetl informacje o wersji i zakończ działanie | ||
** '''-h''' - wyświetl pomoc i zakończ działanie | ** '''-h''' - wyświetl pomoc i zakończ działanie | ||
= Opis języka = | |||
== Komentarze == | |||
EMAS pozwala na użycie komentarzy jedo- i wieloliniowych: | |||
; samotny komentarz jednoliniowy | |||
lw r1, 2 ; komentarz jednoliniowy na końcu dowolnej linii | |||
/* komentarz | |||
wieloniniowy | |||
*/ | |||
lw r1, 2 /* komentarz wieloliniowy, choć tak naprawdę w jedej linii */ | |||
== Stałe == | |||
Stałymi w programie mogą być liczby całkowite, liczby zmiennoprzecinkowe oraz łańcuchy znaków. | |||
=== Liczby całkowite === | |||
Liczby całkowite można zapisywać w systemie binarnym, ósemkowym, dziesiętnym lub szesnastkowym, np: | |||
0b1101110000 | |||
0177 | |||
-931 | |||
0xffa9 | |||
Istnieje jeszcze jeden sposób zapisu stałych całkowitoliczbowych, wynikający z ułożenia [[Rejestry i wskaźniki|wskaźników w rejestrze R0]], gdzie poszczególnym bitom przypisany jest jednoliterowy symbol ze zbioru (Z, M, V, C, L, E, G, Y, X). Można dzięki niemu zapisać liczbę szesnastobitową z ustawionymi na 1 bitami, które odpowiadają danym wskaźnikom. Przykłady takiego zapisu stałych: | |||
?ZM | |||
?GVZ | |||
EMAS przechowuje liczby całkowite jako 32-bit liczby w kodzie U2 i na takich liczbach operuje. W trakcie umieszczania liczb w obiekcie wynikowym są one obcinane do 16 najmłodszych bitów. Wyjątkiem jest argument dyrektywy '''.dword''', który jest 32-bit liczbą w kodzie U2. | |||
=== Liczby zmiennoprzecinkowe === | |||
Akceptowane są następujące sposoby zapisu liczb zmiennoprzecinkowych: | |||
9 | |||
1.2 | |||
0.003 | |||
-9.125e-2 | |||
1e4 | |||
Jedynym miejscem w programie, w którym może wystąpić liczba zmiennoprzecinkowa, jest argument dyrektywy '''.float'''. | |||
=== Łańcuchy === | |||
Łańcuchy znaków są ciągami 8-bit znaków ujętymi w podwójne cudzysłowy. Poszczególne znaki można zapisywać dosłownie, lub używając jednej z sekwencji unikowych: | |||
* \0'''yyy''' - gdzie '''yyy''' jest ósemkowym kodem znaku | |||
* \x'''yy''' - gdzie '''yy''' jest szesnastkowym kodem znaku | |||
* \'''y''' - umożliwia zakodowanie jednego znaków specjalnych (wartości '''y''' inne niż poniżej są niepoprwane): | |||
** \n - nowa linia | |||
** \t - tabulacja pozioma | |||
** \r - powrót karetki | |||
** \f - wysuw strony | |||
** \\ - dosłowny ukośnik w tył | |||
** \" - dosłowny podwójny cudzysłów | |||
Przykłady poprawnych łańcuchów znaków: | |||
"MERA-400\n" | |||
"\xab\xac\xad" | |||
"\"napis\"" | |||
Umieszczając łańcuchy w programie wynikowym EMAS lokuje każde dwa kolejne sąsiadujące ze sobą znaki kolejno w starszej i młodszej połówce 16-bit słowa. Jeśli łańcuch zawiera nieparzystą liczbę znaków, to w ostatnim słowie na pozycji młodszego bajtu znajdzie się wartość 0. | |||
== Symbole == | |||
== Zmienne == | |||
== Wyrażenia == | |||
== Dyrektywy assemblera == | |||
== Rozkazy == |