3012
edycji
(Nie pokazano 4 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
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 (ale 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]]). | ||
Repozytorium źródeł EMAS: https://github.com/jakubfi/emas | |||
= Wywołanie = | = Wywołanie = | ||
Linia 54: | Linia 56: | ||
?GVZ | ?GVZ | ||
Wewnętrznie EMAS operuje na 32-bit liczbach ze znakiem. Kiedy ostateczna wartość będąca wynikiem operacji ma zostać umieszczona w obiekcie wynikowym, jej zakres jest sprawdzany i użytkownik jest informowany o ewentualnym przekroczeniu | Wewnętrznie EMAS operuje na 32-bit liczbach ze znakiem. Kiedy ostateczna wartość będąca wynikiem operacji ma zostać umieszczona w obiekcie wynikowym, jej zakres jest sprawdzany i użytkownik jest informowany o ewentualnym jego przekroczeniu. Wyjątkiem jest argument dyrektywy '''.dword''', który jest 32-bit liczbą w kodzie U2. | ||
=== Znaki === | === Znaki === | ||
Linia 88: | Linia 90: | ||
=== Łańcuchy === | === Łańcuchy === | ||
Łańcuchy znaków są ciągami | Łańcuchy znaków są ciągami znaków ujętymi w podwójne cudzysłowy. Poszczególne znaki można zapisywać dosłownie, lub (w przypadku dyrektyw '''.ascii''' i '''.asciiz''') używając jednej z sekwencji unikowych: | ||
* \0'''yyy''' - gdzie '''yyy''' jest ósemkowym kodem znaku | * \0'''yyy''' - gdzie '''yyy''' jest ósemkowym kodem znaku | ||
Linia 150: | Linia 152: | ||
.global snprintf | .global snprintf | ||
.global strdup | .global strdup | ||
printf: | printf: | ||
... | ... | ||
Linia 156: | Linia 158: | ||
... | ... | ||
strdup: | strdup: | ||
procedura: | procedura: | ||
.global procedura | .global procedura | ||
Linia 276: | Linia 278: | ||
'''Składnia:''' .r40 ''łańcuch_r40'' | '''Składnia:''' .r40 ''łańcuch_r40'' | ||
Zapisuje w programie wynikowym podany łańcuch, kodując go po trzy znaki R40 na słowo maszynowe. | Zapisuje w programie wynikowym podany łańcuch, kodując go po trzy znaki R40 na słowo maszynowe. '''UWAGA:''' W kodzie R40 można użyuwać jedynie liter, liczb i znaków specjalnych: _, #, %. | ||
=== .res === | === .res === |