UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andraž Drčar Prevajanje javanskih programov z vstavljeno zložno kodo DIPLOMSKO DELO UNI

Velikost: px
Začni prikazovanje s strani:

Download "UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andraž Drčar Prevajanje javanskih programov z vstavljeno zložno kodo DIPLOMSKO DELO UNI"

Transkripcija

1 UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andraž Drčar Prevajanje javanskih programov z vstavljeno zložno kodo DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA MENTOR: doc. dr. Tomaž Dobravec Ljubljana, 2014

2

3 To delo je ponujeno pod licenco Creative Commons Priznanje avtorstva-deljenje pod enakimi pogoji 2.5 Slovenija (ali novejšo različico). To pomeni, da se tako besedilo, slike, grafi in druge sestavine dela kot tudi i diplomskega dela lahko prosto distribuirajo, reproducirajo, uporabljajo, priobčujejo javnosti in predelujejo, pod pogojem, da se jasno in vidno navede avtorja in naslov tega dela in da se v primeru spremembe, preoblikovanja ali uporabe tega dela v svojem delu, lahko distribuira predelava le pod licenco, ki je enaka tej. Podrobnosti licence so dostopne na spletni strani creativecommons.si ali na Inštitutu za intelektualno lastnino, Streliška 1, 1000 Ljubljana. Izvorna koda diplomskega dela, njeni i in v ta namen razvita programska oprema je ponujena pod licenco GNU General Public License, različica 3 (ali novejša). To pomeni, da se lahko prosto distribuira in/ali predeluje pod njenimi pogoji. Podrobnosti licence so dostopne na spletni strani

4

5 Fakulteta za računalništvo in informatiko izdaja naslednjo nalogo: Tematika naloge: Javanska zložna koda je zbirni jezik za javanski navidezni stroj. Poleg javanskih programov se v javansko zložno kodo lahko prevajajo tudi drugi jeziki, na primer, Python, Ruby, Groovy, Scala, C in drugi. Poznavanje javanske zložne kode pomaga razumeti način delovanja javanskega navideznega stroja in lahko pomembno vpliva na pisanje optimalne programske kode. V diplomskem delu preučite delovanje javanskega navideznega stroja in javanske zložne kode. Napišite razširitev javanskega prevajalnika, ki bo omogočal vstavljanje zložne kode neposredno v javanske programe (jasm bloki). Vaš program naj znotraj jasm blokov podpira vse ukaze zložne kode ter omogoča dostop do vseh spremenljivk, ki so zapisane v naboru konstant.

6

7 IZJAVA O AVTORSTVU DIPLOMSKEGA DELA Spodaj podpisani Andraž Drčar, z vpisno številko , sem avtor diplomskega dela z naslovom: Prevajanje javanskih programov z vstavljeno zložno kodo S svojim podpisom zagotavljam, da: sem diplomsko delo izdelal samostojno pod mentorstvom doc. dr. Tomaža Dobravca, so elektronska oblika diplomskega dela, naslov (slov., angl.), povzetek (slov., angl.) ter ključne besede (slov., angl.) identični s tiskano obliko diplomskega dela, soglašam z javno objavo elektronske oblike diplomskega dela na svetovnem spletu preko univerzitetnega spletnega arhiva. V Ljubljani, dne 10. septembra 2014 Podpis avtorja:

8

9 Na tem mestu bi se rad zahvalil vsem, ki bi mi utegnili zameriti, če se jim na tem mestu ne bi zahvalil!

10

11 Kazalo Povzetek Abstract Poglavje 1 Uvod... 1 Poglavje 2 Delovanje JVM in zložna koda Delovanje JVM Sestava datotek z zložno kodo Deskriptor konstant Deskriptor vmesnikov Deskriptor polj Deskriptor metod Deskriptor atributov Ukazi zložne kode... 7 Poglavje 3 Zahteve razširjenega prevajalnika Jasm blok Združljivost Omejitve prevajalnika Poglavje 4 Razvoj prevajalnika Priprava datotek Analiza prevedene datoteke Določitev mesta in analiza kode Rezervacija prostora Vstavljanje kode Doseganje združljivosti Poglavje 5 Delovanje in uporaba prevajalnika... 25

12 Poglavje 6 Sklepne ugotovitve Optimizacija končne datoteke in dodatni parametri Dodajanje zapisov v tabelo konstant Izdelava vtičnika... 30

13 Seznam uporabljenih kratic kratica angleško slovensko RISC Reduced Instruction Set Computing računalnik s skrčenim naborom ukazov JDK Java Development Kit razvojni komplet za Javo JRE Java Runtime Environment javansko izvajalno okolje JVM Java Virtual Machine javanski navidezni stroj

14

15 Povzetek Java je eden izmed bolj razširjenih programskih jezikov. Poznan je predvsem zaradi svoje sistemske neodvisnosti, ki je dosežena s pomočjo javanskega virtualnega stroja razvitega za specifične sisteme. Ti stroji sledijo natančnim navodilom, kako izvajati zložno kodo iz prevedenih datotek. Na drugi strani pa natančnih navodil za prevajanje v zložno kodo ni, zato programer nima vpliva na prevedeno kodo. V diplomskem delu je opisan razvoj razširjenega prevajalnika za Javo. Prevajalnik poleg standardnih ukazov sprejme tudi bloke, ki vsebujejo ukaze zložne kode. V prvem delu je kratka predstavitev delovanja javanskega navideznega stroja in sestava datotek z zložno kodo. V nadaljevanju so opisane zahteve razširjenega prevajalnika, čemur sledi opis rešitve, ki je v grobem razdeljen na pet korakov. Pri vsakem koraku so podrobno opisane osnovne ideje, njihove morebitne pomanjkljivosti, težave med razvojem in končne rešitve. Zaključek je sestavljen iz analize končnega prevajalnika z opisi nekaterih možnosti za razširitev in nadgradnjo. Ključne besede: Java, zložna koda, prevajalnik

16

17 Abstract Java is one of the top programming languages known for its platform independency, which is reached by using platform specific Java Virtual Machines (JVM). Each JVM follows strict rules how class files containing the bytecode are parsed and executed. However, there are no such rules for the compilation part and the programmer has no influence on the compiled code. The thesis describes the development of the extended compiler for Java. In addition to the standard commands this compiler also supports usage of blocks that contain Java bytecode. The first part is a brief presentation of the Java Virtual Machine and the composition of translated files. The following describes the requirements of the extended compiler followed by description of the solution, which is roughly divided into five steps. Each step contains the basic ideas, their possible shortcomings, problems during development and the presentation of final solution. The conclusion is drawn from the analysis of the final compiler and descriptions of some options to expand and upgrade the product. Keywords: Java, bytecode, compiler

18

19 Poglavje 1 Uvod Java je eden izmed bolj razširjenih programskih jezikov, ki je znan predvsem po svoji sistemski neodvisnosti. To pomeni, da prevedene kode po selitvi na drug sistem ni treba popravljati ali ponovno prevajati. Za to poskrbi javansko okolje s svojim navideznim strojem (angl. Java Virtual Machine - JVM), ki je razvit za vrsto različnih procesorjev in operacijskih sistemov [1]. Vsi ti stroji sledijo natančnim pravilom, kako brati in izvajati prevedeno kodo, ki je zapisana kot zaporedje ukazov zložne kode. Medtem ko je izvajanje natančno predpisano, za prevajanje ne obstajajo standardizirana pravila. Ker obstaja veliko število različnih sistemov, obstaja tudi veliko prevajalnikov različnih razvijalcev. Obstaja torej možnost, da se isti program prevede v različno zaporedje ukazov zložne kode. Posledica tega je, da programer nima nikakršnega vpliva na prevedeno datoteko in nima možnosti za optimizacijo. Medtem ko prevajalniki za nekatere ostale programske jezike omogočajo uporabo procesorskih ukazov, programiranje z zložno kodo v Javi ni podprto. Tabela 1 prikazuje uporabo procesorskih ukazov v programskem jeziku C. #include <stdio.h> int main() { /* Sešteje 10 in 20 in shrani v register %eax */ asm ( "movl $10, %eax;" "movl $20, %ebx;" "addl %ebx, %eax;" ); return 0 ; } Tabela 1 - Primer uporabe procesorskih ukazov v programskem jeziku C. Ob pregledu spleta smo ugotovili, da se uporabniki po forumih zanimajo za tovrstne rešitve, a za zdaj obstajajo samo orodja, ki znajo analizirati in predstaviti sestavo zložne kode. Takšni orodji sta na primer vtičnika za eclipse Bytecode Outline plugin for Eclipse [2] ter Bytecode Visualizer [7]. Zato smo prišli na idejo, razviti prevajalnik za Javo, ki bo poleg običajnih ukazov omogočal tudi uporabo blokov z zložno kodo. Za razvoj takšnega prevajalnika je dobro razumeti nekatere osnove delovanja JVM, predvsem pa se je bilo treba podrobno seznaniti s sestavo in ukazi zložne kode, kar je opisano v naslednjem poglavju. Za tem je 1

20 2 POGLAVJE 1. UVOD opisano, kaj naj bi prevajalnik omogočal ter kakšne omejitve smo sprejeli pri izdelavi prevajalnika. Sledi opis razvoja prevajalnika, kjer so opisane osnovne ideje, težave in njihove rešitve pri posameznih sklopih prevajalnika. Na koncu sledi še analiza izdelanega prevajalnika z opisi nekaterih možnosti za razširitev.

21 Poglavje 2 Delovanje JVM in zložna koda Za lažje razumevanje opisa razvoja razširjenega prevajalnika je dobro, da se najprej seznanimo z osnovami delovanja javanskega navideznega stroja ter sestavo datotek z zložno kodo kot tudi samimi ukazi zložne kode. 2.1 Delovanje JVM JVM je neke vrste navidezni procesor s svojim naborom ukazov. Sprva je bil razvit za izvajanje prevedene kode programskega jezika Java, kasneje pa so se pojavili tudi prevajalniki, ki tvorijo zložno kodo za JVM iz drugih programskih jezikov. Skupaj z javanskim programskim vmesnikom (angl. Application Programming Interface - API) JVM tvori javansko izvajalno okolje (angl. Java Runtime Environment - JRE). JVM je sestavljen iz enote za preverjanje zložne kode, enote za delo in upravljanje s pomnilnikom ter tolmača. Enota za preverjanje zložne kode najprej preveri, da vsi skoki znotraj programa kažejo na veljavno lokacijo ter da so vse spremenljivke ustrezno inicializirane. Prav tako skrbi tudi za dostope do zaščitenih delov kode. Kot pomnilnik JVM uporablja kopico, kamor se shranjujejo vsi objekti - primerki razredov. Za čiščenje tega dela pomnilnika skrbi čistilec pomnilnika (angl. garbage collector). V preostalem delu pomnilnika se nahajajo tabele konstant, kode metod ter po en sklad za vsako izvajajočo se nit. Zadnja komponenta je tolmač, ki ukaze zložne kode prevede in posreduje dejanskemu procesorju sistema. Od leta 2014 se v JVM za doseganje večje hitrosti izvajanja po večini uporablja dinamično prevajanje [6]. To pomeni, da se zložna koda prevaja v ukaze za ustrezno platformo med samim izvajanjem, kar omogoča večjo hitrost delovanja. Toda vse opisano velja za točno določen JVM, saj struktura in podrobnosti delovanja JVM niso natančno določena. Podobno kot to velja tudi za prevajalnike, ki tvorijo prevedene datoteke z zložno kodo, je opis JVM mnogo bolj abstrakten. Kot pravijo pri razvijalcu, z natančnejšo definicijo JVM niso želeli omejevati ustvarjalnosti različnih razvijalcev in so jim pri realizaciji pustili proste roke [3]. JVM je tako definiran kot stroj, ki je zmožen brati prevedene datoteke z zložno kodo in izvajati ukaze, ki so v njih zapisani. Nabor ukazov ter njihova funkcionalnost in zgradba prevedenih datotek sta edini dve stvari, ki sta natančno določeni. Oglejmo si torej še ti dve komponenti programskega jezika Java. 3

