<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="lt">
	<id>https://www.pipedija.com/index.php?action=history&amp;feed=atom&amp;title=USCD_p-System</id>
	<title>USCD p-System - Versijų istorija</title>
	<link rel="self" type="application/atom+xml" href="https://www.pipedija.com/index.php?action=history&amp;feed=atom&amp;title=USCD_p-System"/>
	<link rel="alternate" type="text/html" href="https://www.pipedija.com/index.php?title=USCD_p-System&amp;action=history"/>
	<updated>2026-05-16T11:57:20Z</updated>
	<subtitle>Šio puslapio versijų istorija projekte</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://www.pipedija.com/index.php?title=USCD_p-System&amp;diff=89500&amp;oldid=prev</id>
		<title>John Smith: Naujas puslapis: '''USCD Pascal''' ir '''USCD p-System''' - tai toks Pascal kalbos variantas kartu su tos kalbos pagrindu sukurta virtualizacijos platforma ir ištisa OS, kadaise tapęs bene didžiausiu praktiniu proveržiu visokių programavimo kalbų kūrime. Padarytas buvo Kalifornijos San Diego universitete (USCD) nuo ko ir pavadinimas.  Reikalas toksai, kad po to, kai Niklaus Wirth sukūrė savo Pascal kalbą, labai greitai paa...</title>
		<link rel="alternate" type="text/html" href="https://www.pipedija.com/index.php?title=USCD_p-System&amp;diff=89500&amp;oldid=prev"/>
		<updated>2025-08-30T17:58:46Z</updated>

		<summary type="html">&lt;p&gt;Naujas puslapis: &amp;#039;&amp;#039;&amp;#039;USCD Pascal&amp;#039;&amp;#039;&amp;#039; ir &amp;#039;&amp;#039;&amp;#039;USCD p-System&amp;#039;&amp;#039;&amp;#039; - tai toks &lt;a href=&quot;/index.php/Pascal&quot; title=&quot;Pascal&quot;&gt;Pascal&lt;/a&gt; kalbos variantas kartu su tos kalbos pagrindu sukurta &lt;a href=&quot;/index.php/Virtualizacija&quot; title=&quot;Virtualizacija&quot;&gt;virtualizacijos&lt;/a&gt; platforma ir ištisa &lt;a href=&quot;/index.php/OS&quot; title=&quot;OS&quot;&gt;OS&lt;/a&gt;, kadaise tapęs bene didžiausiu praktiniu proveržiu visokių &lt;a href=&quot;/index.php/Programavimo_kalbos&quot; title=&quot;Programavimo kalbos&quot;&gt;programavimo kalbų&lt;/a&gt; kūrime. Padarytas buvo Kalifornijos San Diego universitete (USCD) nuo ko ir pavadinimas.  Reikalas toksai, kad po to, kai &lt;a href=&quot;/index.php?title=Niklaus_Wirth&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Niklaus Wirth (puslapis neegzistuoja)&quot;&gt;Niklaus Wirth&lt;/a&gt; sukūrė savo &lt;a href=&quot;/index.php/Pascal&quot; title=&quot;Pascal&quot;&gt;Pascal&lt;/a&gt; kalbą, labai greitai paa...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Naujas puslapis&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''USCD Pascal''' ir '''USCD p-System''' - tai toks [[Pascal]] kalbos variantas kartu su tos kalbos pagrindu sukurta [[virtualizacija|virtualizacijos]] platforma ir ištisa [[OS]], kadaise tapęs bene didžiausiu praktiniu proveržiu visokių [[programavimo kalbos|programavimo kalbų]] kūrime. Padarytas buvo Kalifornijos San Diego universitete (USCD) nuo ko ir pavadinimas.&lt;br /&gt;
