WEBVTT Kind: captions; Language: fi 1 00:00:00.850 --> 00:00:05.910 [Tekstitys on automaattisesti luotu ja jälkeenpäin editoitu...] 2 00:00:05.910 --> 00:00:09.710 No niin! Itkosen Jonne nauhoittaa jotain ... tästä tulee 3 00:00:09.710 --> 00:00:12.910 ehkä aihevideo tai sitten tästä ei tule. 4 00:00:12.910 --> 00:00:19.850 Mutta koska Paavo on poissa piilossa hus niin minä pääsin hyppimään pöydälle ja nyt me 5 00:00:19.850 --> 00:00:28.170 puhutaan semmoisesta kivasta asiasta kuin ... [säheltää ja sönköttää] ... 6 00:00:28.170 --> 00:00:32.950 Little Man Computer. Miksi me puhutaan Little Man Computerista? 7 00:00:32.950 --> 00:00:37.030 Tää on pieni tietokone tai tää on pieni simulaatio pienestä tietokoneesta. 8 00:00:37.030 --> 00:00:41.310 Eli tämä on täysin kuvitteellinen tietokonejärjestelmä 9 00:00:41.310 --> 00:00:45.150 Niinkuin huomaatte, niin siellä on kaikennäköistä mukavaa. 10 00:00:45.150 --> 00:00:53.310 Tässä on CPU eli suoritin. 11 00:00:53.310 --> 00:00:56.110 Sen sisältä löytyy ne tyypilliset asiat mitä pitääkin. 12 00:00:56.110 --> 00:01:04.150 Program counter eli osoite, mistä ollaan hakemassa ohjelmakoodia tuolta muistista 13 00:01:04.150 --> 00:01:08.850 Muisti on muuten tämä iso laatikko tässä sivussa, kuten voitte olettaa. 14 00:01:08.850 --> 00:01:14.030 Täällä on instruction register, joka kertoo että mikä käsky on nyt suorituksessa, 15 00:01:14.030 --> 00:01:16.640 ja täällä on address-rekisteri, joka kertoo 16 00:01:16.640 --> 00:01:21.690 käskyn kohdeosoitteen ja täällä on akkumulaattori, eli se yksi ainoa 17 00:01:21.690 --> 00:01:24.810 tietovarasto-rekisteri suorittimessa. Sitten tähän on liittynyt 18 00:01:24.810 --> 00:01:27.440 aritmeettinen yksikkö, yleensä 19 00:01:27.440 --> 00:01:31.240 nimeltään aritmeettis-looginen yksikkö, eli se paikka jossa 20 00:01:31.240 --> 00:01:35.920 sitten suoritetaan laskutoimituksia. 21 00:01:35.920 --> 00:01:40.880 Muistin lisäksi täältä löytyy yksi syöttölaite, 22 00:01:40.880 --> 00:01:45.340 ja yksi tulostuslaite. 23 00:01:45.340 --> 00:01:49.450 OK meillä on kaikennäköistä kivaa siellä siis. 24 00:01:49.450 --> 00:01:54.660 Tämän laitteen idea on, että te pystytte tänne kirjoittamaan itse 25 00:01:54.660 --> 00:01:59.930 assembler-koodia, ja sitten pystytte ajamaan sen. 26 00:01:59.930 --> 00:02:06.090ä Täältä löytyy run-komento, jolla voi ajaa jotain ja step-komento jolla voi 27 00:02:06.090 --> 00:02:09.740 askeltaa ohjelmaa yksi askel kerrallaan. (Painikkeet tekstityksen alla :( sori) 28 00:02:09.740 --> 00:02:12.000 Emme osaa vielä kirjoittaa mitään järkevää 29 00:02:12.000 --> 00:02:15.860 tällä heti alkuun, joten tämä tämä select-painike täällä on tärkeä. 30 00:02:15.860 --> 00:02:22.440 Sen select-painikkeen takaa löytyy yksinkertaisia ohjelmia. 31 00:02:22.440 --> 00:02:29.930 Valitaan tuosta listasta esimerkiksi "add" ja me saadaan tällainen ohjelma. 32 00:02:29.930 --> 00:02:34.500 Mitä se tekee? No helppo homma - ajetaan se. 33 00:02:34.500 --> 00:02:41.630 Run. [Hyräilyä, sävellys improvisoituna tässä hetkessä. Tekijänoikeudet hyräilijällä.] 34 00:02:41.630 --> 00:02:49.660 Vähän vauhtia... jotain palloja meni tuonne, pyytää syötteen, laitetaan sinne vaikka yks. 35 00:02:49.660 --> 00:02:53.210 Syöte on taas aktiivisena. 36 00:02:53.210 --> 00:02:57.460 Laitetaan sinne vaikka 2 ... noin. 37 00:02:57.460 --> 00:03:03.040 Ja, oho, huomasikos kukaan? 38 00:03:03.040 --> 00:03:05.240 Tuonne tuli outputtiin kolmonen. 39 00:03:05.240 --> 00:03:07.960 Eli mitä tämä yksinkertainen ohjelma tekee? 40 00:03:07.960 --> 00:03:10.810 No, oltaisiin me voitu se tuolta ohjelmastakin lukea. 41 00:03:10.810 --> 00:03:16.120 Se lukee yhden numeron, tallentaa sen muistiin. 42 00:03:16.120 --> 00:03:20.940 Lukee toisen numeron, lisää siihen edellisen, tulostaa vastauksen ja pysähtyy. 43 00:03:20.940 --> 00:03:25.820 Jos mennään tätä askel kerrallaan eteenpäin... 44 00:03:25.820 --> 00:03:32.310 [Ihmettelyä.] 45 00:03:32.310 --> 00:03:40.840 Oho... Tuliko vika? Mikä vika tuli? 46 00:03:40.840 --> 00:03:46.280 Aivan! Tämä on halt-tilassa eli joka kerta kun pyydän tätä askeltamaan eteenpäin. 47 00:03:46.280 --> 00:03:48.440 Tämä kyllä menee kiltisti eteenpäin. 48 00:03:48.440 --> 00:03:53.320 Se käy hakemassa muistista seuraavan käskyn tuo sen 49 00:03:53.320 --> 00:03:58.850 tänne prosessorille suoritettavaksi, mutta se käsky on operaatio 50 00:03:58.850 --> 00:04:04.400 koodilla nolla, eli halt, eli se ei tee mitään vaikka se menee eteenpäin. 51 00:04:04.400 --> 00:04:08.550 Se ei tee mitään, vaikka se tekee. No OK. 52 00:04:08.550 --> 00:04:12.790 Elämä on. Joten... 53 00:04:12.790 --> 00:04:16.080 Mitä meidän pitäisi oikeasti tehdä? 54 00:04:16.080 --> 00:04:21.700 On sanoa ohjelmalle reset ... noin. 55 00:04:21.700 --> 00:04:25.980 Nyt se on nollatilassa ja nyt me lähdetään stepillä käymään tätä läpi. 56 00:04:25.980 --> 00:04:29.820 Ai niin, Paavon käsien heiluttelu: [heiluttaa käsiä] mielikuvamalli. 57 00:04:29.820 --> 00:04:34.670 Sori kun ette nää videolla: [kädet heiluen] mielikuvamalli. 58 00:04:34.670 --> 00:04:45.440 Tuossa alussa on muistissa 9 01. 59 00:04:45.440 --> 00:04:49.590 Mistähän me nähtäisiin, mitä se tekee? 60 00:04:49.590 --> 00:04:52.820 Tämä ei näytä meille noita operaatiokoodeja, mutta 61 00:04:52.820 --> 00:04:58.060 tuo 9 01 on sellainen komento kuin input. (Oikeasti "käytä väylää"...) 62 00:04:58.060 --> 00:05:00.020 Kokeillaan mitä tapahtuu. 63 00:05:00.020 --> 00:05:05.450 Mennään stepillä, eli meidän vielä tarkempi mielikuva on se, että kun program counterissa 64 00:05:05.450 --> 00:05:12.020 lukee nolla niin tää käy hakemassa tuosta muistiosoitteesta nolla tavun, tuo sen tänne 65 00:05:12.020 --> 00:05:17.610 tulkitsee sen komennoksi, suorittaa komennon ja siinä kaikki. 66 00:05:17.610 --> 00:05:22.730 Joten katsoa saa, stepaillaan... [Tarpeetonta sössötystä] 67 00:05:22.730 --> 00:05:31.000 Lähdettiin muistista hakemaan tavu, sieltä tulee 9 01 ... noin. 68 00:05:31.000 --> 00:05:35.300 Tuo tarkoittaa sitä, että laitetta 9 käytetään... [Kauhistuu] 69 00:05:35.300 --> 00:05:38.100 Eipäs vaan: lue laitteesta 01. 70 00:05:38.100 --> 00:05:43.940 Samalla jos huomasitte niin tuo program counter arvo kasvoi yhdellä. 71 00:05:43.940 --> 00:05:48.240 CPU laittoi sen propran counter arvon tuonne aritmeettiselle yksikölle, joka 72 00:05:48.240 --> 00:05:52.140 kävi lisäämässä sitä yhdellä ja palautti sen CPU:lle. 73 00:05:52.140 --> 00:05:55.060 No nyt täällä on input (syöttölaite) jo aktiivisena. 74 00:05:55.060 --> 00:06:00.380 Itse asiassa tuollahan lukee että "input required", joten annetaan sinne nyt vaikka. 75 00:06:00.380 --> 00:06:03.400 10. 76 00:06:03.400 --> 00:06:09.840 Ja painetaan enteriä, niin se 10 lähtee sieltä akkumulaattoriin, eli tuo input-komento, 77 00:06:09.840 --> 00:06:17.710 se lukee syöttölaitteen numeron ja tallentaa sen akkumulaattoriin. 78 00:06:17.710 --> 00:06:22.550 Seuraavaksi, program counter on ykkönen eli oletus olisi nyt se, että käydään 79 00:06:22.550 --> 00:06:26.740 ykkösmuistipaikasta hakemassa käsky ja suoritetaan. 80 00:06:26.740 --> 00:06:32.580 Samalla kasvatetaan program counteria yhdellä. 81 00:06:32.580 --> 00:06:37.900 Sinne lähti program counter ja kasvatettiin yhdellä. 82 00:06:37.900 --> 00:06:40.360 Muistipaikasta yksi lähdettiin hakemaan tietoa. 83 00:06:40.360 --> 00:06:42.480 Kun se tulee suorittimelle, se tulkitaan. 84 00:06:42.480 --> 00:06:47.380 Komento on 3 99, eli se kävi hakemassa akkumulaattorista 85 00:06:47.380 --> 00:06:55.940 arvon ja siirti sen tuonne muistipaikkaan 99. 86 00:06:55.940 --> 00:07:02.000 OK, seuraavaa input taas. Tehdään se nopeasti. 87 00:07:02.000 --> 00:07:07.700 [Hyräilyä] Huomatkaa tässä menee kakkonen tänne muistille, eli se kertoo sille muistille, 88 00:07:07.700 --> 00:07:15.600 että anna minulle tieto muistipaikasta numero 2 ja taas tuo input käynnistyi. 89 00:07:15.600 --> 00:07:20.990 Ja nyt kun painan enteriä niin inputin sisältö menee akkumulaattoriin. 90 00:07:20.990 --> 00:07:29.500 No mitä seuraavassa voisi tapahtua, "add 99"? 91 00:07:29.500 --> 00:07:32.030 [Epämääräistä pohdintaa] 92 00:07:32.030 --> 00:07:38.020 No, 99 on muistiosoite eli ilmeisesti jotain lisätään tuonne muistiin. 93 00:07:38.020 --> 00:07:46.330 Kohtaan 99 ... eli ... [Säheltää zoom-ohjelman parissa] 94 00:07:46.330 --> 00:07:50.170 Voi kun joku olisi suunnitellut tän zoomin käytettäväksi. 95 00:07:50.170 --> 00:07:51.990 Tonne muistipaikkaan 99 96 00:07:51.990 --> 00:07:54.910 ilmeisesti lisätään jotain. No mitä sinne lisätään? 97 00:07:54.910 --> 00:07:57.890 Aivan yksinkertainen asia kun tää on niin yksinkertainen tietokone! 98 00:07:57.890 --> 00:08:01.890 Meillä ei ole mitään muuta kuin tuo akkumulaattori käytettävissä. 99 00:08:01.890 --> 00:08:06.550 Anteeksi unohtui sanoa, akkumulaattori on tässä rekisteri, ihan niinku esim. EAX 100 00:08:06.550 --> 00:08:11.290 ja nämä vastaavat mitä olette käyttäneet kurssin konekielitehtävissä, eli tuo 101 00:08:11.290 --> 00:08:17.370 akkumulaattori on tässä ainut rekisteri ja käydään sieltä hakemassa 102 00:08:17.370 --> 00:08:22.310 luku ja lisätään se tuonne muistipaikassa 99 olevaan lukuun. 103 00:08:22.310 --> 00:08:25.800 Miten se tapahtuu? Katsotaan. 104 00:08:25.800 --> 00:08:31.390 [Säheltää zoomin kanssa] ja painetaan steppiä niin se kasvattaa 105 00:08:31.390 --> 00:08:35.140 program counteria ja sitten CPU käy muistipaikasta kolme hakemassa 106 00:08:35.140 --> 00:08:38.100 komennon .. sieltä tulee 1 99 107 00:08:38.100 --> 00:08:43.040 Se tulkitaan: mennään 99:stä hakemaan tavu... 108 00:08:43.040 --> 00:08:48.160 Sieltä tuli 10 se ... lisätään akkumulaattoriin ... noin. 109 00:08:48.160 --> 00:08:53.370 Minä olin väärässä! Se kävi hakemassa 99:stä luvun! 110 00:08:53.370 --> 00:08:55.590 Ja lisäsi sen akkumulaattoriin ja 111 00:08:55.590 --> 00:09:00.680 mä ajattelin väärin, että se käy tekemässä jotain tuonne muistiin. 112 00:09:00.680 --> 00:09:03.040 Aina ei ole mielikuvamallit oikeassa. 113 00:09:03.040 --> 00:09:07.960 No, nyt me tiedetään add käy hakemassa luvun ja lisää sen akkumulaattoriin 114 00:09:07.960 --> 00:09:12.800 Nyt meillä on akkumulaattorissa 30 joka nyt sattuu olemaan se meidän syötteiden 10 ja 115 00:09:12.800 --> 00:09:22.660 20 yhteenlaskettu tulos. Seuraava komento on out, no mitä se voisi tehdä? 116 00:09:22.660 --> 00:09:27.940 Jep, se ottaa akkumulaattorista tuon tiedon ja tunkee sen tuonne outputtiin. 117 00:09:27.940 --> 00:09:32.940 Jos ihan tarkkoja ollaan seuraava komento kun suoritetaan, niin program counter 118 00:09:32.940 --> 00:09:40.020 osoittamasta kohdasta käydään lukemassa muistia, eli osoitteesta 0 4 119 00:09:40.020 --> 00:09:45.520 Program counteria kasvatetaan. Sitten sieltä muistista tulee toi 9 02 se tulkitaan 120 00:09:45.520 --> 00:09:51.400 ja se 9 näköjään tarkoittaa input- output -toimintoa ja 02 tarkoittaa 121 00:09:51.400 --> 00:09:55.120 laitteelle 02 kuten tuolta näkyy (osoittaa kuvassa väylää numero 02) 122 00:09:55.120 --> 00:09:59.010 Joten se ottaa akumaattorista tavun 30 laittaa sen tonne tulostuslaitteelle 123 00:09:59.010 --> 00:10:11.530 niin katsotaas mitä tapahtuu... 124 00:10:11.530 --> 00:10:17.200 Noin just sillein siellä kävi niinku toivottiin! 125 00:10:17.200 --> 00:10:19.570 OK, näinhän se toimii. 126 00:10:19.570 --> 00:10:24.930 Akkumulaattorin arvo käytiin laittamassa tuonne outputtiin ja siinä kaikki. 127 00:10:24.930 --> 00:10:29.030 No, meillä on vielä yksi komento toteuttamatta, eli stepillä mennään taas 128 00:10:29.030 --> 00:10:33.670 eteenpäin ja sieltä tulee se halt-komento tuolta muistista 129 00:10:33.670 --> 00:10:35.470 Sitä... [epäröi] 130 00:10:35.470 --> 00:10:39.100 mä en oikein ymmärrä että minkä takia tän jälkeen tää suostuu tekemään jotain. 131 00:10:39.100 --> 00:10:42.040 Kuten huomaatte, mä voin taas ajaa seuraavan komennon... 132 00:10:42.040 --> 00:10:44.820 Eli näitä steppejä voi täällä ajaa eteenpäin, 133 00:10:44.820 --> 00:10:56.540 mutta jos mä painan tuosta tota runia. Kohta... 134 00:10:56.540 --> 00:11:02.480 ... se varmaan tän suorittaa, mutta sitten pysähtyy toi suoritus. 135 00:11:02.480 --> 00:11:08.110 Juu, se ei jatka enää eteenpäin. 136 00:11:08.110 --> 00:11:11.270 Kiva pieni ohjelma, jota saatte sanoa ihan vapaasti leluksi. 137 00:11:11.270 --> 00:11:15.870 Se on lelu, mutta se on tarkoitettu leluksi, koska leluilla on hauska leikkiä ja leikkiminen 138 00:11:15.870 --> 00:11:22.390 on hauska tapa opetella asioita ... ainakin joiden ihmisten mielen. 139 00:11:22.390 --> 00:11:28.950 Näkisin, että jos teillä on haasteita ymmärtää, mikä tietokone on, 140 00:11:28.950 --> 00:11:33.690 miten tietokone toimi niin tämänn avulla te pääsette näkemään sitä. 141 00:11:33.690 --> 00:11:36.110 Tämä ei vastaa nykyaikaista tietokonetta. 142 00:11:36.110 --> 00:11:39.590 Tämä vastaa semmoista vanhaa tietokonetta rakenteeltaan. 143 00:11:39.590 --> 00:11:44.110 Hyvin yksinkertaista tietokonetta rakenteeltaan, mutta on hyvä ensin oppia 144 00:11:44.110 --> 00:11:49.350 pienessä kaavassa tää miten tietokone toimii. Tänne voi itse kirjoitella 145 00:11:49.350 --> 00:11:52.740 omia ohjelmia tai sitten katsoa vähän hankalampia esimerkkiohjelmia. 146 00:11:52.740 --> 00:11:57.210 Eli täällä on esimerkiksi kuplalajittelu toteutettuna. 147 00:11:57.210 --> 00:11:59.670 Nyt voidaan pistää kupla- lajittelu tuossa pyörimään. 148 00:11:59.670 --> 00:12:03.830 Pistetään sille vähän vauhtia, niin nähdään, että 149 00:12:03.830 --> 00:12:08.380 se käy hakemassa numeroita ja ... aha se pyytää syötettä taas. 150 00:12:08.380 --> 00:12:11.320 Annetaan sille 3. 151 00:12:11.320 --> 00:12:16.890 Noin ... 1 ... 2 ... 152 00:12:16.890 --> 00:12:20.520 Mitähän sille pitää antaa että se lopettaa? 153 00:12:20.520 --> 00:12:22.840 ... nolla vai -1 ... 154 00:12:22.840 --> 00:12:26.770 Se olisi pitänyt lukea ohjeista ensin ennen kuin ajettiin, mutta kokeillaan 155 00:12:26.770 --> 00:12:31.320 nolla, niin se alkoi sitten käymään lävitse noita numeroita ja järjestelemään 156 00:12:31.320 --> 00:12:34.480 oikeaan järjestykseen ja tulostaa ne sitten meille... 157 00:12:34.480 --> 00:12:40.910 Vai mitä sitten tekee? Ei meitä kiinnosta mitä se tekee. 158 00:12:40.910 --> 00:12:47.620 Ei tuonne se tulosti 1 2 3: kun annettiin 3 1 2 niin se osasi tulostaa 1 2 3 jee! 159 00:12:47.620 --> 00:12:52.200 Ei kiinnosta se, mitä se tekee, meitä kiinnostaa se, että tää pystyy 160 00:12:52.200 --> 00:12:56.690 tekemään tämmöisiä ihan järkevän kokoisia kokeiluita. 161 00:12:56.690 --> 00:13:02.400 Joten jos assemblerin grokkaamisessa on haasteita, jos teillä on haasteita 162 00:13:02.400 --> 00:13:06.410 sen kanssa, että mikähän tää nyt hommaa ja mitä täällä oikein tietokoneen sisällä 163 00:13:06.410 --> 00:13:10.180 tapahtuu, niin kokeilkaa tätä Little Man Computeria. 164 00:13:10.180 --> 00:13:15.940 Mutta jos teistä tuntuu, että tää on lapsellista, niin teillä on myös linkki 165 00:13:15.940 --> 00:13:21.100 tämmöiseen systeemiin kuin... 166 00:13:21.100 --> 00:13:25.160 Se löytyy itse asiassa, jos menette tuosta paikasta taaksepäin, 167 00:13:25.160 --> 00:13:28.400 mutta tämmöiseen systeemiin ARM-prosessorista. 168 00:13:28.400 --> 00:13:34.170 Ja nyt te olette ihan tämän päivän ja tulevaisuuden todellisuudessa koska ... 169 00:13:34.170 --> 00:13:38.170 Käsi ylös, kenellä on taskussa puhelin? Siinä on ARM. [Käsien kahinaa] 170 00:13:38.170 --> 00:13:46.010 Aika lailla kaikilla käsi ylhäällä. Ja tää on nyt vastaava ohjelma kuin LMC 171 00:13:46.010 --> 00:13:52.550 mutta ARMille. Siellä on rekistereitä kasapäin enemmän ja jos me katsotaan 172 00:13:52.550 --> 00:13:56.390 näitä rekistereitä, niin täältä löytyy esimerkiksi tämmöisiä rekistereitä 173 00:13:56.390 --> 00:14:01.550 kun tossa toi SP elikkä stack pointer löytyy tuolta, äskeisestä ei löytynyt 174 00:14:01.550 --> 00:14:07.030 pinoa ollenkaan ja niin poispäin joten tää on. 175 00:14:07.030 --> 00:14:11.550 vähän vakavampi vaihtoehto. [Myhäilyä] 176 00:14:11.550 --> 00:14:14.240 Äkkiseltään täällä ei ole esimerkkiohjelmaa. 177 00:14:14.240 --> 00:14:18.270 Nytten en keksi äkkiseltään tuohon mitään tehdä, enkä itse en osaa ARMia 178 00:14:18.270 --> 00:14:20.990 niin paljoa, että pystyisin tekemään sitä. 179 00:14:20.990 --> 00:14:26.280 Mutta jos haluatte olla enemmän tosissaan kuin LMC:llä, niin tuossa olisi 180 00:14:26.280 --> 00:14:28.750 tuommoinen systeemi. 181 00:14:28.750 --> 00:14:32.990 Kysymys oli, jos LMC:lle vakavia esimerkkejä hakisi tai miten niitä 182 00:14:32.990 --> 00:14:39.120 lähtisi käytännössä hakemaan, niin mä en... 183 00:14:39.120 --> 00:14:45.180 En ole ihan varma että onko hyötyä lähteä esimerkiksi demotehtäviä kokeilemaan 184 00:14:45.180 --> 00:14:52.900 tän avulla - luulen että se kuormittaa vaan enemmän ... suosittelen, että 185 00:14:52.900 --> 00:14:58.150 tätä käyttää ... siihen että koettaa päästä siihen 186 00:14:58.150 --> 00:15:02.170 perspektiiviin (näkemään) millä toi tietokoneen prosessori toimii 187 00:15:02.170 --> 00:15:04.830 Eli kun me käytetään ohjelmointikieliä, 188 00:15:04.830 --> 00:15:08.890 no, ensinnäkin kun aletaan ohjelmoimaan niin ongelmana on ymmärtää 189 00:15:08.890 --> 00:15:12.960 se että kuns sanoo sille tietokoneelle mitä sen pitää tehdä niin 190 00:15:12.960 --> 00:15:15.970 se ei tajua sitä koska se on tyhmä laite. 191 00:15:15.970 --> 00:15:19.130 Se tottelee vain käskyjä. 192 00:15:19.130 --> 00:15:23.030 Ja sitten opitte sen, että kun te kirjoitatte, C-risuaitaa 193 00:15:23.030 --> 00:15:26.590 tai Javaa, niin semmoisia käskyjä se ymmärtää. 194 00:15:26.590 --> 00:15:29.770 Mutta se C-risu ja Java, ne on suurin piirtein tuolla 195 00:15:29.770 --> 00:15:36.050 Jämsässä jos assembler on tässä salissa. [Mongerrusta] 196 00:15:36.050 --> 00:15:38.790 [Sopertelua] 197 00:15:38.790 --> 00:15:43.390 Assembler-näkökulmasta, se toiminta on paljon, paljon, paljon yksinkertaisempaa 198 00:15:43.390 --> 00:15:45.450 Se, mitä tapahtuu ja miten. 199 00:15:45.450 --> 00:15:48.870 Miten meidän pitää ajatella ja nähdä se toiminta. 200 00:15:48.870 --> 00:15:55.070 Eli me haetaan tavuja tai AMD 64:n tapauksessa 64-bittisiä 201 00:15:55.070 --> 00:15:59.430 lukuja muistista. Tulkitaan... 202 00:15:59.430 --> 00:16:01.790 ne, tehdään sen tulkinnan perusteella 203 00:16:01.790 --> 00:16:09.490 joku komento: tallentaminen, lisäys lukeminen, vähentäminen, hyppy. 204 00:16:09.490 --> 00:16:12.830 Kaikki ne on komentoja, joita me tehdään sen luvun perusteella eli 205 00:16:12.830 --> 00:16:18.950 sen op-koodin eli sen assembler komennon perusteella. 206 00:16:18.950 --> 00:16:24.210 Ja ne on tavattoman yksinkertaisia ja meillä on tavattoman rajoittunut mahdollisuus mitä me 207 00:16:24.210 --> 00:16:29.170 voidaan tehdä ja missä me voidaan tehdä ja että pääsee siihen maailmaan käsiksi, niin 208 00:16:29.170 --> 00:16:34.660 tätä ohjelmaa on hyvä kokeilla ja miettiä että no mitä tää "inp" tekee. 209 00:16:34.660 --> 00:16:37.920 Ja mitä tässä tietokoneessa tapahtuu kun tää "inp" suoritetaan? 210 00:16:37.920 --> 00:16:44.700 Eli kasvatetaan program counter ja käydään hakemassa sieltä muistista se muistipaikan 211 00:16:44.700 --> 00:16:53.970 arvo tulkitaan se muistipaikan arvo toimitaan sen tulkinnan mukaisesti. 212 00:16:53.970 --> 00:16:58.290 Ja sen kun saa päähänsä sen pyörimisen, jonka saa ihan sillä, että 213 00:16:58.290 --> 00:17:01.710 vaikka harjoittelee tätä ohjelmaa vähän aikaa. 214 00:17:01.710 --> 00:17:08.580 Niin mä uskon että sitten se AMD 64 "assu" rupeaa kuulostamaan järkevämmän. 215 00:17:08.580 --> 00:17:11.110 [assu = assembler] Ja se, että mitenkä todella ... 216 00:17:11.110 --> 00:17:13.640 tavattoman yksinkertaista se koko touhu on siinä (prosessorissa).