22 4 POGLAVJE 2. DELOVANJE JVM IN ZLOŽNA KODA 2.2 Sestava datotek z zložno kodo Prevedena datoteka z zložno kodo ne vsebuje nobenih podatkov o naslovih in nobenih oznak pozicij, na katere bi se lahko sklicevali med delovanjem programa. Vsebino datoteke lahko preberemo samo, če natančno poznamo njeno sestavo. Vsakič je treba datoteko brati od začetka in s pomočjo štetja in vsebine bajtov izluščiti njeno vsebino. Velikost 4B 2B 2B 2B različno 2B 2B 2B 2B različno 2B različno 2B različno 2B različno Opis CAFEBABE - konstanta za datoteko class podverzija verzija število konstant (cpc) deskriptor konstant (cpc-1 zapisov) zastavice dostopa ime trenutnega razreda ime nadrazreda število vmesnikov (ic) deskriptor vmesnikov (ic zapisov) število polj (fc) deskriptor polj (fc zapisov) število metod (mc) deskriptor metod (mc zapisov) število atributov (ac) deskriptor atributov (ac zapisov) Tabela 2 - Sestava datoteke z zložno kodo. Tabela 2 prikazuje splošen opis sestave datoteke tipa class, sledijo pa še podrobnejši opisi deskriptorjev. Za delovanje prevajalnika sta najbolj pomembna deskriptor konstant in deskriptor metod. Pri drugih je dovolj, da vemo, koliko bajtov moramo preskočiti, ko pridemo do njihovega mesta Deskriptor konstant Deskriptor konstant vsebuje vse vrednosti znakovnih konstant, ki jih uporabljamo v programu. Poleg tega vsebuje tudi številske konstante, ki niso predstavljive s številom bitov, ki so nam na voljo za atribute ukaza. Pod znakovne konstante sodijo tako imena spremenljivk, metod in razredov, kot tudi običajne vrednosti spremenljivk tipa String. Med zapisi najdemo še sklic na metode, vmesnike in polja ter zapis o imenu in tipu, ki se uporablja tako za metode kot za polja. Prvi bajt je oznaka, ki nam pove kakšnega tipa je konstanta. Odvisno od tipa tej številki sledi različno število bajtov, ki predstavljajo vrednost konstante. Kakšen je format katerega tipa konstante, je zapisano v tabeli Tabela 3.

23 POGLAVJE 2. DELOVANJE JVM IN ZLOŽNA KODA 5 Št. Tip konstante Velikost in pomen 1 Utf8 2 bajta za dolžino, sledijo znaki vrednosti 3 Integer 4 bajte - predznačeno število v dvojiškem komplementu 4 Float 4 bajte - število v plavajoči vejici IEEE Long 8 bajtov - predznačeno število v dvojiškem komplementu 6 Double 8 bajtov - število v plavajoči vejici IEEE Class 2 bajta - sklic na ime razreda 8 String 2 bajta - sklic na vrednost znakovne spremenljivke 9 sklic polja 4 bajte - sklic na razred, sklic na deskriptor 10 sklic metode 4 bajte - sklic na razred, sklic na deskriptor 11 sklic vmesnika 4 bajte - sklic na razred, sklic na deskriptor 12 Deskriptor 4 bajte - 2bajta za sklic na ime, 2 bajta za sklic na tip Tabela 3 - Tabela z opisom zapisov v deskriptorju konstant Deskriptor vmesnikov Najbolj preprost deskriptor je deskriptor vmesnikov. Vsebuje namreč sklice na vmesnike iz tabele konstant, ki jih naš razred implementira ali razširja. Vsak zapis je dolg dva bajta. Koliko zapisov vsebuje, nam pove številka pred deskriptorjem Deskriptor polj Deskriptor polj opisuje polja, uporabljena v našem razredu. Sestavljen je iz tabel, ki opisujejo vsako polje posebej. Zgradbo tabele prikazuje Tabela 4. Več o zgradbi in vsebini atributov bomo povedali kasneje. Velikost Pomen 2B Zastavice dostopa 2B Sklic na ime 2B Sklic na deskriptor 2B Število atributov različno Atributi Tabela 4 - Prikaz sestave tabele v deskriptorju polj Deskriptor metod Deskriptor metod je za nas najbolj pomemben del prevedene datoteke. V njem so namreč ukazi zložne kode, v katere so bili prevedeni javanski ukazi znotraj posameznih metod. Poleg ukazov vsebuje tudi najbolj pomemben atribut. To je tabela lokalnih spremenljivk, kjer so zapisane vse lokalne spremenljivke posamezne metode in njihova vidljivost. Deskriptor metod je, podobno kot deskriptor polj, sestavljen iz tabel. V vsaki tabeli je opis ene metode, zgradba tabele pa je enaka kot pri deskriptorju polj in jo prikazuje Tabela 5.

24 6 POGLAVJE 2. DELOVANJE JVM IN ZLOŽNA KODA Velikost Pomen 2B Zastavice dostopa 2B Sklic na ime 2B Sklic na deskriptor 2B Število atributov različno Atributi Tabela 5 - Prikaz sestave tabele v deskriptorju metod. Med atributi v tabeli metode se nahaja atribut Code, ki vsebuje vse pomembne podatke. Atribut se kot vsi drugi, začne z indeksom na ime v tabeli konstant, ki zasede dva bajta. Sledijo štirje bajti, ki nam povedo, kako velika je vsebina atributa. Vsebina atributa Code je opisana v tabeli Tabela 6. Velikost 2B 2B 2B različno 2B Različno 2B Različno Pomen Maksimalna potrebna velikost sklada Število lokalnih spremenljivk Dolžina kode Ukazi zložne kode metode Dolžina tabele izjem Vsebina tabele izjem Število atributov Atributi Tabela 6 - Sestava atributa Code. Drugi pomembni del je tabela lokalnih spremenljivk, ki jo v kodi prevedeni z vsebino za razhroščevanje, najdemo med atributi atributa Code. Po indeksu, ki kaže na konstanto LocalVariableTable, se zopet nahajajo štirje bajti z velikostjo. Prva dva bajta vsebine predstavljata število tabel. Tabela 7 prikazuje sestavo tabel z opisom lokalnih spremenljivk. Velikost Pomen 2B Začetek veljavnosti (številka bajta v zložni kodi) 2B Dolžina veljavnosti (v bajtih) 2B Sklic na ime spremenljivke 2B Sklic na deskriptor 2B Indeks lokalne spremenljivke (zaporedna številka) Tabela 7 - Sestava tabele s podatki o lokalnih spremenljivkah Deskriptor atributov Deskriptor atributov je sestavljen iz opisov atributov. Prva dva bajta sta referenca na ime atributa iz tabele konstant. Sledijo štirje bajti, ki nam povejo dolžino vsebine atributa. Sledi vsebina atributa. Kot smo ugotovili že pri atributoma Code in LocalVariableTable, imajo vsi atributi enako zgradbo. Vseh možnih atributov ne bomo naštevali, saj za delovanje

25 POGLAVJE 2. DELOVANJE JVM IN ZLOŽNA KODA 7 razširjenega prevajalnika niso pomembni. Treba je vedeti le, koliko jih je in kolikšna je velikost njihove vsebine, kar izvemo iz dodatnih bajtov med opisi. Vsebino atributov, ki niso pomembni za delovanje razširjenega prevajalnika, lahko preskočimo oziroma jo prepišemo v končno datoteko. Več o atributih in njihovem pomenu je zapisano v dokumentaciji [4]. 2.3 Ukazi zložne kode JVM bi lahko označili kot procesor tipa RISC, saj so ukazi kratki in preprosti. Vsi ukazi so dolgi po en bajt, saj JVM vsebuje le 205 ukazov. Ker JVM uporablja sklad, je večina ukazov brez operandov. Poleg tega so med ukazi zložne kode tudi skrajšani ukazi z najbolj pogostimi konstantami, ki pripomorejo k še krajši kodi prevedenih datotek. Tako lahko namesto ukaza iload z atributom 1 uporabimo skrajšani ukaz iload_1, ki namesto dveh bajtov zasede le enega. V tabeli Tabela 8 so predstavljeni vsi ukazi zložne kode z operacijskimi kodami, opisom operandov, vplivu na sklad ter opisom delovanja. Tabela 8 - Seznam ukazov zložne kode Ukaz # Velikost: pomen operandov Sprememba sklada Opis ukaza nop 00 ni sprememb ne naredi ničesar aconst_null 01 null potisne referenco za null na sklad iconst_m potisne vrednost int -1 na sklad iconst_ potisne vrednost int 0 na sklad iconst_ potisne vrednost int 1 na sklad iconst_ potisne vrednost int 2 na sklad iconst_ potisne vrednost int 3 na sklad iconst_ potisne vrednost int 4 na sklad iconst_ potisne vrednost int 5 na sklad lconst_0 09 0L potisne vrednost long 0 na sklad lconst_1 0A 1L potisne vrednost long 1 na sklad fconst_0 0B 0.0f potisne vrednost float 0.0 na sklad fconst_1 0C 1.0f potisne vrednost float 1.0 na sklad fconst_2 0D 2.0f potisne vrednost float 2.0 na sklad dconst_0 0E 0.0 potisne vrednost double 0.0 na sklad dconst_1 0F 1.0 potisne vrednost double 1.0 na sklad bipush 10 1: bajt vrednost potisne bajt na sklad kot vrednost int sipush 11 2: bajt1, bajt2 vrednost potisne 2 bajta na sklad ldc 12 1: indeks vrednost potisne vrednost konstante #indeks (String, int, float) na sklad potisne vrednost konstante #indeks ldc_w 13 2: indeks vrednost (String, int, float) na sklad (indeks je dolg 2 bajta) ldc2_w 14 2: indeks vrednost potisne vrednost konstante #indeks (double, long) na sklad (indeks je dolg 2 bajta) iload 15 1: indeks vrednost naloži vrednost int iz lokalne spremenljivke #indeks

