Jestem nowicjuszem w zakresie pisania asemblera, a nawet po przeczytaniu dużej ilości materiału wciąż mam problemy z zawijaniem głowy wokół kilku koncepcji.Pisanie asemblera Z80 - testowanie ASM i budowanie drzewa parsowania za pomocą kompozycji?
Co to jest proces dzielenia pliku źródłowego na tokeny? Wierzę, że ten proces nazywa się lexing, a ja przeszukałem wysokie i niskie w poszukiwaniu prawdziwych przykładów kodu, które mają sens, ale nie mogę znaleźć rzeczy tak prostych przykładów kodu bardzo pożądanych;)
Podczas analizowania, czy Czy kiedykolwiek trzeba przekazywać informacje w górę lub w dół drzewa? Pytam się w następujący sposób, podejmują:
LD BC, nn
To musi być przekształcony następującym parsowania drzewa raz tokenized (???)
___ LD ___
| |
BC nn
teraz , kiedy drzewo jest przemieszczane, musi wygenerować następujący kod maszynowy:
01 n n
Jeśli instrukcja była:
LD DE,nn
Następnie wyjście musiałyby być:
11 n n
ten sposób, że nasuwa się pytanie, czy LD powrotną węzeł coś innego na podstawie argumentu, czy jest to coś argumentu, że wraca? Jak to osiągnąć? Bardziej proste przykłady kodu będą doskonałe, jeśli pozwoli na to czas.
Jestem najbardziej zainteresowany poznawaniem niektórych surowych procesów w tym miejscu, zamiast przyglądać się zaawansowanym istniejącym narzędziom, więc proszę o tym pamiętać przed wysłaniem mnie do Yacc lub Flex.
Miało to być ilustracją drzew, które musi zbudować, zamiast dopasowywania konkretnego modelu Z80. Kodowałem DUŻO asemblera Z80 w latach 80 .; Mogę wiedzieć o tym więcej, niż myślisz. –
Następnie pokaż swoją wiedzę. Napisałeś już asembler Z80? Nie, ale napisałem asemblery 8080 i 6809, a twoja rada wydaje mi się martwa. –
Twoje wrażenia są prawdopodobnie inne niż moje. Zakodowałem asemblery dla Collinsa 8311 (około 1968), 12- i 16-bitowych maszyn, które nie zrobiły tego komercyjnie, więc nie słyszałeś o nich, asemblerze mikrokodu i 6809 asemblera, który widziałeś w drugiej wiadomości. Zbudowałem także wiele frontów kompilatora (sprawdź moje informacje o biologii i stronę internetową). Moje wczesne asemblery zostały zbudowane w sposób ad hoc i zadziałały. Rzeczy od lat 80-tych, które stworzyłem przy użyciu lexerów i analizatorów składni, ponieważ znacznie łatwiej jest je określić, zachować, rozszerzyć, nazwać. –