Ghidra ir PDP11

Biški užsiciklinau su savo PDP kompiuteriu. Ir nutariau vieną programą kiek kitaip paleisti. O tam reikalui reikia daryti disasemblerį. Tačiau chaotiškam listinge (LST) labai sunku susigaudyti. Tačiau pasaulis išrado gana patogias priemones, kaip Ghidra. Tačiau viena bėda- nėra modulio PDP kompiuteriams. Kažkur githube guli kažkoks tvarinys kuris tipo palaiko PDP11, bet ten pati Hidra sulaužyta dalimis (ir nesikompiliuoja) ir kiek žiūrėjau, pačio PDP modulio (language) nėra. Vėl apgavystė. Todėl biški užpykau ir nutariau pasidaryti savo, “su šliundromis ir pokeriu“. O ten tokia “rogių kalba” (SLEIGH)…

Kol kas darau tik disasseblerį, nes iki kitoko nepriaugau. Ir dar kalnas klaidų nes:

  • Aš nesuprantu rogių kalbos
  • Aš nesuprantu PDP J11 procesoriaus kalbos
  • Aš nesuprantu PDP asemblerio
  • Aš neapkenčiu aštuntainės skaičiavimo sistemos
  • Aš nesuprantu ten kažkokio p-code, kur rašosi { } skliaustukuose

Šiaip procesorius makro CISC ir kogero pilnai Ortogonalus. T.y. visos komandos turi visus adresacijos būdus. Netgi nelogiškus, su visais galimais registrais- pvz operacijos su PC veikia kaip ir su bet kuriuo registru. Tačiau operacijos su PC turi savo sintaksę suprantama žmonėm. Palyginam:

A:	MOV (PC)+,R1
	.word 5
	HALT
B:	MOV #5,R1
	HALT

Atrodo kaip skirtingos programos (A) ir (B). Tačiau listingas rodo:

11 000024 012701                  	MOV (PC)+,R1
12 000026 000005                  	.word 5
13 000030 000000                  	HALT
14 000032 012701  000005          	MOV #5,R1
15 000036 000000                  	HALT

Binarinis kodas visiškai vienodas. Paprasčiausiai iškreiptas parašymas (PC+) programoje (A) sako, kad imk reikšmę sekančia už PC ir naudok, o poto PC padidink. O programoje (B) sako, imk tiesiog skaičių ir naudok. Bet tas skaičius kaip tik ir stovi prie komandos…

O dabar įsivaizduojam, kad komanda MOV turi du parametrus. Tie parametrai gali buti su 7 skirtingom adresacijom su 7 skirtingais registrais ar tiesioginiais skaičiais. Komanda MOV gali užimti ir vieną žodį (1Word=2bytes), ir du žodžius, ir tris žodžius (6 baitus!)…

Bet kad žinotumėt koks kaifas, kaip pradeda biški viskas veikti- smegenių mankšta. Čia jums ne shortus skrolinti youtubėje.

Ai, dar nepabaigtas produktas GitHube: Ghidra PDP11 processor language file/module (slaspec).

P.S. žinokit, ta hidra moka atkompiliuoti gcc programas. Bent jau mano kurybą su STM32 gana gerai atkompiliuoja.

2 replies on “Ghidra ir PDP11”

  1. Aišku bandžiau. Visiškai nesuprato reikalo- ką sugeneruodavo, niekas nesikompiliavo dėl sintaksės klaidų. Painiojo beveik viską ir galu gale rekomendavo paskaityti kažkokius “brain dump” puslapius 🙂

    Mano nuomone:
    1. AI tinkamas tik populiariuose reikaluose kur yra daugiau info ar gatavų receptų.
    2. Siaurose specializacijose- kaip PGM metalų chemija, PDP11 hardwarė ar SLEIGH kalba visiškai painiojasi ir kas baisiausia- meluoja. Taip vadinamos AI haliucionacijos.
    3. Kaip kalbos modelis (vertėjas) AI dirba gana gerai. Bet čia mano, kaip prasto kalbos žinovo nuomonė. Profesionalus verėjas sakė, kad labai prastai su AI vertimu. Literatūros versti nemoka.
    4. Gana gerai generuoja “generic” C kalbos nepriklausomas programas- kaip reikia kaip nors sukeisti baitų seką kokiam faile, tai sugeneruotas kodas 90% veikia iš karto.
    6. VB.NET, makefile irgi gerai žino- spėju dėl daugybės manualų ir visokiausių github.
    7. Gana gerai generavo SQL užklausas. Bet reikėjo užduoti vystyti palaipsniui. Iškarto sukurti to ką reikia nesugebėjo.

    Beja, AI pasiūlė man pasinaudoti kodu esančiu Githube (mano) per maždaug 1 valandos po jo užkrovimo.

Leave a Reply

Your email address will not be published. Required fields are marked *