26 8 POGLAVJE 2. DELOVANJE JVM IN ZLOŽNA KODA Ukaz # Velikost: pomen operandov Sprememba sklada Opis ukaza lload 16 1: indeks vrednost naloži vrednost long iz lokalne spremenljivke #indeks fload 17 1: indeks vrednost naloži vrednost float iz lokalne spremenljivke #indeks dload 18 1: indeks vrednost naloži vrednost double iz lokalne spremenljivke #indeks aload 19 1: indeks referenca naloži referenco iz lokalne spremenljivke objekta #indeks iload_0 1A vrednost naloži vrednost int iz lokalne spremenljivke 0 iload_1 1B vrednost naloži vrednost int iz lokalne spremenljivke 1 iload_2 1C vrednost naloži vrednost int iz lokalne spremenljivke 2 iload_3 1D vrednost naloži vrednost int iz lokalne spremenljivke 3 lload_0 1E vrednost naloži vrednost long iz lokalne spremenljivke 0 lload_1 1F vrednost naloži vrednost long iz lokalne spremenljivke 1 lload_2 20 vrednost naloži vrednost long iz lokalne spremenljivke 2 lload_3 21 vrednost naloži vrednost long iz lokalne spremenljivke 3 fload_0 22 vrednost naloži vrednost float iz lokalne spremenljivke 0 fload_1 23 vrednost naloži vrednost float iz lokalne spremenljivke 1 fload_2 24 vrednost naloži vrednost float iz lokalne spremenljivke 2 fload_3 25 vrednost naloži vrednost float iz lokalne spremenljivke 3 dload_0 26 vrednost naloži vrednost double iz lokalne spremenljivke 0 dload_1 27 vrednost naloži vrednost double iz lokalne spremenljivke 1 dload_2 28 vrednost naloži vrednost double iz lokalne spremenljivke 2 dload_3 29 vrednost naloži vrednost double iz lokalne spremenljivke 3 aload_0 2A referenca objekta naloži referenco iz lokalne spremenljivke 0 referenca aload_1 2B objekta naloži referenco iz lokalne spremenljivke 1 aload_2 2C referenca objekta naloži referenco iz lokalne spremenljivke 2 referenca aload_3 2D objekta naloži referenco iz lokalne spremenljivke 3 referenca polja, iaload 2E indeks naloži vrednost int iz polja vrednost referenca polja, laload 2F indeks naloži vrednost long iz polja vrednost referenca polja, faload 30 indeks naloži vrednost float iz polja vrednost referenca polja, daload 31 indeks naloži vrednost double iz polja vrednost referenca polja, aaload 32 indeks naloži referenco iz polja na sklad vrednost referenca polja, baload 33 indeks naloži vrednost boolean iz polja vrednost referenca polja, caload 34 indeks naloži vrednost char iz polja vrednost

27 POGLAVJE 2. DELOVANJE JVM IN ZLOŽNA KODA 9 Ukaz # Velikost: pomen operandov Sprememba sklada Opis ukaza referenca polja, saload 35 indeks naloži vrednost short iz polja vrednost istore 36 1: indeks vrednost shrani vrednost int v lokalno spremenljivko #indeks lstore 37 1: indeks vrednost shrani vrednost long v lokalno spremenljivko #indeks fstore 38 1: indeks vrednost shrani vrednost float v lokalno spremenljivko #indeks dstore 39 1: indeks vrednost shrani vrednost double v lokalno spremenljivko #indeks astore 3A 1: indeks referenca shrani referenco v lokalno spremenljivko objekta #indeks istore_0 3B vrednost shrani vrednost int v lokalno spremenljivko 0 istore_1 3C vrednost shrani vrednost int v lokalno spremenljivko 1 istore_2 3D vrednost shrani vrednost int v lokalno spremenljivko 2 istore_3 3E vrednost shrani vrednost int v lokalno spremenljivko 3 lstore_0 3F vrednost shrani vrednost long v lokalno spremenljivko 0 lstore_1 40 vrednost shrani vrednost long v lokalno spremenljivko 1 lstore_2 41 vrednost shrani vrednost long v lokalno spremenljivko 2 lstore_3 42 vrednost shrani vrednost long v lokalno spremenljivko 3 fstore_0 43 vrednost shrani vrednost float v lokalno spremenljivko 0 fstore_1 44 vrednost shrani vrednost float v lokalno spremenljivko 1 fstore_2 45 vrednost shrani vrednost float v lokalno spremenljivko 2 fstore_3 46 vrednost shrani vrednost float v lokalno spremenljivko 3 dstore_0 47 vrednost shrani vrednost double v lokalno spremenljivko 0 dstore_1 48 vrednost shrani vrednost double v lokalno spremenljivko 1 dstore_2 49 vrednost shrani vrednost double v lokalno spremenljivko 2 dstore_3 4A vrednost shrani vrednost double v lokalno spremenljivko 3 referenca astore_0 4B objekta shrani referenco v lokalno spremenljivko 0 astore_1 4C referenca objekta shrani referenco v lokalno spremenljivko 1 referenca astore_2 4D objekta shrani referenco v lokalno spremenljivko 2 astore_3 4E referenca objekta shrani referenco v lokalno spremenljivko 3 referenca polja, iastore 4F indeks, vrednost shrani vrednost int v polje referenca polja, lastore 50 indeks, vrednost shrani vrednost long v polje referenca polja, fastore 51 indeks, vrednost shrani vrednost float v polje referenca polja, dastore 52 indeks, vrednost shrani vrednost double v polje referenca polja, aastore 53 indeks, vrednost shrani referenco v polje na sklad

28 10 POGLAVJE 2. DELOVANJE JVM IN ZLOŽNA KODA Ukaz # Velikost: pomen operandov Sprememba sklada Opis ukaza bastore 54 referenca polja, indeks, vrednost shrani vrednost boolean v polje castore 55 referenca polja, indeks, vrednost shrani vrednost char v polje sastore 56 referenca polja, indeks, vrednost shrani vrednost short v polje pop 57 vrednost zavrže zgornjo vrednost sklada pop2 58 {vrednost2, vrednost1} zavrže zgornji 2 vrednosti sklada dup 59 vrednost vrednost, vrednost podvoji vrednost na vrhu sklada vrednost2, dup_x1 5A vrednost1 vstavi kopijo zgornje vrednosti dve vrednost2, vrednosti pod vrhom vrednost1 dup_x2 dup2 dup2_x1 dup2_x2 swap 5B 5C 5D 5E 5F iadd 60 ladd 61 fadd 62 dadd 63 isub 64 lsub 65 fsub 66 vrednost3, vrednost2, vrednost1 vrednost3, vrednost2, vrednost1 {vrednost2, vrednost1} {vrednost2, vrednost1}, {vrednost2, vrednost1} vrednost3, {vrednost2, vrednost1} {vrednost2, vrednost1}, vrednost3, {vrednost2, vrednost1} {vrednost4, vrednost3}, {vrednost2, vrednost1} {vrednost2, vrednost1}, {vrednost4, vrednost3}, {vrednost2, vrednost1} vrednost2, vrednost1 vrednost2 vstavi kopijo zgornje vrednosti tri vrednosti pod vrhom podvoji zgornji dve besedi sklada vstavi kopijo zgornjih dveh vrednosti pod tretjo vrednost vstavi kopijo zgornjih dveh vrednosti pod četrto vrednost zamenja zgornji dve vrednosti sklada sešteje dve vrednosti int sešteje dve vrednosti long sešteje dve vrednosti float sešteje dve vrednosti double odšteje vrednosti int odšteje vrednosti long odšteje vrednosti float

29 POGLAVJE 2. DELOVANJE JVM IN ZLOŽNA KODA 11 Ukaz # Velikost: pomen operandov Sprememba sklada Opis ukaza dsub 67 odšteje vrednosti double imul 68 pomnoži vrednosti int lmul 69 pomnoži vrednosti long fmul 6A pomnoži vrednosti float dmul 6B pomnoži vrednosti double idiv 6C deli vrednosti int ldiv 6D deli vrednosti long fdiv 6E deli vrednosti float ddiv 6F deli vrednosti double irem 70 ostanek pri deljenju vrednosti int lrem 71 ostanek pri deljenju vrednosti long frem 72 ostanek pri deljenju vrednosti float drem 73 ostanek pri deljenju vrednosti double ineg 74 vrednost negiranje vrednosti int lneg 75 vrednost negiranje vrednosti long fneg 76 vrednost negiranje vrednosti float dneg 77 vrednost negiranje vrednosti double ishl 78 aritmetični zamik vrednosti int v levo lshl 79 zamik vrednosti1 long v levo za vrednost2 ishr 7A aritmetični zamik vrednosti int v desno lshr 7B zamik vrednosti1 long v desno za vrednost2 iushr 7C logični zamik vrednosti int v desno lushr iand land 7D 7E 7F ior 80 lor 81 zamik vrednosti1 long v desno za vrednost2, nepredznačeno bitna operacija AND nad vrednostih tipa int bitna operacija AND nad vrednostih tipa long bitna operacija OR nad vrednostih tipa int bitna operacija OR nad vrednostih tipa long

30 12 POGLAVJE 2. DELOVANJE JVM IN ZLOŽNA KODA Ukaz ixor 82 lxor 83 # Velikost: pomen operandov Sprememba sklada Opis ukaza iinc 84 2: indeks, konstanta [ni sprememb] i2l 85 i2f 86 i2d 87 l2i 88 l2f 89 l2d f2i f2l f2d d2i d2l 8A 8B 8C 8D 8E 8F d2f 90 i2b 91 i2c 92 i2s 93 lcmp 94 fcmpl 95 fcmpg 96 dcmpl 97 dcmpg 98 vrednost vrednost vrednost vrednost vrednost vrednost vrednost vrednost vrednost vrednost vrednost vrednost vrednost vrednost vrednost ifeq 99 2: odmik vrednost ifne 9A 2: odmik vrednost iflt 9B 2: odmik vrednost ifge 9C 2: odmik vrednost ifgt 9D 2: odmik vrednost ifle 9E 2: odmik vrednost if_icmpeq if_icmpne if_icmplt if_icmpge 9F 2: odmik A0 2: odmik A1 2: odmik A2 2: odmik bitna operacija XOR nad vrednostih tipa int bitna operacija XOR nad vrednostih tipa long poveča lokalno spremenljivko #indeks za konstanto pretvori int v long pretvori int v float pretvori int v double pretvori long v int pretvori long v float pretvori long v double pretvori float v int pretvori flaot v long pretvori float v double pretvori double v int pretvori double v long pretvori double v float pretvori int v bajt pretvori int v char pretvori int v short primerja vrednosti tipa long primerja vrednosti tipa float primerja vrednosti tipa float primerja vrednosti tipa double primerja vrednosti tipa double če je vrednost 0, skoči na ukaz na odmiku odmik če je vrednost ni 0, skoči na ukaz na odmiku odmik če je vrednost manj kot 0, skoči na ukaz na odmiku odmik če je vrednost več ali enako 0, skoči na ukaz na odmiku odmik če je vrednost več kot, skoči na ukaz na odmiku odmik če je vrednost manj ali enako 0, skoči na ukaz na odmiku odmik če sta vrednosti int enaki, skoči na ukaz na odmiku odmik če vrednosti int nista enaki, skoči na ukaz na odmiku odmik če je vrednost1 manjše od vrednost2, skoči na ukaz na odmiku odmik če je vrednost1 večje ali enako vrednost2, skoči na ukaz na odmiku odmik