&lt;br /&gt;
Reikalas toksai, kad po to, kai [[Niklaus Wirth]] sukūrė savo [[Pascal]] kalbą, labai greitai paaiškėjo, kad dėl didelio supaprastinimo ir kai kurių papildomų reikalavimų dėl išankstinio kintamųjų deklaravimo, labai lengva kurti gerus kompiliatorius šitai kalbai. Negana to, paaiškėjo, kad dar ir optimizuoti kodą čia irgi pakankamai lengva. Taigi, ta kalba užsiėmė daugelis programuotojų iš įvairių šalių, aukštyn kojomis apversdami pačią pirminę Wirth mintį, kad čia būsią primityvi mokomoji kalba - atvirkščiai, gavosi labai rimta universitetinių tyrimų kalba.&lt;br /&gt;
&lt;br /&gt;
Ir štai USCD atsirado programuotojų, kurie betyrinėdami tą Pascal generuojamą kodą, atrado, kad jame yra daug pasikartojimų, kuriuos optimizuojant, galų gale kodas gaunasi iš gana saikingų, bet daugiausiai tipiškų kodo sekų, ir nesvarbu, kokiai [[procesorių architektūra|procesorių architektūrai]] programuosi - visvien gausis savos pasikartojančios sekos. Tas sekas chebra daugiau mažiau identifikavo ir apie [[1974]] jų pagrindu pradėjo kurti naują [[procesorių architektūra|procesorių architektūrą]], kuri aparatiniame pavidale anuomet net neegzistavo - tai buvo [[1977]] išleista virtuali Pascal mašina. Tai mašinai sukompiliuotos Pascal programos būdavo daug efektyvesnės, o pati mašina buvo pakankamai paprasta, kad jos [[emuliatorius]] visai gerai galėdavo dirbti net ant visai silpnų procesorių.&lt;br /&gt;
&lt;br /&gt;
USCD p-System susidėjo iš virtualių mašinų valdymo sistemos, pačių virtualių mašinų, jų viduje dirbančios USCD Pascal OS, o taip pat iš Pascal kompiliatoriaus, generuojančio pseudokodą, skirtą būtent vykdymui tų virtualių mašinų viduje. Konkrečiai [[1980]] metais jau buvo sistemos skirtos įvairiems [[PDP-11] variantams, įskaitant [[LSI-11]], o taip pat [[Terak]] kompanijos darbo stotims, o taip pat ir įvairiems [[mikrokompiuteriai|mikrokompiuteriams]], turintiems [[Intel 8080]], [[Zilog Z80]], [[Motorola 6800]] ir [[MOS Technology 6502]] procesorius. Truputį vėliau pasirodė ir [[Western Digital]] kompanijos sukurti aparatiniai p-System procesoriai, ant kurių šita USCD p-System galėjo dirbti keleriopai greičiau. Tiesa, šitie procesoriai kažkodėl nepaėjo.&lt;br /&gt;
&lt;br /&gt;
Tuo metu atsirado ir kitų [[programavimo kalbos|programavimo kalbų]] realizacijos, kur [[kompiliatoriai]] duodavo kodą, skirtą USCD-Pascal virtualiai mašinai - pvz., [[Fortran]]. Iš tų kitų kalbų transliuotas kodas irgi visai neblogai dirbdavo.&lt;br /&gt;
&lt;br /&gt;
Beje, kai [[1981]] metais [[IBM]] išleido savo [[IBM PC]], tai USCD p-System buvo viena iš trijų tiems kompiuteriams siūlomų [[OS]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== USCD p-System ir Java ==&lt;br /&gt;
Vienas iš didžiausių nuopelnų, kuriuos padarė USCD - tai padėjo pagrindą [[Java]] kalbos atsiradimui. Kai [[Sun Microsystems]] kūrė Java kalbą, tai visiškai be abejonių, pačią idėją pamatė USDC p-System - kad galima sukurti universalų interpretatorių, kuris visai greitai dirbtų ant bet kokių aparatinių platformų, kokias tik galima įsivaizduoti.&lt;br /&gt;
&lt;br /&gt;
Tik tiek, kad Java kalbos kūrimas prasidėjo [[1991]], o pirma Java implementacija pasirodė [[1995]] metais - t.y., daug daug vėliau, o ir pati Java mašinos architektūra nuo pat pradžių buvo daug daug sudėtingesnė, orientuota į [[objektinis programavimas|objektinį programavimą]], numatant dar ir to kodo [[dekompiliacija|dekompiliaciją]].&lt;br /&gt;
&lt;br /&gt;
Skirtingai nuo USCD Pascal, Java kalba įprastais atvejais taip ir netapo kokia nors atskira [[OS]] (nors buvo bandymų). Įprastiniais atvejais Java lieka tik programavimo kalba, kuri sukasi ant kitų OS viršaus, pati savaime jokių OS funkcijų neatlikdama.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vartotojo interfeisas ==&lt;br /&gt;
Kadangi, skirtingai nuo [[Basic]] kalbos, Pascal nėra eilutinio vykdymo kalba, tai niekm net mintis nekilo daryti dar vieną interpretatorių, kuris veiktų jau kaip vartotojo [[komandų interpretatorius]]. Taigi, čia buvo padarytas interfeisas su meniu, bet anuo metu niekas dar nebuvo susipratęs turėti drop-down tipo meniu, po kuriuos galima vaikščioti rodyklėmis. Taigi, čia visa OS buvo valdoma tiesiog meniu paminėtais [[raidė|raidžių]] mygtukais. Bet jau tada komandoms pritrūkdavo raidžių. Pvz., koks nors failų kopijavimas buvo daromas, ne paspaudus raidę [[C]], o paspaudus raidę [[T]], nes raidė [[C]] jau buvo panaudota komandai &amp;quot;Change&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Tiesa, turint omeny, kad tokios sistemos ėjo dar apie [[1980]] ir dar anksčiau, tai jau toksai valdymas buvo visai neblogas, nes daug kur būdavo dar gerokai prasčiau, nes reikdavo mokytis komandų kaip kokioje [[CP/M]] ar [[UNIX]]. O čia visgi buvo kažkokie primityvūs, bet visgi meniu interfeisai.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pascal mašinos architektūra ==&lt;br /&gt;
Visa USCD Pascal mašina yra paremta [[stekas|steku]] ir turi 8 specializuotus registrus - t.y., akumuliatorius. Visas tų registrų sąrašas čia:&lt;br /&gt;
* SP - steko rodyklė&lt;br /&gt;
* IPC - interpretuojamos programos skaitliukas (skaičiuoja nuo segmento galo, atvirkščiai programos eigai)&lt;br /&gt;
* SEG - procedrūrų žodyno segmento adreso rodyklė&lt;br /&gt;
* JTAB - einamojo segmento rodyklė (rodo į atributų ir perėjimų lentelę)&lt;br /&gt;
* KP - steko rodyklė, rodo nuo segmento viršaus į steko galą&lt;br /&gt;
* MP - steko atžymos rodyklė (rodo į einamąjį įrašą), t.y., lokalsai&lt;br /&gt;
* NP - nauja rodyklė - rodo nuo segmento viršaus į steko galą&lt;br /&gt;
* BASE - rodo aktyvų steko įrašą iš paskutinės bazinio lygmens procedūros (0 lygmuo), t.y., globalsai&lt;br /&gt;
&lt;br /&gt;
Visi operacijų kodai čia buvo pavienio [[baitas|baito]] ilgio, nors neretai su ilgomis didelių argumentų sekomis. T.y., nors pats operacijų kiekis buvo nedidelis, visas jų naudojimas buvo kaip pas tipiškiausias [[CISC]] mašinas.&lt;br /&gt;
&lt;br /&gt;
Esminiu operacijų kodu, kuris sunkiau suprantamas, tačiau sudarantis pagrindą visam programavimui, čia buvo SLDC, kurio variantai sudarė išvis pusę iš visų kodų. Įprastas SLDC pakrauna tiesiog konstantą į steką. Bajeris čia buvo toksai, kad Pascal kalbą ir jos programas tyrinėję kompiuterastai atrado, kad dažniausiai pakraunamas į steką skaičius yra 0, ir kad tai išvis dažniausia iš visų Pascal generuoto kodo operacijų, todėl ėmė ir padarė atskirą komandą, kuri pakrautų į steką skaičių nulį. Opkodą jai padarė 00000000. Tada aptiko, kad antra pagal dažnį operacija yra pakrauti į steką 1, tai todėl jai opkodą padarė 00000001. Tada aptiko, kad trečia pagal dažnį operacija yra pakrauti į steką 2, tai padarė jai opkodą 00000010... Na, ir taip toliau, iki paskui jau dėl vientisos tvarkos padarė opkodus iki pat SDLC 127 su kodu 01111111. Likusi dalis opkodų jau buvo atiduoti kitoms komandoms.&lt;br /&gt;
&lt;br /&gt;
Tos kitos komandos didžiąja dalimi buvo tiesiog aritmetinės ir loginės operacijos, kurios imdavo 1 ar 2 paskutinius steko skaičius, iš jų kažką suskaičiuodavo ir įkišdavo atgal į steką. Visos komandos neturėdavo argumentų, todėl jei reikdavo įkišti argumentą, pradžioje būdavo daromas pakrovimas, o tada jau operacija.&lt;br /&gt;
&lt;br /&gt;
Galų gale nedidelis kiekis operacijų liko programos valdymui, kur buvo perėjimai. Skirtingai nuo įprastų komandų, perėjimai būdavo jau dviejų baitų ilgio, ir labai komplikuoti - jei argumente esantis skaičius pozityvus, tai tiesiog atitinkamu dydžiu padidinamas IPC skaitliukas, kas reiškia, kad JMP vyksta atbulai, o jei skaičius negatyvus, tada ieškoma jo adresų lentelėje pagal JTAB registrą. Ir dar atskirą rinkinį komandų sudarė šioks toks kiekis komandų, susijusių su tuo, kad Pascal turėjo gerą [[string]] tipo palaikymą - tai ten atsirado visokie serijiniai baitų kopijavimai ir panašiai.&lt;br /&gt;
&lt;br /&gt;
Žodžiu, architektūra buvo labai lengvai emuliuojama visai neblogu greičiu, tačiau pirmityvi ir šūdina, daug primityvesnė, negu dauguma to meto procesorių. Bene blogiausias dalykas buvo tai, kad net nepaisant emuliacijos, buvo prisirišta vos prie 8 bitų ilgio adresų, kas reiškė, kad tipiška Pascal mašina dirba su [[operacinė atmintis|operacinės atminties]] gabaliukais, kurių ilgis tėra 256 baitai.&lt;br /&gt;
&lt;br /&gt;
Kitą vertus, nepaprastai geras sistemos portabilumas čia buvo nenuneigiamas - tokia primityvi virtuali mašina galėdavo būti paleista net ant visiškai silpnų [[procesoriai|procesorių]], turinčių labai menką kiekį [[operacinė atmintis|operacinės atminties]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programavimo kalbos]]&lt;br /&gt;
[[Category:Programavimas]]&lt;br /&gt;
[[Category:Procesoriai]]&lt;/div&gt;</summary>
		<author><name>John Smith</name></author>
	</entry>
</feed>