maj 16
Ta strona zawiera moją pracę poświęconą opracowaniu symulatora maszyny Turinga przeznaczonego dla maszyny RAM. W pracy ukazuję najpierw algorytm zdolny symulowac maszynę Turinga w języku C, następnie algorytm ten przenoszę na maszynę wyposażoną w rozkazy adresowania pośredniego, by w końcu zaimplementować go na „zwykłej” (tj. wyposażonej jedynie w adresowanie bezpośrednie) maszynie RAM.
Praca i związane z nią pliki:
- symulator.odt – wyżej wspomniana praca,
- symulator.pdf – ta sama praca w formacie PDF,
- simulator.c – prosty symulator napisany w C, wraz z przykładowym programem dla maszyny Turinga (dodawanie jedynki do liczby zapisanej binarnie). Ten przykładowy program dla maszyny Turinga pojawia się także dalej – w implementacjach symulatora dla maszyny RAM z adresowaniem pośrednim i bezpośrednim.
Implementacja z adresowaniem pośrednim:
- listing.txt – symulator maszyny Turinga dla maszyny RAM z adresowaniem pośrednim. Można go przetestować na JRAMachine;
- memory_dump – przykładowy program dla powyższej implementacji. W komórkach 90 i dalej znajduje się liczba zapisana binarnie (0 jest zapisane jako 1, 1 jako 2, zaś blanki jako 0). Po uruchomieniu program dodaje do tej liczby 1 i kończy działanie.
Implementacja z adresowaniem bezpośrednim:
- listing_template.txt – schemat programu symulatora maszyny Turinga dla „zwykłej” maszyny RAM,
- precompiler.rb – prekompilator, którym można przetworzyć powyższy schemat na działający program,
- direct.txt – wygenerowany powyższym skryptem symulator maszyny Turinga:
$ ./precompiler.rb PROGRAM=25 MAX_PROGRAM_END=95 TAPE=95 \
TAPE_END=110 listing_template.txt > direct.txt - memory_dump – dane testowe dla direct.txt. Działanie takie jak powyżej, liczba na której odbywają się operacje jest pod adresem 95.
Linki:
- JRAMachine – symulator maszyny RAM, obsługujący adresowanie pośrednie napisany w Javie,
- Turing – symulator maszyny Turinga napisany w Ruby, z interfejsem dostępnym przez WWW.