31 POGLAVJE 2. DELOVANJE JVM IN ZLOŽNA KODA 13 Ukaz if_icmpgt if_icmple if_acmpeq if_acmpne # Velikost: pomen operandov Sprememba sklada Opis ukaza A3 2: odmik če je vrednost1 večje od vrednost2, skoči na ukaz na odmiku odmik če je vrednost1 manjše ali enako A4 2: odmik vrednost2, skoči na ukaz na odmiku odmik A5 2: odmik če sta referenci enaki, skoči na ukaz na odmiku odmik A6 2: odmik če referenci nista enaki, skoči na ukaz na odmiku odmik goto A7 2: odmik [ni sprememb] skoči na ukaz na odmiku odmik jsr A8 2: odmik naslov skoči na podprogram na odmiku odmik ret A9 1: indeks [ni sprememb] tableswitch lookupswitch AA AB 4+: [0-3B zapolnjevanja], p1, p2, p3, p4, s1, s2, s3, s4, z1, z2, z3, z4, odmikii 4+: [0-3B zapolnjevanja], p1, p2, p3, p4, np1, np2, np3, np4, odmiki... indeks ključ nadaljuj z izvajanjem na naslovu iz lokalne spremenljivke #indeks nadaljuj z izvajanjem na naslovu v tabeli z odmikom indeks naslov se prebere iz tabele z uporabo ključa in izvajanje se nadaljuje na tem naslovu ireturn AC vrednost [prazno] vrne vrednost int iz metode lreturn AD vrednost [prazno] vrne vrednost long iz metode freturn AE vrednost [prazno] vrne vrednost float iz metode dreturn AF vrednost [prazno] vrne vrednost double iz metode referenca areturn B0 objekta [prazno] vrne referenco iz metode return B1 [prazno] vrne void iz metode getstatic B2 2: indeks vrednost naloži vrednost statičnega polja razreda, kjer je polje definirano v tabeli konstant z oznako indeks putstatic B3 2: indeks vrednost shrani vrednost v statično polje razreda, kjer je polje definirano v tabeli konstant z oznako indeks referenca naloži vrednost polja objekta referenca, getfield B4 2: indeks objekta kjer je polje definirano v tabeli konstant z vrednost oznako indeks referenca shrani vrednost v polje objekta referenca, putfield B5 2: indeks objekta, kjer je polje definirano v tabeli konstant z vrednost oznako indeks referenca pokliči metodo objekta referenca, kjer je invokevirtual B6 2: indeks objekta, [arg1, metoda definirana v tabeli konstant z arg2,...] oznako indeks referenca pokliči metodo objekta referenca, kjer je invokespecial B7 2: indeks objekta, [arg1, metoda definirana v tabeli konstant z arg2,...] oznako indeks invokestatic B8 2: indeks pokliči statično metodo, kjer je metoda [arg1, arg2,...] definirana v tabeli konstant z oznako indeks invokeinterface B9 4: indeks1, indeks2, števec, 0 referenca pokliči metodo vmesnika referenca, kjer je objekta, [arg1, metoda definirana v tabeli konstant z arg2,...] oznako indeks invokedynamic BA 4: indeks1, indeks2, [arg1, [arg2 pokliči dinamično metodo definirano v 0, 0...]] tabeli konstant z oznako indeks new newarray anewarray BB 2: indeks BC 1: tip BD 2: indeks referenca objekta števec referenca polja števec referenca polja ustvari nov objekt tipa definiranega v tabeli konstant z oznako indeks ustvari novo polje primitivnega tipa velikosti števec ustvari novo polje referenc velikosti števec, kjer je referenca definirana v tabeli konstant z oznako indeks

32 14 POGLAVJE 2. DELOVANJE JVM IN ZLOŽNA KODA Ukaz arraylength athrow checkcast instanceof monitorenter monitorexit wide # Velikost: pomen operandov Sprememba sklada Opis ukaza BE referenca polja dolžina prebere velikost polja referenca referenca objekta BF [prazno], referenca povzroči izjemo ali napako objekta referenca objekta C0 2: indeks preveri če je referenca tipa definiranega v referenca tabeli konstant z oznako indeks objekta C1 2: indeks C2 C3 C4 multianewarray C5 3: opcode, i1, i2 ALI 5: 84, i1, i2, c1, c2 3: indeks1, indeks2, dimenzije referenca objekta referenca objekta referenca objekta [isto kot pri ustreznih ukazih] števec1, [števec2,...] referenca polja ifnull C6 2: odmik vrednost ifnonnull C7 2: odmik vrednost preveri če je referenca primerek tipa definiranega v tabeli konstant z oznako indeks vstop v monitor objekta izstop iz monitorja objekta izvrši ukaz op za nalaganje s 16 bitnim naslovom ali ukaz iinc z dvema 16 bitnima operandoma ustvari novo polje dimenzij dimenzije z elementi tipa definiranega v tabeli konstant z oznako indeks če je vrednost null, skoči na ukaz na odmiku odmik če vrednost ni null, skoči na ukaz na odmiku odmik goto_w C8 4: odmik [ni sprememb] skoči na ukaz na odmiku odmik jsr_w C9 4: odmik naslov skoči na podprogram na odmiku odmik breakpoint CA rezervirano za ustavitvene točke, se ne pojavlja v običajnih datotekah class (ni imena) impdep1 impdep2 CB - FD FE FF nedefinirani ukazi, rezervirani za prihodnjo uporabo rezervirano, se ne pojavlja v običajnih datotekah class rezervirano, se ne pojavlja v običajnih datotekah class

33 Poglavje 3 Zahteve razširjenega prevajalnika Cilj izdelave razširjenega prevajalnika je osnovna podpora programiranju z zložno kodo. Odločili smo se, da podobno kot v programskem jeziku C, uporabimo nov ukaz jasm. Ta ukaz naznanja blok, ki vsebuje ukaze zložne kode. Glavna naloga prevajalnika je določiti mesto uporabljenih jasm blokov znotraj programa, ki je napisan v Javi ter vriniti ukaze zložne kode v prevedeno datoteko. Prevajalnik naj bi bil podprt na vseh sistemih in deloval na vseh različicah Jave. Zaradi lažje izvedbe smo se odločili tudi za nekaj omejitev, ki so opisane v nadaljevanju. 3.1 Jasm blok Razširjeni prevajalnik za Javo naj bi, poleg standardnih javanskih ukazov, podpiral tudi bloke z ukazi zložne kode. Odločili smo se za uporabo novega ukaza jasm, ki mu sledijo ukazi zložne kode v zavitem oklepaju. Znotraj posameznega bloka so ukazi zložne kode ločeni s podpičji, operandi pa so od ukazov in med seboj ločeni s presledki. Da bi bilo programiranje uporabniku bolj prijazno in lažje razumljivo, smo pri operandih ukazov zložne kode dopustili uporabo števil v desetiškem zapisu ter imena deklariranih javanskih spremenljivk. Uporabniku torej ni treba pretvarjati želenih vrednosti v dvojiški zapis ali v ustrezen format glede na uporabljen ukaz. Prevajalnik pretvori vsa števila v ustrezen format in s pomočjo tabele lokalnih spremenljivk poskrbi, da se vrednosti zapišejo na ustrezno mesto oziroma se iz ustreznega mesta preberejo. Spodaj sta dva primera preprostega programa, napisana v Javi. V tabeli Tabela 9 so uporabljeni zgolj javanski ukazi, v tabeli Tabela 10 pa je prikazana uporaba jasm bloka. Rezultat obeh programov je enak. public class Test { public static void main(string[] args) { int a = 1; int b = 6; int test = a + b; System.out.println(test); } } Tabela 9 - Enostaven primer programa v Javi. 15

34 16 POGLAVJE 3. ZAHTEVE RAZŠIRJENEGA PREVAJALNIKA public class Test { public static void main(string[] args) { int a = 1; int b = 6; int test = 0; jasm { iload a; iload b; iadd; istore test; } System.out.println(test); } } Tabela 10 - Prikaz uporabe jasm bloka med vrsticami javanske kode. Iz primera v tabeli Tabela 10 je razviden način uporabe jasm bloka. V tej kodi je vsebina bloka oblikovana v stilu javanske kode. Nove vrstice za ukazi niso potrebne, je pa koda tako preglednejša. Dodamo lahko še to, da se lahko znotraj posameznih metod uporabi poljubno število jasm blokov. 3.2 Združljivost Pri izdelavi prevajalnika smo za enega izmed ciljev določili tudi delovanje prevajalnika na vseh različicah Jave, kot tudi na vseh sistemih. Ob prvem razmisleku k slednjemu pripomore že sama izbira Jave kot jezika za razvoj prevajalnika. Kot smo že omenili, je Java sistemsko neodvisna in programi napisani v Javi delujejo na vseh sistemih, ki imajo naložen ustrezen JVM. Za delovanje na starejših različicah Jave se je treba izogniti javanskim ukazom, ki v njih niso na voljo. Več o doseganju združljivosti je zapisanega v naslednjem poglavju. 3.3 Omejitve prevajalnika Zaradi preprostosti prevajalnika smo se odločili, da za zdaj ne bomo podprli vpisovanja novih zapisov v tabelo konstant. To pomeni, da mora programer uporabljati samo spremenljivke, ki so že bile deklarirane pred uporabo jasm bloka. Enako velja za vrednosti znakovnih konstant, kot tudi za vrednosti številskih konstant, kjer velikost števila ni predstavljiva s številom bitov, ki so nam na voljo za operand pri posameznem ukazu. Med možnostmi za razširitve so opisane težave, ki bi jih povzročilo dodajanje novih spremenljivk.

35 Poglavje 4 Razvoj prevajalnika Izvedba samega prevajalnika je precej preprosta, ko se enkrat dodobra spoznamo s sestavo prevedenih datotek. Najprej je treba iz programa izluščiti jasm bloke. Nato se večina dela skriva v tem, da analiziramo prevedene datoteke, ki so bile tako ali drugače spremenjene. A kljub vsemu je treba biti pozoren na določene stvari, ki se ob prvotnem razmišljanju o rešitvi ne zdijo težavne. Včasih se izkaže, da se je izvedbe treba lotiti drugače. V nadaljevanju si bomo podrobno ogledali razvoj prevajalnika, na kakšne težave smo naleteli ter kako smo jih rešili. Slika 1 prikazuje diagram poteka razvitega prevajalnika, ki je v grobem sestavljen iz petih glavnih delov: priprava datotek, analiza prevedene datoteke, določitev mesta ter analiza kode, rezervacija prostora in vstavljanje kode. Slika 1 - Diagram poteka za razširjeni prevajalnik. 17

36 18 POGLAVJE 4. RAZVOJ PREVAJALNIKA 4.1 Priprava datotek Kot smo že omenili, bo za delovanje prevajalnika potrebnih več sprememb izvorne datoteke. Uporabnik navadno pričakuje, da po prevodu njegova koda ostane nespremenjena, zato si najprej naredimo varnostno kopijo izvorne datoteke. To naredimo tako, da datoteko preimenujemo, ker bomo kasneje iz nje kopirali ustrezno vsebino. Ime izvorne datoteke bomo potrebovali pri prevajanju z navadnim javanskim prevajalnikom, kjer mora biti ime datoteke enako imenu razreda. Sledi branje preimenovane izvorne datoteke, ki jo prepisujemo v dve začasni datoteki. Prepisujemo samo javansko kodo in spuščamo vse vrste komentarjev. Če naletimo na jasm blok, si njegovo vsebino shranimo v seznam, kjer hranimo informacijo o zaporedni številki bloka in vsebino. Vsebino si shranimo skupaj s številkami vrstic, če gre za večvrstični blok. To nam omogoča, da kasneje pri opozorilu o napaki izpišemo tudi, kje je do napake prišlo. Če je bilo uporabljeno zaporedje znakov jasm kot ime spremenljivke ali metode in mu ne sledi blok z zložno kodo v zavitih oklepajih, moramo uporabnika opozoriti, da je pri uporabi tega prevajalnika to rezervirana beseda in je ne more uporabljati kot ime spremenljivke ali metode. Slika 2 - Grafični prikaz priprave datotek.

