<?xml version="1.0" encoding="utf-8"?>
<Gradivo ID="187356" NadgradivoID="0" NRID="29237458" OceID="0" DomainUrl="https://repozitorij.uni-lj.si/" IzpisPolniUrl="https://repozitorij.uni-lj.si/IzpisGradiva.php?lang=slv&amp;id=187356" StOgledov="86" StPrenosov="16" StOcen="0" VsotaOcen="0" DatumIzvoza="2026-09-26 21:00:37" OcenaSkupna="0" StPodgradiv="0" StudijskiProgramEvsID="1000468" JeIndeksirano="0" JeVecAvtorjev="0" DovoliZahtevkeZaDostop="0">
  <PID Url="http://hdl.handle.net/20.500.12556/RUL-187356">20.500.12556/RUL-187356</PID>
  <Naslov>Izdelava JIT prevajalnika za navidezni stroj Pins25</Naslov>
  <Podnaslov></Podnaslov>
  <TujJezik_Naslov>Implementation of a JIT Compiler for the Pins25 Virtual Machine</TujJezik_Naslov>
  <TujJezik_Podnaslov></TujJezik_Podnaslov>
  <Opis>Tolmačenje vmesne kode omogoča izvajanje istega programa na različnih računalniških sistemih, vendar vsak izvedeni ukaz spremlja strošek tolmaške zanke. V diplomskem delu smo zato za skladovni navidezni stroj Pins25 izdelali preprost sprotni prevajalnik (angl. just-in-time compiler). Obstoječi prevajalnik in navidezni stroj Pins25 sta napisana v Javi. Prevajalnik smo razširili tako, da vmesno kodo in podatke zapiše v binarno objektno datoteko, za njeno izvajanje pa smo v jeziku C implementirali nalagalnik, tolmač ter infrastrukturo za profiliranje in izvajanje strojne kode. Izvajalno okolje pri vsakem klicu funkcije beleži število klicev, med izvajanjem funkcije pa tudi število vzvratnih skokov. Ko eden od števcev doseže izbrani prag, izvajalno okolje funkcijo analizira in njene ukaze neposredno prevede v strojne ukaze x86-64. Tolmačene in prevedene funkcije uporabljajo isti pomnilnik, sklad in obliko klicnih zapisov, zato se lahko med seboj kličejo tudi rekurzivno. Prototip podpira celoten nabor ukazov Pins25. Ovrednotenje pokaže, da sprotno prevajanje koristi predvsem daljšim programom, pri kratkih pa stroški profiliranja in prevajanja večinoma izničijo pridobljeno pohitritev. Na učinkovitost poleg trajanja vplivajo tudi vzorec klicev, krmilni tok in prehodi v izvajalno okolje.</Opis>
  <TujJezik_Opis>Interpreting intermediate code allows the same program to run on different computer systems, but every executed instruction incurs the overhead of the interpreter loop. In this thesis, we developed a simple just-in-time compiler for the stack-based Pins25 virtual machine. The existing Pins25 compiler and virtual machine are implemented in Java. We extended the compiler to store intermediate code and data in a binary object file, and implemented a loader, interpreter, profiling infrastructure, and runtime support for generated machine code in C. On every function call, the runtime records the call count and, during function execution, the number of backward jumps. When either counter reaches a selected threshold, the runtime analyses the function and directly translates its instructions into x86-64 machine code. Interpreted and compiled functions share the same memory, stack, and call-frame representation, allowing arbitrary and recursive calls between both execution modes. The prototype supports the complete Pins25 instruction set. The evaluation shows that just-in-time compilation primarily benefits longer-running programs, whereas for short programs the profiling and compilation overhead largely offsets the resulting speedup. Performance also depends on call patterns, control flow, and transitions into the runtime.</TujJezik_Opis>
  <KljucneBesede>
    <Beseda>navidezni stroj</Beseda>
    <Beseda>tolmač</Beseda>
    <Beseda>sprotno prevajanje</Beseda>
    <Beseda>dinamično profiliranje</Beseda>
    <Beseda>x86-64</Beseda>
  </KljucneBesede>
  <TujJezik_KljucneBesede>
    <Beseda>virtual machine</Beseda>
    <Beseda>interpreter</Beseda>
    <Beseda>just-in-time compilation</Beseda>
    <Beseda>JIT</Beseda>
    <Beseda>x86-64</Beseda>
  </TujJezik_KljucneBesede>
  <Potrjeno>true</Potrjeno>
  <JeZaklenjeno>false</JeZaklenjeno>
  <JeRecenzirano>false</JeRecenzirano>
  <Zaloznik></Zaloznik>
  <Izvor></Izvor>
  <Jezik ID="1060" ISO639-3="slv">Slovenski jezik</Jezik>
  <TujJezik ID="1033" ISO639-3="eng">Angleški jezik</TujJezik>
  <Povezave></Povezave>
  <Pokrivanje></Pokrivanje>
  <CasovnoPokritje></CasovnoPokritje>
  <AvtorskePravice></AvtorskePravice>
  <VrstaGradiva ID="mb11" DRIVER="info:eu-repo/semantics/bachelorThesis">Diplomsko delo/naloga</VrstaGradiva>
  <DatumVstavljanja>2026-09-10 11:30:03</DatumVstavljanja>
  <DatumObjave>2026-09-10 11:30:13</DatumObjave>
  <DatumSpremembe>2026-09-12 03:29:20</DatumSpremembe>
  <DatumTrajnegaHranjenja>0000-00-00 00:00:00</DatumTrajnegaHranjenja>
  <LetoIzida>2026</LetoIzida>
  <LetoIzidaDo>0</LetoIzidaDo>
  <KrajIzida></KrajIzida>
  <LetoIzvedbe>0</LetoIzvedbe>
  <KrajIzvedbe></KrajIzvedbe>
  <Opomba></Opomba>
  <StStrani></StStrani>
  <StevilcenjeNivo1></StevilcenjeNivo1>
  <StevilcenjeNivo2></StevilcenjeNivo2>
  <Kronologija></Kronologija>
  <Patent_Stevilka></Patent_Stevilka>
  <Patent_DatumVeljavnosti>0000-00-00</Patent_DatumVeljavnosti>
  <VerzijaDokumenta>NiDoloceno</VerzijaDokumenta>
  <StatusObjaveDrugje>NiDoloceno</StatusObjaveDrugje>
  <VrstaStroskaObjave>NiDoloceno</VrstaStroskaObjave>
  <DatumPoslanoVRecenzijo>0000-00-00</DatumPoslanoVRecenzijo>
  <DatumSprejetjaClanka>0000-00-00</DatumSprejetjaClanka>
  <DatumObjaveClanka>0000-00-00</DatumObjaveClanka>
  <EmbargoDo>1970-01-01</EmbargoDo>
  <VrstaEmbarga ID="1" Naziv="Takojšnja javna objava" OpenAIREDostop="openAccess"></VrstaEmbarga>
  <Osebe>
    <Oseba ID="165576" Ime="Denis" Priimek="Belič" AltIme="" VlogaID="70" VlogaNaziv="Avtor" ConorID="" Afiliacija="" ArrsID="0" ORCID=""></Oseba>
    <Oseba ID="23518" Ime="Boštjan" Priimek="Slivnik" AltIme="" VlogaID="991" VlogaNaziv="Mentor" ConorID="3746915" Afiliacija="" ArrsID="12766" ORCID=""></Oseba>
  </Osebe>
  <Identifikatorji>
    <Identifikator ID="16" Sifra="VisID" Naziv="VisID" URL="">38778</Identifikator>
  </Identifikatorji>
  <Datoteke>
    <Datoteka ID="246971" DatotekaNRID="14784438" NamenDatotekeID="2" NamenDatoteke="Predstavitvena datoteka" FormatDatotekeID="2" FormatDatoteke=".pdf" MIME="application/pdf" IkonaFormata="pdf.png" IkonaFormataPolniUrl="https://repozitorij.uni-lj.si/teme/rulDev/img/fileTypes/pdf.png" VelikostDatoteke="417507" VelikostDatotekeKratko="407,72 KB" DatumVstavljanja="2026-09-10 11:30:19" JeZbrisana="false" JeJavnoVidna="true" JeIndeksirana="false" JeVidno="true" VidnoOd="01.01.1970" Zaporedje="0">
      <Naziv>Belic_Denis_-_Izdelava_JIT_prevajalnika_za_navidezni_stroj_Pins25.pdf</Naziv>
      <OrgNaziv>Belic_Denis_-_Izdelava_JIT_prevajalnika_za_navidezni_stroj_Pins25.pdf</OrgNaziv>
      <URL></URL>
      <Opis></Opis>
      <OpisTujJezik></OpisTujJezik>
      <UrlObdelave></UrlObdelave>
      <FrekvencaAzuriranjaID>1</FrekvencaAzuriranjaID>
      <Verzija></Verzija>
      <MD5>11CCA456500767A7EBEAD788D415B188</MD5>
      <SHA256>1786e6a9af6ce19268785292b4543e00bd062ab07eee36cd4d1c1432bfbffbdd</SHA256>
      <UUID>36637eda-acfa-11f1-8bc5-0050569b8976</UUID>
      <PID></PID>
      <PrenosPolniUrl>https://repozitorij.uni-lj.si/Dokument.php?lang=slv&amp;id=246971</PrenosPolniUrl>
      <Vsebine>
      </Vsebine>
    </Datoteka>
  </Datoteke>
  <Organizacije>
    <Organizacija OrganizacijaID="25" Kratica="FRI" ZavodEvsID="0000066" Logo="" LogoPolniUrl="https://repozitorij.uni-lj.si/teme/rulDev/img/logo/">Fakulteta za računalništvo in informatiko</Organizacija>
  </Organizacije>
  <OrganizacijeVira>
  </OrganizacijeVira>
  <MetodeZbiranjaPodatkov>
  </MetodeZbiranjaPodatkov>
  <TipologijaDela ID="0" Koda="0" Naziv="Ni določena" SchemaOrg="CreativeWork"></TipologijaDela>
  <Ostalo>
    <StIrodsDatotek>0</StIrodsDatotek>
    <StDatotekPodTrajnimEmbargom>0</StDatotekPodTrajnimEmbargom>
    <StDatotekZOmejenimDostopom>0</StDatotekZOmejenimDostopom>
  </Ostalo>
</Gradivo>
