Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembler.

Samankaltaiset esitykset


Esitys aiheesta: "TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembler."— Esityksen transkriptio:

1 TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembler

2 Loogiset piirit Assembler Tietokonealusta Konekieli Assembly kieli Virtual machine Korkeantason kieli Assembler on ohjelma, joka kääntää Assembly kielisen ohjelman konekielelle Konekieli on joukko binäärisiä ”sanoja” jotka vastaavat prosessorin käskyjä Assembly kieli antaa binäärisille bittijoukoille paremmin muistettavat vastineet, esim. – 1111110111001000 – M=M-1 Jokaiselle prosessorityypille on oma konekieli ja siten myös assembly kieli

3 Toimintalogiikka Toista, kunnes.asm tiedoston EOF – Lue seuraava Assembly kielinen komento – Paloittele komento osiin – Hae osia vastaava binäärikoodi – Yhdistä koodit yhdeksi 16-bittiseksi konekieliseksi käskyksi – Anna ulostulona konekielinen koodi (kirjoita.hack tiedostoon uusi rivi)

4 Ilman symboleita Jos tyhjä rivi tai kommentti  ei tehdä mitään Jos alkaa @ -merkillä, niin A-käsky Esim. String “@9”  pitää muuttaa “0000000000001001” Jos ei, niin tutkitaan löytyykö riviltä = -merkkiä ja ; -merkkiä, jotta saadaan selville mitkä (dest=comp;jump) osat käskyssä on Selvitetään dest osaa vastaava binääriluku Selvitetään comp osaa vastaava binääriluku Selvitetään jump osaa vastaava binääriluku Kasataan 16-bittinen konekielinen C-käsky yhdistämällä osat Voidaan olettaa että kommentit alkavat aina rivin alusta ja rivien lopussa ei ole kommentteja

5 Symboleiden kanssa Käydään koodi läpi etsimällä symbolit, esim. @sum tai @LOOP tai (LOOP) – Lisäksi riveiltä poistetaan kaikki kommentit ja kommenttien jälkeiset merkit, jos niitä on, esim. – D=M // D = first number Kahdenlaisia symboleita – Muuttujia, joille pitää varata muistiosoite (@sum) – Osoitteita joihin pitää hypätä, eli jossain on (LOOP), jonka rivinumero tulee selvittää Käydään ensin läpi löytyykö symbolia vastaava hyppypaikka eli symboli suluissa (esim. (LOOP)) – Löytyykö sulkuja? Jos löytyy, lisää suluissa oleva symboli taulukkoon ja tallenna sulku-rivin alapuolisen rivin numero vastaamaan symbolia Sen jälkeen käydään koodi uudestaan läpi, etsien symboleita, esim. @sum tai @LOOP Jos symboli taulukossa, niin se on hyppy-symboli Jos symbolia ei taulukossa, kyseessä on muuttuja, jolle pitää varata paikka RAM muistista (aloitetaan muistipaikasta 16) Symboolitaulukon toteutus esim. Javan hashtable:lla Kun taulu valmis korvataan symbolit niitä vastaavilla osoitteilla Lisäksi taulussa pitää olla muutama etukäteen määritelty symboli, jotka pitää muuttaa RAM osoitteiksi, esim. SCREEN

6 Assemblerin toteutus Millä tahansa ohjelmointikielellä Suositeltava arkkitehtuuri – Parser moduuli: purkaa käskyt osiin – Code moduuli: kääntää osat binääriseksi – SymbolTable moduuli: hallinnoi symbolitaulua – Main moduuli: tiedoston luku/kirjoitus, käyttää yo. moduuleja ulostulon rakentamiseen Testaa Assembleriasi testiohjelmilla (add.asm etc.) – Versiot ilman symboleita tai symboleiden kanssa Lopuksi voit verrata Assembler simulaattorilla simulaattorin kääntämää koodia sinun Assemblerin kääntämään koodiin

7 dest=comp;jump Binäärinen: 1 1 1 a c1 c2 c3 c4 c5 c6 d1 d2 d3 j1 j2 j3 compdest jump C-instruction Not used @47 // 0000000000101111 D=A // 111accccccdddjjj @47 // 0000000000101111 D=M// 111accccccdddjjj @47 // 0000000000101111 0;JMP // 111accccccdddjjj

8 (a=0)c1 c2 c3 c4 c5 c6(a=1) 0 1 0 1 0 1 0 1 1 1 1 1 1 1 -1 1 1 1 0 1 0 D 0 0 1 1 0 0 A 1 1 0 0 0 0 M !D 0 0 1 1 0 1 !A 1 1 0 0 0 1 !M -D 0 0 1 1 1 1 -A 1 1 0 0 1 1 -M D+1 0 1 1 1 1 1 A+1 1 1 0 1 1 1 M+1 D-1 0 0 1 1 1 0 A-1 1 1 0 0 1 0 M-1 D+A 0 0 0 0 1 0 D+M D-A 0 1 0 0 1 1 D-M A-D 0 0 0 1 1 1 M-D D&A 0 0 0 0 0 0 D&M D|A 0 1 0 1 0 1 D|M Comp(ute)

9 j1 j2 j3 (out 0) Mnemonic Effect 0 0 0 null No jump 0 0 1 JGT If out > 0 jump 0 1 0 JEQ If out = 0 jump 0 1 1 JGE If out ≥ 0 jump 1 0 0 JLT If out < 0 jump 1 0 1 JNE If out ≠ 0 jump 1 1 0 JLE If out ≤ 0 jump 1 1 1 JMP Jump Hyppykäskyt Mnemonic ≈ muistisääntö (assembly kielinen toteutus)

10 Dest(ination) d1 d2 d3 Mnemonic Destination (minne tallennetaan) 0 0 0null Operaation tulosta ei tallenneta 0 0 1M Memory[A] (RAM muistipaikka A) 0 1 0D D register 0 1 1 MD Memory[A] and D register 1 0 0 A A register 1 0 1 AM A register and Memory[A] 1 1 0 AD A register and D register 1 1 1 AMD A register, Memory[A], and D register


Lataa ppt "TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembler."

Samankaltaiset esitykset


Iklan oleh Google