37 POGLAVJE 4. RAZVOJ PREVAJALNIKA 19 Na sliki Slika 2 je grafično prikazan postopek priprave datotek. V prvi začasni datoteki jasm blok v celoti izpustimo, v drugi pa si označimo njegovo mesto z zaporedjem znakov. Ker v javanski kodi še vedno obstajajo znakovne konstante, moramo zaporedje znakov izbrati tako, da to zaporedje tvori neveljaven znakovni niz. Sicer bi se lahko zgodilo, da bi pri naslednjih menjavah izbranega zaporedja znakov spremenili vsebino znakovne konstante in s tem delovanje programa. V našem primeru smo si za takšno zaporedje izbrali znakovno zaporedje j\d. Če uporabnik to zaporedje uporabi v znakovni konstanti, nas običajni prevajalnik opozori o napaki, saj je \d neveljavna ubežna sekvenca. Črka pred njo nam zagotovi, da pred \ ni znaka \, ki pa skupaj tvorita veljavno ubežno sekvenco. Ko zaključimo z analizo izvorne datoteke, si ustvarimo še tri kopije začasne datoteke z oznako mest blokov, ki jih bomo potrebovali v naslednjih korakih. 4.2 Analiza prevedene datoteke Vzamemo začasno datoteko brez zaporedij znakov, ki označujejo mesta jasm blokov. To datoteko nato preimenujemo v izvorno ime in jo prevedemo z javanskim prevajalnikom. Če je med prevajanjem prišlo do napake, izpišemo na zaslon in končamo z delom. V nasprotnem primeru dobimo kot delujočo datoteko, ki pa ne vsebuje ukazov zložne kode iz jasm blokov. Slika 3 - Grafični prikaz analize prevedene datoteke. Kodo prevajamo z dodatnim parametrom -g, kjer prevajalnik v prevedeni datoteki doda podatke za razhroščevanje. Sem sodijo zapisi spremenljivk v tabeli konstant kot tudi tabele

38 20 POGLAVJE 4. RAZVOJ PREVAJALNIKA lokalnih spremenljivk posameznih metod. Ta datoteka nam služi kot iztočnica, saj poleg podatkov za razhroščevanje nima nobene dodatne vsebine, ki je potrebna za delovanje razširjenega prevajalnika. Dobljeno prevedeno datoteko analiziramo in si shranimo celotno vsebino pred in po deskriptorju metod, ki je edini del, ki ga bomo spremenili in zamenjali. Poleg tega si shranimo tudi tabelo konstant, tako da je z vsebino konstante mogoče dobiti njeno zaporedno številko, kot je to prikazano na sliki Slika 3. V vsebini konstant so namreč shranjena tudi imena lokalnih spremenljivk in metod, ki jih programer lahko uporablja kot atribute pri ukazih zložne kode. 4.3 Določitev mesta in analiza kode Sledi tretji korak prevajanja, ki je od vseh najbolj zahteven, saj v njem naredimo tri stvari hkrati. Prva stvar je določanje mesta, kjer se jasm blok nahaja. Kot smo videli v drugem poglavju je nekaj kod za ukaze nezasedenih. Poleg tega, obstajata tudi kodi za ustavitvene točke (angl. break point) in operacijo NOP (angl. no operation), ki se sicer v običajnih prevodih ne pojavljata. S temi kodami bi si lahko pomagali določiti mesto jasm bloka znotraj ukazov prevedene metode. Toda težava nastane pri vprašanju, kako z običajnim prevajalnikom te ukaze sploh zapisati v prevedeno datoteko. Poleg tega bi v tem primeru morali ob analizi vedno preverjati kateri bajt predstavlja ukaz in kateri atribut ali le del njih. Zato smo prišli na drugačno idejo. Mesto jasm bloka določimo s pomočjo dveh kopij začasne datoteke, kjer zamenjamo znakovni niz, ki označuje mesto jasm bloka v javanski kodi. V prvi datoteki niz zamenjamo z ukazom System.exit(0), v drugem pa z ukazom System.exit(1). Dobra lastnost teh dveh ukazov je v tem, da se prevoda razlikujeta že v prvem bajtu, ker najprej nastopi ukaz, ki parameter naloži na sklad. Seveda je kot parameter treba izbrati številski konstanti, ki imata skrajšana ukaza, sicer bi bilo določanje mesta bolj zapleteno. Datoteki z zamenjano vsebino nato prevedemo in ju vzporedno analiziramo. Kjer pride do spremembe v deskriptorju metod je mesto, kamor je treba vstaviti ukaze jasm bloka. Če je jasm blokov več, nadaljujemo do naslednje spremembe, kjer je naslednji blok, saj je prevajanje zaporedno in si mesta blokov sledijo enako kot njihove pojavitve v javanski kodi. Ker je analiza datoteke časovno potraten postopek, se želimo izogniti odvečnim analizam. Po analiziranju kode posamezne metode se nahajamo v atributih deskriptorja metod, kjer je zapisana tudi tabela lokalnih spremenljivk. Zato je najbolj primerno, da v tem koraku preverimo tudi vidljivost lokalnih spremenljivk, kar je prikazano na sliki Slika 4. Za vse ukaze ustreznega bloka preverimo operande ukazov, ki uporabljajo lokalne spremenljivke. Iz tabele spremenljivk nato preberemo ali je uporabljena spremenljivka vidna na mestu obravnavanega jasm bloka. V kolikor je lokacija bloka izven obsega, ki označuje vidljivost

39 POGLAVJE 4. RAZVOJ PREVAJALNIKA 21 Slika 4 - Preverjanje vidljivosti lokalnih spremenljivk. spremenljivke, na to opozorimo uporabnika. Na tem mestu uredimo tudi atribute drugih ukazov in jih pretvorimo v ustrezno obliko. S tem se izognemo eni odvečni analizi v primeru, da je med ukazi vrinjene zložne kode prišlo do napake. Uporabnika na napako opozorimo že v tem koraku in končamo z delom, saj delujočega prevoda ni mogoče narediti. Pri morebitnih klicih funkcij ali uporabi znakovnih konstant uporabimo shranjeno tabelo konstant iz prve datoteke. To je pomembno zato, ker nam vstavljanje ukaza System.exit v trenutno tabelo konstant lahko spremeni vrstni red indeksov glede na prvi prevod. Pri sestavljanju končne prevedene datoteke bomo uporabili kodo pred deskriptorjem metod iz prve datoteke, kjer je tudi tabela konstant. Če bi uporabili napačno tabelo konstant, bi lahko prišlo do napačnega delovanja programa ali program celo ne bi deloval. Tretja stvar, ki jo naredimo v tem koraku, je izračun velikosti prostora, ki ga potrebujejo ukazi zložne kode v posameznem jasm bloku. To bi sicer lahko naredili že takoj po branju jasm bloka, a je izračun na tem mestu optimalnejši. V tem koraku lahko namreč zamenjamo vse

40 22 POGLAVJE 4. RAZVOJ PREVAJALNIKA lokalne spremenljivke z ustreznimi indeksi iz tabele lokalnih spremenljivk. Nato lahko nekatere ukaze z znanimi operandi zamenjamo z njihovimi skrajšanimi različicami. Tako lahko namesto ukaza iload z operandom 1, ki zasede dva bajta, uporabimo ukaz iload_1 velikosti en bajt. S tem dobimo bolj optimalno prevedeno datoteko. 4.4 Rezervacija prostora Sprva se je vrivanje dodatnih ukazov zložne kode zdelo precej preprosto. Ideja je bila, vriniti ukaze na mesto, ki smo ga izračunali v prejšnjem koraku. Poleg tega bi bilo treba še povečati števec, ki v deskriptorju označuje velikost atributa s kodo. Toda izkaže se, da bi ta rešitev delovala zgolj za najbolj preproste programe. Gre za programe, ki ne uporabljajo skokov, kar pomeni za programe brez zank in pogojnih stavkov. Težava je namreč v dejstvu, da Java v prevedenih datotekah uporablja relativne skoke. Ker v datotekah z zložno kodo ni nobenih oznak z naslovi, so skoki definirani s fiksno številko, ki nam pove, koliko bajtov naprej ali nazaj nadaljujemo z izvajanjem. To nam seveda podre našo prvotno idejo, saj bi v primeru uporabe jasm bloka znotraj zanke, bili odmiki pri skokih napačni. Lahko bi sicer poskušali najti vse skoke in ustrezno popravili njihove odmike, a bi bilo to precej zamudno delo. Za vsak skok bi bilo treba ugotoviti ali jasm blok sploh vpliva na njegov odmik ter ga nato ustrezno povečati oziroma zmanjšati. Izkaže se, da je preprostejše, če si prostor potreben za dodatne ukaze vnaprej rezerviramo. Slika 5 - Prikaz rezervacije prostora in ukazov, ki se v naslednjem koraku zamenjajo.

41 POGLAVJE 4. RAZVOJ PREVAJALNIKA 23 Kot je prikazano na sliki Slika 5, rezervacijo naredimo s pomočjo preostalih dveh datotek, kjer izbrani niz, ki označuje mesto jasm bloka, zamenjamo z javanskimi ukazi. V prvi datoteki zopet uporabimo ukaz System.exit(0), v drugi pa System.exit(1), ki zasedeta po štiri bajte. Za tema ukazoma uporabimo ukaze System.gc(). Ta ukaz se prevede v tri bajte in ne dodaja novih zapisov v tabelo lokalnih spremenljivk. Uporabimo toliko klicev System.gc(), da velikost prevoda ustreza številu bajtov, potrebnih za ukaze jasm bloka. Spremenjeni datoteki zopet prevedemo in dobimo prevedeni datoteki z rezerviranim prostorom. Mesta blokov smo v prejšnjem koraku sicer že izračunali, a bi bilo treba te številke pri vsakem bloku spremeniti glede na velikosti vseh predhodnih blokov. Zato je bolj preprosto, da uporabimo dve datoteki in za določanje mesta vrinjenih ukazov uporabimo isti trik kot v prejšnjem koraku. 4.5 Vstavljanje kode Preostane nam še zadnji korak prevajanja. V tem koraku uporabimo prevedeni datoteki z rezerviranim prostorom in ju zopet vzporedno analiziramo. Kjer v atributu s kodo metode pride do razlike, začnemo z vstavljanjem ukazov bloka. Poleg tega si celoten deskriptor metod shranimo, saj je to edini del, ki ga bomo potrebovali. Za konec nam ostane še manjša podrobnost, in sicer je treba popraviti tabele lokalnih spremenljivk za vsako metodo. Treba je zamenjati indekse imen lokalnih spremenljivk, ki v tem primeru kažejo na tabelo konstant iz trenutne datoteke. Če bi uporabili tabelo lokalnih spremenljivk iz prvega prevoda, bi imeli napačne podatke o vidljivosti spremenljivk zaradi vrinjenih ukazov. Naj še enkrat omenimo, da je tabela lokalnih spremenljivk namenjena zgolj razhroščevanju in bi program deloval tudi brez popravka. Toda ker ne vemo, kaj bo uporabnik s prevedeno datoteko počel, je pravilno, da prevod ne vsebuje takšnih neskladij. Končno prevedeno datoteko sestavimo tako, da uporabimo kodo pred in po deskriptorju metod iz prve analize, vmes pa dodamo popravljeni deskriptor metod. 4.6 Doseganje združljivosti Za enega izmed ciljev razširjenega prevajalnika smo določili tudi delovanje na vseh sistemih, kot tudi na vseh različicah Jave. Kot se je izkazalo, obojega hkrati žal ni mogoče doseči. Težava je v uporabi knjižnic za prevajanje datotek z običajnim prevajalnikom. Med razvojem smo uporabili tri različne pristope k prevajanju datotek, kjer ima vsak svoje prednosti in svoje slabosti. Najprej smo se prevajanja lotili z uporabo knjižnice Runtime, kjer lahko s pomočjo metode getruntime sistemu pošljemo poljuben ukaz, kot bi to storili v ukazni vrstici. Dobra lastnost tega načina je razpoložljivost knjižnice že od prve različice Jave. Toda tu se pojavi

42 24 POGLAVJE 4. RAZVOJ PREVAJALNIKA vprašanje, ali za prevajanje javanskih datotek res vsi sistemi uporabljajo isti ukaz, saj bi v nasprotnem primeru za delovanje prevajalnika bilo treba poseči v izvorno kodo. Ob iskanju bolj integrirane rešitve, smo naleteli na knjižnico JavaCompiler, kjer nam metoda getcompiler vrne prevajalnik iz trenutno naloženega JDK. Če JDK ni naložen, nam metoda vrne vrednost null in prevajalnik ne deluje. A kot smo že ugotovili, bo uporabnik razširjenega prevajalnika zagotovo imel naložen JDK. Poleg tega, da je omenjena knjižnica na voljo šele od različice 1.6, se nam pri obeh opisanih metodah pojavlja še eno vprašanje. Kot smo zapisali že v uvodu, prevajanje v zložno kodo ni natančno določeno, mi pa se v našem prevajalniku zanašamo, da se ukazi System.exit(0), System.exit(1) ter System.gc() prevedejo v točno določeno zaporedje ukazov zložne kode. Odločili smo se še naprej iskati možnosti za izboljšavo prevajanja in preizkusili prevajalnik od orodja eclipse, ki je v najnovejši različici dostopen kot samostojna komponenta na njihovi spletni strani [8]. Ugotovili smo, da tudi ta prevajalnik za delovanje zahteva vsaj različico 1.6, deluje pa tudi na sistemih, ki imajo naložen zgolj JRE. Uporaba takšnega prevajalnika nam zagotavlja, da se javanski ukazi vedno prevedejo v isto zaporedje ukazov zložne kode, vendar pa ima uporaba takšnega prevajalnika drugo slabost. Ob vsaki novi različici Jave bi bilo treba obstoječi prevajalnik zamenjati z novejšo različico. Na koncu smo se odločili za uporabo knjižnice JavaCompiler, saj je njena uporaba še najbolj preprosta. V razširjenem prevajalniku so ostale vse tri metode za prevajanje datotek in uporaba želene metode se po potrebi lahko zamenja.

Microsoft Word - avd_vaje_ars1_1.doc

Microsoft Word - avd_vaje_ars1_1.doc ARS I Avditorne vaje Pri nekem programu je potrebno izvršiti N=1620 ukazov. Pogostost in trajanje posameznih vrst ukazov računalnika sta naslednja: Vrsta ukaza Štev. urinih period Pogostost Prenosi podatkov

Prikaži več

Microsoft Word - vaje2_ora.doc

Microsoft Word - vaje2_ora.doc II UKAZI 1. Napišite zaporedje ukazov, ki vrednost enobajtne spremenljivke STEV1 prepiše v enobajtno spremenljivko STEV2. Nalogo rešite z neposrednim naslavljanjem (zaporedje lahko vsebuje le 2 ukaza v

Prikaži več

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni RAM stroj Nataša Naglič 4. junij 2009 1 RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni trak, pomnilnik ter program. Bralni trak- zaporedje

Prikaži več

Microsoft Word - M docx

Microsoft Word - M docx Š i f r a k a n d i d a t a : Državni izpitni center *M17178111* SPOMLADANSKI IZPITNI ROK Izpitna pola 1 Četrtek, 1. junij 2017 / 90 minut Dovoljeno gradivo in pripomočki: Kandidat prinese nalivno pero

Prikaži več

Diapozitiv 1

Diapozitiv 1 9. Funkcije 1 9. 1. F U N K C I J A m a i n () 9.2. D E F I N I C I J A F U N K C I J E 9.3. S T A V E K r e t u r n 9.4. K L I C F U N K C I J E I N P R E N O S P A R A M E T R O V 9.5. P R E K R I V

Prikaži več

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Procesorji Model računalnika, mikrokrmilnik CPE = mikrosekvenčnik + podatkovna

Prikaži več

Microsoft PowerPoint - Objekti_gradnja.ppt

Microsoft PowerPoint - Objekti_gradnja.ppt Naredimo razred Katera so stanja/lastnosti Kaj hočemo o objektih te vrste vedeti Kakšne lastnosti imajo Katere so metode Kakšno je znanje objektov Na katere ukaze se odzovejo Način predstavitve lastnosti

Prikaži več

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Programirljivi Digitalni Sistemi Digitalni sistem Digitalni sistemi na integriranem vezju Digitalni sistem

Prikaži več

Microsoft Word - UP_Lekcija04_2014.docx

Microsoft Word - UP_Lekcija04_2014.docx 4. Zanka while Zanke pri programiranju uporabljamo, kadar moramo stavek ali skupino stavkov izvršiti večkrat zaporedoma. Namesto, da iste (ali podobne) stavke pišemo n-krat, jih napišemo samo enkrat in

Prikaži več

Diapozitiv 1

Diapozitiv 1 RAČUNALNIŠKA ARHITEKTURA 5 Operandi RA - 5 2018, Škraba, Rozman, FRI Predstavitev informacije - vsebina 5 Operandi - cilji: Razumevanje različnih formatov zapisovanja operandov Abecede (znaki) Števila

Prikaži več

Slide 1

Slide 1 Tehnike programiranja PREDAVANJE 10 Uvod v binarni svet in računalništvo (nadaljevanje) Logične operacije Ponovitev in ilustracija Logične operacije Negacija (eniški komplement) Negiramo vse bite v besedi

Prikaži več

Strojna oprema

Strojna oprema Asistenta: Mira Trebar, Miha Moškon UIKTNT 2 Uvod v programiranje Začeti moramo razmišljati algoritmično sestaviti recept = napisati algoritem Algoritem za uporabo poljubnega okenskega programa. UIKTNT

Prikaži več

Priloga 1: Pravila za oblikovanje in uporabo standardiziranih referenc pri opravljanju plačilnih storitev Stran 4012 / Št. 34 / Uradni lis

Priloga 1: Pravila za oblikovanje in uporabo standardiziranih referenc pri opravljanju plačilnih storitev Stran 4012 / Št. 34 / Uradni lis Priloga 1: Pravila za oblikovanje in uporabo standardiziranih referenc pri opravljanju plačilnih storitev Stran 4012 / Št. 34 / 24. 5. 2019 Uradni list Republike Slovenije PRILOGA 1 PRAVILA ZA OBLIKOVANJE

Prikaži več

Microsoft Word - M docx

Microsoft Word - M docx Š i f r a k a n d i d a t a : ržavni izpitni center *M15178112* SPOMLNSKI IZPITNI ROK Izpitna pola 2 Četrtek, 4. junij 2015 / 90 minut ovoljeno gradivo in pripomočki: Kandidat prinese nalivno pero ali

Prikaži več

Simulator izvajanja javanske zložne kode

Simulator izvajanja javanske zložne kode Univerza v Ljubljani Fakulteta za računalništvo in informatiko Matevž Fabjančič Simulator izvajanja javanske zložne kode DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA

Prikaži več

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefonih. Obstaja precej različic, sam pa sem sestavil meni

Prikaži več

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje priročno programsko okolje tolmač interpreter (ne prevajalnik)

Prikaži več

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo Turingov stroj in programiranje Barbara Strniša 12. 4. 2010 1 Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolov (običajno Σ 2) Σ n = {s 1 s 2... s n ; s i Σ, i =

Prikaži več

Microsoft Word - CNC obdelava kazalo vsebine.doc

Microsoft Word - CNC obdelava kazalo vsebine.doc ŠOLSKI CENTER NOVO MESTO VIŠJA STROKOVNA ŠOLA STROJNIŠTVO DIPLOMSKA NALOGA Novo mesto, april 2008 Ime in priimek študenta ŠOLSKI CENTER NOVO MESTO VIŠJA STROKOVNA ŠOLA STROJNIŠTVO DIPLOMSKA NALOGA Novo

Prikaži več

Microsoft PowerPoint - Java_spremenljivke

Microsoft PowerPoint - Java_spremenljivke Java Spremenljivke, prireditveni stavek Spremenljivke Prostor, kjer hranimo vrednosti Ime Znak, števka, _ Presledkov v imenu ne sme biti! Tip spremenljivke int (cela števila) Vse spremenljivke napovemo

Prikaži več

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se velikokrat zmoti. Na srečo piše v programu Microsoft

Prikaži več

ARS1

ARS1 Nepredznačena in predznačena cela števila Dvojiški zapis Nepredznačeno Predznačeno 0000 0 0 0001 1 1 0010 2 2 0011 3 3 Pri odštevanju je stanje C obratno (posebnost ARM)! - če ne prekoračimo 0 => C=1 -

Prikaži več

Microsoft Word - M _mod..docx

Microsoft Word - M _mod..docx Državni izpitni center *M17278113* JESENSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Ponedeljek, 28. avgust 2017 SPLOŠNA MATURA Državni izpitni center Vse pravice pridržane. M172-781-1-3 2 IZPITNA POLA 1 1

Prikaži več

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov Gospodarski subjekti Definicija: V skladu z 2. členom Izvedbene uredbe Komisije (EU) 2018/574

Prikaži več

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega)

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega) GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega) in za vsako napisati svojo kodo. Dve ikoni imata isto

Prikaži več

Navodila:

Navodila: 1 Napišite zaporedje ukazov, ki vrednost enobajtne spremenljivke STEV1 prepiše v enobajtno spremenljivko STEV2. Nalogo rešite z neposrednim naslavljanjem (zaporedje lahko vsebuje le 2 ukaza v zbirniku

Prikaži več

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvantnih celičnih avtomatov SEMINARSKA NALOGA Univerzitetna

Prikaži več

Zadeva: Ponudba

Zadeva: Ponudba Navodila za urejanje Spletne strani CTEK.si 1. Dodajanje novega polnilnika Za dodajanje novega polnilnika nikoli ne prepisujte že objavljenih vsebin, ampak sledite tem navodilom. Ta so zagotovilo, da bodo

Prikaži več

STAVKI _5_

STAVKI _5_ 5. Stavki (Teoremi) Vsebina: Stavek superpozicije, stavek Thévenina in Nortona, maksimalna moč na bremenu (drugič), stavek Tellegena. 1. Stavek superpozicije Ta stavek določa, da lahko poljubno vezje sestavljeno

Prikaži več

6.1 Uvod 6 Igra Chomp Marko Repše, Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru

6.1 Uvod 6 Igra Chomp Marko Repše, Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru 6.1 Uvod 6 Igra Chomp Marko Repše, 30.03.2009 Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru in na končni ali neskončni čokoladi. Igralca si izmenjujeta

Prikaži več

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA Navdih Poizvedovanje po BD podatkovnih virih, ki imajo časovno dimenzijo in so dostopni. Večji promet pomeni večje število dobrin in močnejšo

Prikaži več

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: +386 1 729 6 460 Faks.: +386 1 729 6 466 www.nevtrin.si info@elektrina.si USB RFID READER Navodila za uporabo?

Prikaži več

PowerPointova predstavitev

PowerPointova predstavitev INTRANET - DETEKTIV Detektivska zbornica Republike Slovenije Pozdravljeni, v kratki predstaviti in navodilih za delo z intranet sistemom Detektiv. Intranet članom Detektivske zbornice RS omogoča, da: -

Prikaži več

COBISS3/Medknjižnična izposoja

COBISS3/Medknjižnična izposoja 3/Medknjižnična izposoja 2.2 KATALOG Katalog nam omogoča: iskanje gradiva prikaz izbranih bibliografskih zapisov ali pripadajočih podatkov o zalogi iz lokalne baze podatkov v formatu COMARC vpogled v stanje

Prikaži več

Spoznajmo PowerPoint 2013

Spoznajmo PowerPoint 2013 Spoznajmo PowerPoint 2013 13 Nova predstavitev Besedilo v predstavitvi Besedilo, ki se pojavlja v predstavitvah lahko premaknemo kamorkoli v diapozitivu. Kadar izdelamo diapozitiv z že ustvarjenimi okvirji

Prikaži več

APS1

APS1 Algoritmi in podatkovne strukture 1 Visokošolski strokovni študij Računalništvo in informatika Abstraktni podatkovni tipi Jurij Mihelič, UniLj, FRI Podatkovni tipi Razvil Pascal, Oberon itd. Software is

Prikaži več

Orodje za izvoz podatkov

Orodje za izvoz podatkov Pomoč uporabnikom -NA-SI-200, V6.13-00 IZUM, 2018 COBISS, COMARC, COBIB, COLIB, IZUM so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Uvod... 1 2 Predstavitev orodja za izvoz podatkov...

Prikaži več

Uradni list RS - 12(71)/2005, Mednarodne pogodbe

Uradni list RS - 12(71)/2005, Mednarodne pogodbe PRILOGA 3 Osnovne značilnosti, ki se sporočajo za usklajevanje 1. Zgradba podatkovne zbirke Podatkovno zbirko sestavljajo zapisi, ločeni po znakovnih parih "pomik na začetek vrstice pomik v novo vrstico"

Prikaži več

Slide 1

Slide 1 Projektno vodenje PREDAVANJE 7 doc. dr. M. Zajc matej.zajc@fe.uni-lj.si Projektno vodenje z orodjem Excel Predstavitev Najbolj razširjeno orodje za delo s preglednicami Dva sklopa funkcij: Obdelava številk

Prikaži več

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna stran: http://www.coks.si/ Elektronski naslov: podpora@coks.si

Prikaži več

Diapozitiv 1

Diapozitiv 1 RAČUNALNIŠKA ARHITEKTURA 9 Pomnilniška hierarhija RA - 9 2018, Škraba, Rozman, FRI Pomnilniška hierarhija - vsebina 9 Pomnilniška hierarhija - cilji: Osnovno razumevanje : Lokalnosti pomnilniških dostopov

Prikaži več

Microsoft PowerPoint - Java-rekurzija.ppt

Microsoft PowerPoint - Java-rekurzija.ppt Pesmica Živel je mož, imel je psa, lepo ga je učil. Nekoč ukradel mu je kos mesa, zato ga je ubil. Postavil mu je spomenik in nanj napisal: Živel je mož, imel je psa, lepo ga je učil. Nekoč ukradel mu

Prikaži več

Datum in kraj

Datum in kraj Ljubljana, 5. 4. 2017 Katalog znanj in vzorci nalog za izbirni izpit za vpis na magistrski študij Pedagoško računalništvo in informatika 2017/2018 0 KATALOG ZNANJ ZA IZBIRNI IZPIT ZA VPIS NA MAGISTRSKI

Prikaži več

ACAD-BAU-Analiza-prostorov

ACAD-BAU-Analiza-prostorov ANALIZA PROSTOROV Ko obdelujemo večje projekte, je analiza prostorov zelo pomembna v vseh fazah projektiranja. Pri idejnem snovanju moramo npr. za določeno površino trgovske namembnosti zagotoviti primerno

Prikaži več

Microsoft PowerPoint - Lapajne&Randl2015.pptx

Microsoft PowerPoint - Lapajne&Randl2015.pptx RAZISKAVA OB PREDVIDENI SELITVI KNJIŽNIC OHK Raziskava je potekala v okviru predmetov Raziskovalne metode in Uporabniki informacijskih virov in storitev pod mentorstvom treh profesorjev (dr. Pisanski,

Prikaži več

Navodila za pripravo oglasov na strani Med.Over.Net v 2.2 Statistično najboljši odziv uporabnikov je na oglase, ki hitro in neposredno prenesejo osnov

Navodila za pripravo oglasov na strani Med.Over.Net v 2.2 Statistično najboljši odziv uporabnikov je na oglase, ki hitro in neposredno prenesejo osnov Navodila za pripravo oglasov na strani Med.Over.Net v 2.2 Statistično najboljši odziv uporabnikov je na oglase, ki hitro in neposredno prenesejo osnovno sporočilo. Izogibajte se daljših besedil in predolgih

Prikaži več

CelotniPraktikum_2011_verZaTisk.pdf

CelotniPraktikum_2011_verZaTisk.pdf Elektrotehniški praktikum Osnove digitalnih vezij Namen vaje Videti, kako delujejo osnovna dvovhodna logi na vezja v obliki integriranih vezij oziroma, kako opravljajo logi ne funkcije Boolove algebre.

Prikaži več

Excel 2016

Excel 2016 PRIDOBIVANJE TEMELJN IH IN POKLICNIH KOMPETENC OD 2019 DO 2022 HIPERPOVEZAVA Gradivo za interno uporabo AVTOR: Belinda Lovrenčič Gradivo ni lektorirano V Maj 2019 Operacijo sofinancira Evropska unija,

Prikaži več

Diapozitiv 1

Diapozitiv 1 Pogojni stavek Pogojni (if) stavek Tip bool Primerjanje Uranič Srečo If stavek Vsi dosedanji programi so se izvajali zaporedoma, ni bilo nobenih vejitev Program razvejimo na osnovi odločitev pogojnega

Prikaži več

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5. februar 2018 Navodila Pazljivo preberite

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5. februar 2018 Navodila Pazljivo preberite Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost Pisni izpit 5 februar 018 Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Nalog je

Prikaži več

Microsoft Word - Seštevamo stotice.doc

Microsoft Word - Seštevamo stotice.doc UČNA PRIPRAVA: MATEMATIKA UČNI SKLOP: Računske operacije UČNA TEMA: Seštevamo in odštevamo stotice Seštevamo stotice UČNE METODE: razlaga, prikazovanje, demonstracija, grafično in pisno delo UČNE OBLIKE:

Prikaži več

NAVODILA AVTORJEM PRISPEVKOV

NAVODILA AVTORJEM PRISPEVKOV Predmetna komisija za nižji izobrazbeni standard matematika Opisi dosežkov učencev 6. razreda na nacionalnem preverjanju znanja Slika: Porazdelitev točk pri matematiki (NIS), 6. razred 1 ZELENO OBMOČJE

Prikaži več

Delavnica Načrtovanje digitalnih vezij

Delavnica Načrtovanje digitalnih vezij Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Osnove jezika VHDL Strukturno načrtovanje in testiranje Struktura vezja s komponentami

Prikaži več

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje: Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje: 17.07.2013 Ver. 2.9.1.2 Spletni portal članov uporabniška navodila

Prikaži več

Microsoft Word - ELEKTROTEHNIKA2_ junij 2013_pola1 in 2

Microsoft Word - ELEKTROTEHNIKA2_ junij 2013_pola1 in 2 Šifra kandidata: Srednja elektro šola in tehniška gimnazija ELEKTROTEHNIKA PISNA IZPITNA POLA 1 12. junij 2013 Čas pisanja 40 minut Dovoljeno dodatno gradivo in pripomočki: Kandidat prinese nalivno pero

Prikaži več

Objektno usmerjeno programiranje

Objektno usmerjeno programiranje Objektno usmerjeno programiranje Izrazoslovje OOP Razred pomeni kategorijo stvari Ime razreda lahko v Javi uporabimo kot tip polja ali lokalne spremenljivke ali kot povratni tip funkcije (metode) Objekt

Prikaži več

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov 4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenovalec, ter iz ulomkove črte. Racionalna števila so števila,

Prikaži več

BiokemInfo - Pregled funkcij

BiokemInfo - Pregled funkcij Navodila veljajo tako za Microsoft Excel (v slednjem so pripravljeni tudi prikazani primeri) kot tudi za OpenOffice Calc. Med obema programoma obstajajo malenkostne, a ne bistvene razlike. Celice naslavljamo

Prikaži več

Microsoft Word - M docx

Microsoft Word - M docx Š i f r a k a n d i d a t a : Državni izpitni center *M15245112* JESENSKI IZPITNI ROK Izpitna pola 2 / 90 minut Dovoljeno gradivo in pripomočki: Kandidat prinese nalivno pero ali kemični svinčnik in računalo.

Prikaži več

Diapozitiv 1

Diapozitiv 1 Računalništvo in informatika Program: Mehatronika dr. Hubert Fröhlich, univ. dipl. el. Podatkovne baze 2 Podatkovne baze Podatki osnova za odločanje in izvajanje akcij tiskana oblika elektronska oblika

Prikaži več

Microsoft Word - N _moderacija.docx

Microsoft Word - N _moderacija.docx 2 N151-401-2-2 SPLOŠNA NAVODILA Prosimo, da moderirano različico navodil za vrednotenje dosledno upoštevate. Če učenec pravilno reši nalogo na svoj način (ki je matematično korekten) in je to razvidno

Prikaži več

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be Ime in priimek: Vpisna št: FAKULEA ZA MAEMAIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6 julij 2018 Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Za pozitiven rezultat

Prikaži več

Microsoft Word - M doc

Microsoft Word - M doc Državni izpitni center *M11145113* INFORMATIKA SPOMLADANSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Petek, 10. junij 2011 SPLOŠNA MATURA RIC 2011 2 M111-451-1-3 IZPITNA POLA 1 1. b 2. a 3. Pojem se povezuje

Prikaži več

Microsoft PowerPoint - OAPS1- P12.ppt

Microsoft PowerPoint - OAPS1- P12.ppt Univerza v Ljubljani Fakulteta za računalništvo in informatiko Igor Rožanc Osnove algoritmov in podatkovnih struktur I (OAPS I) 2. letnik, VSP Računalništvo in informatika, vse smeri PROSOJNICE ZA 12.

Prikaži več

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc)

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc) MORSE UČENJE PO KOCHOVI METODI Računalniški program za učenje skupaj z nekaterimi dodatnimi datotekami dobite na spletni strani avtorja: http://www.g4fon.net/. Zanimive strani so tudi: - http://www.qsl.net/n1irz/finley.morse.html

Prikaži več

4. tema pri predmetu Računalniška orodja v fiziki Ljubljana, Grafi II Jure Senčar

4. tema pri predmetu Računalniška orodja v fiziki Ljubljana, Grafi II Jure Senčar 4. tema pri predmetu Računalniška orodja v fiziki Ljubljana, 6.4.29 Grafi II Jure Senčar Relativna sila krčenja - F/Fmax [%]. Naloga Nalogo sem delal v Excelu. Ta ima vgrajeno funkcijo, ki nam vrne logaritemsko

Prikaži več

Računalniški praktikum Projektna naloga - Izdelava spletne strani Avtor: Matej Tekavčič Skupina: Matej Tekavčič - koordinator Simon Vrhovnik Tine Kavč

Računalniški praktikum Projektna naloga - Izdelava spletne strani Avtor: Matej Tekavčič Skupina: Matej Tekavčič - koordinator Simon Vrhovnik Tine Kavč Računalniški praktikum Projektna naloga - Izdelava spletne strani Avtor: Matej Tekavčič Skupina: Matej Tekavčič - koordinator Simon Vrhovnik Tine Kavčič Matjaž Jerman 8. februar 2006 Kazalo 1 Uvod 2 2

Prikaži več

INFORMATOR BIROKRAT 1/2011

INFORMATOR BIROKRAT 1/2011 ta Veleprodaja Maloprodaja Storitve Računovodstvo Proizvodnja Gostinstvo Turizem Hotelirstvo Ticketing CRM Internetna trgovina Izdelava internetnih strani Grafično oblikovanje NOVOSTI IN NASVETI ZA DELO

Prikaži več

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk 1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatkov in njihov prenos med spletnimi mesti. Obrazec v

Prikaži več

Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij.

Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij. Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij. Protokoli - uvod Protokol je pravilo ali zbirka pravil, ki določajo načine transporta sporočil po računalniškem omrežju

Prikaži več

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX 3.5 1. Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nastavitve strežnika ESX 3. Namestitev in nastavitve VM

Prikaži več

5 Programirljiva vezja 5.1 Kompleksna programirljiva vezja - CPLD Sodobna programirljiva vezja delimo v dve veliki skupini: CPLD in FPGA. Vezja CPLD (

5 Programirljiva vezja 5.1 Kompleksna programirljiva vezja - CPLD Sodobna programirljiva vezja delimo v dve veliki skupini: CPLD in FPGA. Vezja CPLD ( 5 Programirljiva vezja 5.1 Kompleksna programirljiva vezja - CPLD Sodobna programirljiva vezja delimo v dve veliki skupini: CPLD in FPGA. Vezja CPLD (angl. Complex Programmable Logic Device) so manjša

Prikaži več

Naloge 1. Dva električna grelnika z ohmskima upornostma 60 Ω in 30 Ω vežemo vzporedno in priključimo na idealni enosmerni tokovni vir s tokom 10 A. Tr

Naloge 1. Dva električna grelnika z ohmskima upornostma 60 Ω in 30 Ω vežemo vzporedno in priključimo na idealni enosmerni tokovni vir s tokom 10 A. Tr Naloge 1. Dva električna grelnika z ohmskima upornostma 60 Ω in 30 Ω vežemo vzporedno in priključimo na idealni enosmerni tokovni vir s tokom 10 A. Trditev: idealni enosmerni tokovni vir obratuje z močjo

Prikaži več

DES

DES Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Model vezja Računalniški model in realno vezje Model logičnega negatorja Načini

Prikaži več

Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C#

Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C# Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C# Pomen posameznih oken uporabniškega vmesnika, urejevalnik

Prikaži več

Iztok KOSEM in Špela ARHAR HOLDT Trojina, zavod za uporabno slovenistiko ANALIZA BESEDIŠČA IN SKLADNJE V BESEDILIH TESTA BRALNE PISMENO

Iztok KOSEM in Špela ARHAR HOLDT Trojina, zavod za uporabno slovenistiko   ANALIZA BESEDIŠČA IN SKLADNJE V BESEDILIH TESTA BRALNE PISMENO Iztok KOSEM in Špela ARHAR HOLDT Trojina, zavod za uporabno slovenistiko www.trojina.si ANALIZA BESEDIŠČA IN SKLADNJE V BESEDILIH TESTA BRALNE PISMENOSTI PISA 2009 TEMA POROČILA PISA (The Programme for

Prikaži več

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajanje prekinitvene rutine Dogodek GLAVNI PROGRAM (MAIN-OB1)

Prikaži več

Nameščanje Adopt Open Java Development Kit 8

Nameščanje Adopt Open Java Development Kit 8 Nameščanje Adopt Open Java Development Kit 8 za Windows x64 IZUM, 2019 IZUM, COBISS, COMARC, COBIB, COLIB, CONOR, SICRIS, E-CRIS so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Uvod...

Prikaži več

Vaja 3 Kopiranje VM in namestitev aplikacij - strežnik SQL 2000 SP3a A. Lokalni strežnik Vmware ESX Dodajanje uporabnikov vajexx v skupino Vaje

Vaja 3 Kopiranje VM in namestitev aplikacij - strežnik SQL 2000 SP3a A. Lokalni strežnik Vmware ESX Dodajanje uporabnikov vajexx v skupino Vaje Vaja 3 Kopiranje VM in namestitev aplikacij - strežnik SQL 2000 SP3a A. Lokalni strežnik Vmware ESX 3.5 1. Dodajanje uporabnikov vajexx v skupino Vaje 2. Kopiranje Win2003 strežnika in registracija na

Prikaži več

DODATEK_F8

DODATEK_F8 COMARC/B F.8 F.8 Tabela polj/podpolj s stopnjo obveznosti za posamezen bibliografski nivo V tabeli je podana obveznost polj/podpolj (o - obvezen podatek, p - obvezen podatek, če obstaja, in n - neobvezen

Prikaži več

APS1

APS1 Algoritmi in podatkovne strukture 1 Visokošolski strokovni študij Računalništvo in informatika Algoritmi in problemi Jurij Mihelič, UniLj, FRI Algoritmi Izvor izraza al-khwārizmī algoritmi Sem Muhammad

Prikaži več

Chapter 1

Chapter 1 - 1 - Poglavje 1 Uvod v podatkovne baze - 2 - Poglavje 1 Cilji (Teme).. Nekatere domene, kjer se uporabljajo podatkovne baze Značilnosti datotečnih sistemov Problemi vezani na datotečne sisteme Pomen izraza

Prikaži več

INFORMATOR BIROKRAT 1/2011

INFORMATOR BIROKRAT 1/2011 ta Veleprodaja Maloprodaja Storitve Računovodstvo Proizvodnja Gostinstvo Turizem Hotelirstvo Ticketing CRM Internetna trgovina Izdelava internetnih strani Grafično oblikovanje NOVOSTI IN NASVETI ZA DELO

Prikaži več

Nameščanje Adopt Open Java Development Kit 8

Nameščanje Adopt Open Java Development Kit 8 Nameščanje Adopt Open Java Development Kit 8 za Windows x64 IZUM, 2019 IZUM, COBISS, COMARC, COBIB, COLIB, CONOR, SICRIS, E-CRIS so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Uvod...

Prikaži več

Navodila Trgovina iCenter

Navodila Trgovina iCenter Napredovanja v plačne razrede javnih uslužbencev 2019 S pomočjo SAOP programa Kadrovska evidenca lahko ob dokupljeni kodi vodimo napredovanja javnih uslužbencev. Za napredovanja v letu 2019 je potrebno

Prikaži več

NAVODILA ZA IZPOLNJEVANJE ELEKTRONSKEGA OBRAZCA ZA PRIJAVO IN PREKLIC DIGITALNIH POTRDIL Verzija Datum Opis sprememb dokumenta dokumenta

NAVODILA ZA IZPOLNJEVANJE ELEKTRONSKEGA OBRAZCA ZA PRIJAVO IN PREKLIC DIGITALNIH POTRDIL Verzija Datum Opis sprememb dokumenta dokumenta NAVODILA ZA IZPOLNJEVANJE ELEKTRONSKEGA OBRAZCA ZA PRIJAVO IN PREKLIC DIGITALNIH POTRDIL Verzija Datum Opis sprememb dokumenta dokumenta 1.0 22.11.2013 Prva verzija dokumenta 1.1 15.04.2015 Dodana možnost

Prikaži več

CODEKS IP KAMERA

CODEKS IP KAMERA CODEKS IP KAMERA uporabniška navodila Vse pravice pridržane. Noben del uporabniških navodil se ne sme reproducirati v kakršnikoli obliki ali na kakršen koli način - grafični, elektronski ali mehanski,

Prikaži več

Microsoft Word - PRO1_2_Java_2015_12_22

Microsoft Word - PRO1_2_Java_2015_12_22 ŠOLSKI CENTER VELENJE VIŠJA STROKOVNA ŠOLA Višješolski strokovni program: Informatika PROGRAMIRANJE (1. in 2. letnik) JAVAA Gradivo za interno uporabo (delovna verzija) Sestavil: Srečko Zorman Velenje,

Prikaži več

DN5(Kor).dvi

DN5(Kor).dvi Koreni Število x, ki reši enačbo x n = a, imenujemo n-ti koren števila a in to označimo z n a. Pri tem je n naravno število, a pa poljubno realno število. x = n a x n = a. ( n a ) n = a. ( n a ) m = n

Prikaži več

Analiza vpliva materiala, maziva in aktuatorja na dinamiko pnevmatičnega ventila

Analiza vpliva materiala, maziva in aktuatorja na dinamiko pnevmatičnega ventila Programsko orodje LabVIEW za kreiranje, zajem in obdelavo signalov (statične in dinamične karakteristike hidravličnih proporcionalnih ventilov) Marko Šimic Telefon: +386 1 4771 727 e-mail: marko.simic@fs.uni-lj.si

Prikaži več

(Microsoft Word - MSDN AA Navodila za \232tudente FS.doc)

(Microsoft Word - MSDN AA Navodila za \232tudente FS.doc) 1. Pogoji uporabe programske opreme Pred uporabo programske opreme iz programa MSDNAA morate prebrati in se strinjati s pogoji in določili Licenčne pogodbe za končnega uporabnika programske opreme MSDN

Prikaži več

Programska sprememba oddelka šole

Programska sprememba oddelka šole Pomoč uporabnikom Programska sprememba oddelka šole -NA-SI-355, V1.0 IZUM, 2018 COBISS, COMARC, COBIB, COLIB, IZUM so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE 1 Navodila... 1 2 Postopek...

Prikaži več

DES11_realno

DES11_realno Laboratorij za načrtovanje integriranih vezij Univerza v Ljubljani Fakulteta za elektrotehniko Digitalni Elektronski Sistemi Delovanje realnega vezja Omejitve modela vezja 1 Model v VHDLu je poenostavljeno

Prikaži več

Watch 40_MT40X_UM_SL.pdf

Watch 40_MT40X_UM_SL.pdf Navodila za uporabo MT40X Vsebina 1 1 Glej pregled... 1 Tipka za vklop/izklop... 1 2 2 Odstranite trakove... 2 Pripenjanje novih trakov... 3 3 3... 3... 4 Vklop ure... 4... 4 Jezik... 4 4 5 5 5 6 6 7...

Prikaži več

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf uporaba for zanke i iz korak > 0 oblika zanke: for i iz : korak : ik NE i ik DA stavek1 stavek2 stavekn stavek1 stavek2 stavekn end i i + korak I&: P-XI/1/17 uporaba for zanke i iz korak < 0 oblika zanke:

Prikaži več

Microsoft Word - A-3-Dezelak-SLO.doc

Microsoft Word - A-3-Dezelak-SLO.doc 20. posvetovanje "KOMUNALNA ENERGETIKA / POWER ENGINEERING", Maribor, 2011 1 ANALIZA OBRATOVANJA HIDROELEKTRARNE S ŠKOLJČNIM DIAGRAMOM Klemen DEŽELAK POVZETEK V prispevku je predstavljena možnost izvedbe

Prikaži več

Microsoft Word - SI_vaja1.doc

Microsoft Word - SI_vaja1.doc Univerza v Ljubljani, Zdravstvena fakulteta Sanitarno inženirstvo Statistika Inštitut za biostatistiko in medicinsko informatiko Š.l. 2011/2012, 3. letnik (1. stopnja), Vaja 1 Naloge 1. del: Opisna statistika

Prikaži več

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar 2009 1 Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero velja 0 f(e) u(e) za e E(G). Za v V (G) definiramo presežek

Prikaži več

UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Milan Gabor Analiza varnostnih tveganj v mobilnih aplikacijah na platfor

UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Milan Gabor Analiza varnostnih tveganj v mobilnih aplikacijah na platfor UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Milan Gabor Analiza varnostnih tveganj v mobilnih aplikacijah na platformi Android Diplomsko delo Maribor, avgust 2016 ANALIZA

Prikaži več