initial commit
This commit is contained in:
commit
e2e36f9f0d
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.DS_Store
|
BIN
Afl1-dComArk-Paritetsfunktionen.pdf
Normal file
BIN
Afl1-dComArk-Paritetsfunktionen.pdf
Normal file
Binary file not shown.
BIN
Afl2-dComArk-Heltalsmultiplikation.pdf
Normal file
BIN
Afl2-dComArk-Heltalsmultiplikation.pdf
Normal file
Binary file not shown.
BIN
Afl3-dComArk-Overloeb.pdf
Normal file
BIN
Afl3-dComArk-Overloeb.pdf
Normal file
Binary file not shown.
BIN
Afl4-dComArk-IJVMUdvidelse.pdf
Normal file
BIN
Afl4-dComArk-IJVMUdvidelse.pdf
Normal file
Binary file not shown.
BIN
Afl5-dComArk-x86-64.pdf
Normal file
BIN
Afl5-dComArk-x86-64.pdf
Normal file
Binary file not shown.
Binary file not shown.
281
Aflevering1-Paritetsfunktionen/Afl1_AND.circ
Normal file
281
Aflevering1-Paritetsfunktionen/Afl1_AND.circ
Normal file
|
@ -0,0 +1,281 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<project source="2.7.1" version="1.0">
|
||||
This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
|
||||
<lib desc="#Wiring" name="0"/>
|
||||
<lib desc="#Gates" name="1">
|
||||
<tool name="AND Gate">
|
||||
<a name="inputs" val="4"/>
|
||||
</tool>
|
||||
<tool name="OR Gate">
|
||||
<a name="inputs" val="8"/>
|
||||
</tool>
|
||||
</lib>
|
||||
<lib desc="#Plexers" name="2"/>
|
||||
<lib desc="#Arithmetic" name="3"/>
|
||||
<lib desc="#Memory" name="4">
|
||||
<tool name="ROM">
|
||||
<a name="contents">addr/data: 8 8
|
||||
0
|
||||
</a>
|
||||
</tool>
|
||||
</lib>
|
||||
<lib desc="#I/O" name="5"/>
|
||||
<lib desc="#Base" name="6">
|
||||
<tool name="Text Tool">
|
||||
<a name="text" val=""/>
|
||||
<a name="font" val="SansSerif plain 12"/>
|
||||
<a name="halign" val="center"/>
|
||||
<a name="valign" val="base"/>
|
||||
</tool>
|
||||
</lib>
|
||||
<main name="main"/>
|
||||
<options>
|
||||
<a name="gateUndefined" val="ignore"/>
|
||||
<a name="simlimit" val="1000"/>
|
||||
<a name="simrand" val="0"/>
|
||||
</options>
|
||||
<mappings>
|
||||
<tool lib="6" map="Button2" name="Menu Tool"/>
|
||||
<tool lib="6" map="Button3" name="Menu Tool"/>
|
||||
<tool lib="6" map="Ctrl Button1" name="Menu Tool"/>
|
||||
</mappings>
|
||||
<toolbar>
|
||||
<tool lib="6" name="Poke Tool"/>
|
||||
<tool lib="6" name="Edit Tool"/>
|
||||
<tool lib="6" name="Text Tool">
|
||||
<a name="text" val=""/>
|
||||
<a name="font" val="SansSerif plain 12"/>
|
||||
<a name="halign" val="center"/>
|
||||
<a name="valign" val="base"/>
|
||||
</tool>
|
||||
<sep/>
|
||||
<tool lib="0" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
</tool>
|
||||
<tool lib="0" name="Pin">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="labelloc" val="east"/>
|
||||
</tool>
|
||||
<tool lib="1" name="NOT Gate"/>
|
||||
<tool lib="1" name="AND Gate"/>
|
||||
<tool lib="1" name="OR Gate"/>
|
||||
</toolbar>
|
||||
<circuit name="main">
|
||||
<a name="circuit" val="main"/>
|
||||
<a name="clabel" val=""/>
|
||||
<a name="clabelup" val="east"/>
|
||||
<a name="clabelfont" val="SansSerif plain 12"/>
|
||||
<wire from="(350,490)" to="(350,570)"/>
|
||||
<wire from="(290,40)" to="(290,110)"/>
|
||||
<wire from="(310,120)" to="(310,250)"/>
|
||||
<wire from="(260,430)" to="(260,460)"/>
|
||||
<wire from="(150,490)" to="(350,490)"/>
|
||||
<wire from="(330,480)" to="(380,480)"/>
|
||||
<wire from="(110,220)" to="(110,250)"/>
|
||||
<wire from="(150,140)" to="(290,140)"/>
|
||||
<wire from="(200,450)" to="(200,530)"/>
|
||||
<wire from="(110,340)" to="(110,370)"/>
|
||||
<wire from="(290,110)" to="(290,140)"/>
|
||||
<wire from="(220,260)" to="(390,260)"/>
|
||||
<wire from="(380,460)" to="(390,460)"/>
|
||||
<wire from="(330,20)" to="(330,70)"/>
|
||||
<wire from="(500,60)" to="(500,290)"/>
|
||||
<wire from="(310,250)" to="(310,330)"/>
|
||||
<wire from="(290,240)" to="(380,240)"/>
|
||||
<wire from="(110,460)" to="(110,490)"/>
|
||||
<wire from="(290,40)" to="(390,40)"/>
|
||||
<wire from="(490,300)" to="(500,300)"/>
|
||||
<wire from="(380,130)" to="(380,140)"/>
|
||||
<wire from="(260,80)" to="(260,290)"/>
|
||||
<wire from="(330,350)" to="(330,370)"/>
|
||||
<wire from="(220,540)" to="(390,540)"/>
|
||||
<wire from="(200,530)" to="(200,580)"/>
|
||||
<wire from="(240,560)" to="(390,560)"/>
|
||||
<wire from="(110,460)" to="(260,460)"/>
|
||||
<wire from="(310,400)" to="(310,580)"/>
|
||||
<wire from="(220,20)" to="(220,190)"/>
|
||||
<wire from="(260,290)" to="(390,290)"/>
|
||||
<wire from="(350,220)" to="(350,360)"/>
|
||||
<wire from="(470,350)" to="(470,410)"/>
|
||||
<wire from="(220,260)" to="(220,470)"/>
|
||||
<wire from="(110,110)" to="(200,110)"/>
|
||||
<wire from="(440,200)" to="(480,200)"/>
|
||||
<wire from="(150,250)" to="(310,250)"/>
|
||||
<wire from="(480,310)" to="(500,310)"/>
|
||||
<wire from="(350,360)" to="(390,360)"/>
|
||||
<wire from="(330,210)" to="(390,210)"/>
|
||||
<wire from="(260,500)" to="(390,500)"/>
|
||||
<wire from="(220,470)" to="(220,540)"/>
|
||||
<wire from="(110,140)" to="(120,140)"/>
|
||||
<wire from="(350,150)" to="(350,220)"/>
|
||||
<wire from="(330,70)" to="(390,70)"/>
|
||||
<wire from="(490,370)" to="(490,550)"/>
|
||||
<wire from="(380,250)" to="(390,250)"/>
|
||||
<wire from="(260,290)" to="(260,430)"/>
|
||||
<wire from="(200,20)" to="(200,110)"/>
|
||||
<wire from="(290,180)" to="(290,240)"/>
|
||||
<wire from="(100,110)" to="(110,110)"/>
|
||||
<wire from="(100,220)" to="(110,220)"/>
|
||||
<wire from="(290,240)" to="(290,580)"/>
|
||||
<wire from="(480,200)" to="(480,310)"/>
|
||||
<wire from="(350,150)" to="(390,150)"/>
|
||||
<wire from="(440,270)" to="(470,270)"/>
|
||||
<wire from="(330,210)" to="(330,350)"/>
|
||||
<wire from="(220,190)" to="(220,220)"/>
|
||||
<wire from="(240,560)" to="(240,580)"/>
|
||||
<wire from="(290,180)" to="(390,180)"/>
|
||||
<wire from="(350,20)" to="(350,150)"/>
|
||||
<wire from="(440,550)" to="(490,550)"/>
|
||||
<wire from="(100,340)" to="(110,340)"/>
|
||||
<wire from="(470,350)" to="(500,350)"/>
|
||||
<wire from="(110,370)" to="(120,370)"/>
|
||||
<wire from="(200,390)" to="(390,390)"/>
|
||||
<wire from="(380,240)" to="(380,250)"/>
|
||||
<wire from="(470,320)" to="(500,320)"/>
|
||||
<wire from="(220,470)" to="(390,470)"/>
|
||||
<wire from="(110,250)" to="(120,250)"/>
|
||||
<wire from="(310,330)" to="(310,400)"/>
|
||||
<wire from="(290,140)" to="(290,180)"/>
|
||||
<wire from="(490,130)" to="(490,300)"/>
|
||||
<wire from="(110,220)" to="(220,220)"/>
|
||||
<wire from="(310,50)" to="(310,120)"/>
|
||||
<wire from="(260,430)" to="(390,430)"/>
|
||||
<wire from="(220,540)" to="(220,580)"/>
|
||||
<wire from="(550,330)" to="(580,330)"/>
|
||||
<wire from="(240,130)" to="(240,280)"/>
|
||||
<wire from="(440,130)" to="(490,130)"/>
|
||||
<wire from="(310,400)" to="(390,400)"/>
|
||||
<wire from="(260,460)" to="(260,500)"/>
|
||||
<wire from="(260,500)" to="(260,580)"/>
|
||||
<wire from="(350,570)" to="(390,570)"/>
|
||||
<wire from="(200,530)" to="(390,530)"/>
|
||||
<wire from="(100,460)" to="(110,460)"/>
|
||||
<wire from="(310,120)" to="(390,120)"/>
|
||||
<wire from="(330,370)" to="(330,480)"/>
|
||||
<wire from="(330,480)" to="(330,580)"/>
|
||||
<wire from="(440,340)" to="(500,340)"/>
|
||||
<wire from="(440,60)" to="(500,60)"/>
|
||||
<wire from="(240,340)" to="(240,420)"/>
|
||||
<wire from="(380,490)" to="(390,490)"/>
|
||||
<wire from="(240,130)" to="(380,130)"/>
|
||||
<wire from="(290,20)" to="(290,40)"/>
|
||||
<wire from="(200,450)" to="(380,450)"/>
|
||||
<wire from="(260,20)" to="(260,80)"/>
|
||||
<wire from="(240,280)" to="(390,280)"/>
|
||||
<wire from="(440,410)" to="(470,410)"/>
|
||||
<wire from="(350,570)" to="(350,580)"/>
|
||||
<wire from="(330,70)" to="(330,210)"/>
|
||||
<wire from="(470,270)" to="(470,320)"/>
|
||||
<wire from="(310,20)" to="(310,50)"/>
|
||||
<wire from="(240,420)" to="(390,420)"/>
|
||||
<wire from="(480,360)" to="(500,360)"/>
|
||||
<wire from="(240,20)" to="(240,130)"/>
|
||||
<wire from="(200,110)" to="(200,320)"/>
|
||||
<wire from="(200,320)" to="(390,320)"/>
|
||||
<wire from="(240,280)" to="(240,340)"/>
|
||||
<wire from="(350,220)" to="(390,220)"/>
|
||||
<wire from="(200,390)" to="(200,450)"/>
|
||||
<wire from="(200,320)" to="(200,390)"/>
|
||||
<wire from="(490,370)" to="(500,370)"/>
|
||||
<wire from="(150,370)" to="(330,370)"/>
|
||||
<wire from="(380,480)" to="(380,490)"/>
|
||||
<wire from="(220,190)" to="(390,190)"/>
|
||||
<wire from="(310,50)" to="(390,50)"/>
|
||||
<wire from="(240,420)" to="(240,560)"/>
|
||||
<wire from="(330,350)" to="(390,350)"/>
|
||||
<wire from="(380,450)" to="(380,460)"/>
|
||||
<wire from="(110,340)" to="(240,340)"/>
|
||||
<wire from="(310,330)" to="(390,330)"/>
|
||||
<wire from="(110,490)" to="(120,490)"/>
|
||||
<wire from="(110,110)" to="(110,140)"/>
|
||||
<wire from="(380,140)" to="(390,140)"/>
|
||||
<wire from="(260,80)" to="(390,80)"/>
|
||||
<wire from="(290,110)" to="(390,110)"/>
|
||||
<wire from="(480,360)" to="(480,480)"/>
|
||||
<wire from="(220,220)" to="(220,260)"/>
|
||||
<wire from="(440,480)" to="(480,480)"/>
|
||||
<wire from="(350,360)" to="(350,490)"/>
|
||||
<comp lib="0" loc="(580,330)" name="Pin">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="label" val="P"/>
|
||||
<a name="labelloc" val="north"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(100,340)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="C"/>
|
||||
<a name="labelloc" val="north"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(100,110)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="A"/>
|
||||
<a name="labelloc" val="north"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(100,460)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="D"/>
|
||||
<a name="labelloc" val="north"/>
|
||||
</comp>
|
||||
<comp lib="6" loc="(239,16)" name="Text">
|
||||
<a name="text" val="C"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(150,370)" name="NOT Gate"/>
|
||||
<comp lib="1" loc="(440,60)" name="AND Gate">
|
||||
<a name="inputs" val="4"/>
|
||||
</comp>
|
||||
<comp lib="6" loc="(350,16)" name="Text">
|
||||
<a name="text" val="~D"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(150,250)" name="NOT Gate"/>
|
||||
<comp lib="6" loc="(330,16)" name="Text">
|
||||
<a name="text" val="~C"/>
|
||||
</comp>
|
||||
<comp lib="6" loc="(291,16)" name="Text">
|
||||
<a name="text" val="~A"/>
|
||||
</comp>
|
||||
<comp lib="6" loc="(219,16)" name="Text">
|
||||
<a name="text" val="B"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(440,130)" name="AND Gate">
|
||||
<a name="inputs" val="4"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(440,340)" name="AND Gate">
|
||||
<a name="inputs" val="4"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(440,270)" name="AND Gate">
|
||||
<a name="inputs" val="4"/>
|
||||
</comp>
|
||||
<comp lib="6" loc="(309,16)" name="Text">
|
||||
<a name="text" val="~B"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(440,550)" name="AND Gate">
|
||||
<a name="inputs" val="4"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(440,410)" name="AND Gate">
|
||||
<a name="inputs" val="4"/>
|
||||
</comp>
|
||||
<comp lib="6" loc="(261,16)" name="Text">
|
||||
<a name="text" val="D"/>
|
||||
</comp>
|
||||
<comp lib="6" loc="(199,16)" name="Text">
|
||||
<a name="text" val="A"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(150,140)" name="NOT Gate"/>
|
||||
<comp lib="1" loc="(440,480)" name="AND Gate">
|
||||
<a name="inputs" val="4"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(440,200)" name="AND Gate">
|
||||
<a name="inputs" val="4"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(150,490)" name="NOT Gate"/>
|
||||
<comp lib="0" loc="(100,220)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="B"/>
|
||||
<a name="labelloc" val="north"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(550,330)" name="OR Gate">
|
||||
<a name="inputs" val="8"/>
|
||||
</comp>
|
||||
</circuit>
|
||||
</project>
|
159
Aflevering1-Paritetsfunktionen/Afl1_XOR.circ
Normal file
159
Aflevering1-Paritetsfunktionen/Afl1_XOR.circ
Normal file
|
@ -0,0 +1,159 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<project source="2.7.1" version="1.0">
|
||||
This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
|
||||
<lib desc="#Wiring" name="0"/>
|
||||
<lib desc="#Gates" name="1">
|
||||
<tool name="AND Gate">
|
||||
<a name="inputs" val="2"/>
|
||||
</tool>
|
||||
<tool name="OR Gate">
|
||||
<a name="inputs" val="2"/>
|
||||
</tool>
|
||||
<tool name="XOR Gate">
|
||||
<a name="inputs" val="2"/>
|
||||
</tool>
|
||||
</lib>
|
||||
<lib desc="#Plexers" name="2"/>
|
||||
<lib desc="#Arithmetic" name="3"/>
|
||||
<lib desc="#Memory" name="4">
|
||||
<tool name="ROM">
|
||||
<a name="contents">addr/data: 8 8
|
||||
0
|
||||
</a>
|
||||
</tool>
|
||||
</lib>
|
||||
<lib desc="#I/O" name="5"/>
|
||||
<lib desc="#Base" name="6">
|
||||
<tool name="Text Tool">
|
||||
<a name="text" val=""/>
|
||||
<a name="font" val="SansSerif plain 12"/>
|
||||
<a name="halign" val="center"/>
|
||||
<a name="valign" val="base"/>
|
||||
</tool>
|
||||
</lib>
|
||||
<main name="main"/>
|
||||
<options>
|
||||
<a name="gateUndefined" val="ignore"/>
|
||||
<a name="simlimit" val="1000"/>
|
||||
<a name="simrand" val="0"/>
|
||||
</options>
|
||||
<mappings>
|
||||
<tool lib="6" map="Button2" name="Menu Tool"/>
|
||||
<tool lib="6" map="Button3" name="Menu Tool"/>
|
||||
<tool lib="6" map="Ctrl Button1" name="Menu Tool"/>
|
||||
</mappings>
|
||||
<toolbar>
|
||||
<tool lib="6" name="Poke Tool"/>
|
||||
<tool lib="6" name="Edit Tool"/>
|
||||
<tool lib="6" name="Text Tool">
|
||||
<a name="text" val=""/>
|
||||
<a name="font" val="SansSerif plain 12"/>
|
||||
<a name="halign" val="center"/>
|
||||
<a name="valign" val="base"/>
|
||||
</tool>
|
||||
<sep/>
|
||||
<tool lib="0" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
</tool>
|
||||
<tool lib="0" name="Pin">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="labelloc" val="east"/>
|
||||
</tool>
|
||||
<tool lib="1" name="NOT Gate"/>
|
||||
<tool lib="1" name="AND Gate"/>
|
||||
<tool lib="1" name="OR Gate"/>
|
||||
</toolbar>
|
||||
<circuit name="main">
|
||||
<a name="circuit" val="main"/>
|
||||
<a name="clabel" val=""/>
|
||||
<a name="clabelup" val="east"/>
|
||||
<a name="clabelfont" val="SansSerif plain 12"/>
|
||||
<wire from="(290,100)" to="(300,100)"/>
|
||||
<wire from="(90,160)" to="(150,160)"/>
|
||||
<wire from="(90,120)" to="(150,120)"/>
|
||||
<wire from="(210,140)" to="(220,140)"/>
|
||||
<wire from="(300,100)" to="(310,100)"/>
|
||||
<wire from="(220,120)" to="(240,120)"/>
|
||||
<wire from="(210,60)" to="(220,60)"/>
|
||||
<wire from="(90,80)" to="(150,80)"/>
|
||||
<wire from="(90,40)" to="(150,40)"/>
|
||||
<wire from="(220,80)" to="(240,80)"/>
|
||||
<wire from="(220,60)" to="(220,80)"/>
|
||||
<wire from="(220,120)" to="(220,140)"/>
|
||||
<comp lib="0" loc="(90,160)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="D"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(90,40)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="A"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(300,100)" name="XOR Gate">
|
||||
<a name="inputs" val="2"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(210,140)" name="XOR Gate">
|
||||
<a name="inputs" val="2"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(210,60)" name="XOR Gate">
|
||||
<a name="inputs" val="2"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(90,80)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="B"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(310,100)" name="Pin">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="label" val="P"/>
|
||||
<a name="labelloc" val="north"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(90,120)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="C"/>
|
||||
</comp>
|
||||
</circuit>
|
||||
<circuit name="main2">
|
||||
<a name="circuit" val="main2"/>
|
||||
<a name="clabel" val=""/>
|
||||
<a name="clabelup" val="east"/>
|
||||
<a name="clabelfont" val="SansSerif plain 12"/>
|
||||
<wire from="(120,80)" to="(120,90)"/>
|
||||
<wire from="(50,30)" to="(130,30)"/>
|
||||
<wire from="(130,90)" to="(150,90)"/>
|
||||
<wire from="(210,70)" to="(230,70)"/>
|
||||
<wire from="(130,30)" to="(130,50)"/>
|
||||
<wire from="(130,50)" to="(150,50)"/>
|
||||
<wire from="(120,80)" to="(150,80)"/>
|
||||
<wire from="(50,90)" to="(120,90)"/>
|
||||
<wire from="(130,90)" to="(130,120)"/>
|
||||
<wire from="(50,60)" to="(150,60)"/>
|
||||
<wire from="(50,120)" to="(130,120)"/>
|
||||
<comp lib="0" loc="(50,30)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="A"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(50,120)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="D"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(50,90)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="C"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(50,60)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="B"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(230,70)" name="Pin">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="label" val="P"/>
|
||||
<a name="labelloc" val="north"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(210,70)" name="XOR Gate">
|
||||
<a name="inputs" val="4"/>
|
||||
<a name="xor" val="odd"/>
|
||||
</comp>
|
||||
</circuit>
|
||||
</project>
|
94
Aflevering1-Paritetsfunktionen/Afl_XOR2.circ
Normal file
94
Aflevering1-Paritetsfunktionen/Afl_XOR2.circ
Normal file
|
@ -0,0 +1,94 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<project source="2.7.1" version="1.0">
|
||||
This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
|
||||
<lib desc="#Wiring" name="0"/>
|
||||
<lib desc="#Gates" name="1"/>
|
||||
<lib desc="#Plexers" name="2"/>
|
||||
<lib desc="#Arithmetic" name="3"/>
|
||||
<lib desc="#Memory" name="4"/>
|
||||
<lib desc="#I/O" name="5"/>
|
||||
<lib desc="#Base" name="6">
|
||||
<tool name="Text Tool">
|
||||
<a name="text" val=""/>
|
||||
<a name="font" val="SansSerif plain 12"/>
|
||||
<a name="halign" val="center"/>
|
||||
<a name="valign" val="base"/>
|
||||
</tool>
|
||||
</lib>
|
||||
<main name="main"/>
|
||||
<options>
|
||||
<a name="gateUndefined" val="ignore"/>
|
||||
<a name="simlimit" val="1000"/>
|
||||
<a name="simrand" val="0"/>
|
||||
</options>
|
||||
<mappings>
|
||||
<tool lib="6" map="Button2" name="Menu Tool"/>
|
||||
<tool lib="6" map="Ctrl Button1" name="Menu Tool"/>
|
||||
<tool lib="6" map="Button3" name="Menu Tool"/>
|
||||
</mappings>
|
||||
<toolbar>
|
||||
<tool lib="6" name="Poke Tool"/>
|
||||
<tool lib="6" name="Edit Tool"/>
|
||||
<tool lib="6" name="Text Tool">
|
||||
<a name="text" val=""/>
|
||||
<a name="font" val="SansSerif plain 12"/>
|
||||
<a name="halign" val="center"/>
|
||||
<a name="valign" val="base"/>
|
||||
</tool>
|
||||
<sep/>
|
||||
<tool lib="0" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
</tool>
|
||||
<tool lib="0" name="Pin">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="labelloc" val="east"/>
|
||||
</tool>
|
||||
<tool lib="1" name="NOT Gate"/>
|
||||
<tool lib="1" name="AND Gate"/>
|
||||
<tool lib="1" name="OR Gate"/>
|
||||
</toolbar>
|
||||
<circuit name="main">
|
||||
<a name="circuit" val="main"/>
|
||||
<a name="clabel" val=""/>
|
||||
<a name="clabelup" val="east"/>
|
||||
<a name="clabelfont" val="SansSerif plain 12"/>
|
||||
<wire from="(120,80)" to="(120,90)"/>
|
||||
<wire from="(50,30)" to="(130,30)"/>
|
||||
<wire from="(130,90)" to="(150,90)"/>
|
||||
<wire from="(210,70)" to="(230,70)"/>
|
||||
<wire from="(130,30)" to="(130,50)"/>
|
||||
<wire from="(130,50)" to="(150,50)"/>
|
||||
<wire from="(120,80)" to="(150,80)"/>
|
||||
<wire from="(50,90)" to="(120,90)"/>
|
||||
<wire from="(130,90)" to="(130,120)"/>
|
||||
<wire from="(50,120)" to="(130,120)"/>
|
||||
<wire from="(50,60)" to="(150,60)"/>
|
||||
<comp lib="0" loc="(50,30)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="A"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(50,60)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="B"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(50,90)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="C"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(210,70)" name="XOR Gate">
|
||||
<a name="inputs" val="4"/>
|
||||
<a name="xor" val="odd"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(50,120)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="D"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(230,70)" name="Pin">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="label" val="P"/>
|
||||
<a name="labelloc" val="north"/>
|
||||
</comp>
|
||||
</circuit>
|
||||
</project>
|
BIN
Aflevering1-Paritetsfunktionen/Eksempel_0000.png
Normal file
BIN
Aflevering1-Paritetsfunktionen/Eksempel_0000.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 112 KiB |
BIN
Aflevering1-Paritetsfunktionen/Eksempel_1010.png
Normal file
BIN
Aflevering1-Paritetsfunktionen/Eksempel_1010.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 111 KiB |
BIN
Aflevering1-Paritetsfunktionen/Eksempel_1110.png
Normal file
BIN
Aflevering1-Paritetsfunktionen/Eksempel_1110.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 110 KiB |
BIN
Aflevering1-Paritetsfunktionen/Kredsloeb1_AND.png
Normal file
BIN
Aflevering1-Paritetsfunktionen/Kredsloeb1_AND.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
BIN
Aflevering1-Paritetsfunktionen/Kredsloeb2_XOR1.png
Normal file
BIN
Aflevering1-Paritetsfunktionen/Kredsloeb2_XOR1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
BIN
Aflevering1-Paritetsfunktionen/Kredsloeb3_XOR2.png
Normal file
BIN
Aflevering1-Paritetsfunktionen/Kredsloeb3_XOR2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.9 KiB |
BIN
Aflevering3-Overloeb/Afl3-dComArk-Overloeb.pdf
Normal file
BIN
Aflevering3-Overloeb/Afl3-dComArk-Overloeb.pdf
Normal file
Binary file not shown.
13
Aflevering3-Overloeb/eq.j
Normal file
13
Aflevering3-Overloeb/eq.j
Normal file
|
@ -0,0 +1,13 @@
|
|||
.method main
|
||||
.args 3
|
||||
.define a = 1
|
||||
.define b = 2
|
||||
|
||||
iload a
|
||||
iload b
|
||||
isub // Find the difference between a and b
|
||||
ifeq true // If a and b are equal, return 1
|
||||
false: bipush 0 // else: return 0
|
||||
ireturn
|
||||
true: bipush 1
|
||||
ireturn
|
26
Aflevering3-Overloeb/geq.j
Normal file
26
Aflevering3-Overloeb/geq.j
Normal file
|
@ -0,0 +1,26 @@
|
|||
.method main
|
||||
.args 3
|
||||
.define a = 1
|
||||
.define b = 2
|
||||
|
||||
sign: iload a // Check for negative signs
|
||||
iflt aneg // If a is negative, go check if b is too
|
||||
iload b
|
||||
iflt true // If only b is negative, a > b
|
||||
// a > b is a subset of a >= b
|
||||
// return 1
|
||||
|
||||
comp: iload a // Compare the two values to check a >= b
|
||||
iload b
|
||||
isub
|
||||
iflt false // If (a-b) < 0, return 0, else return 1
|
||||
true: bipush 1 // Push 1 to top of stack and return
|
||||
ireturn
|
||||
|
||||
aneg: iload b // Check if b is negative
|
||||
iflt comp // If a and b are negative go compare them
|
||||
// else a < b; a < b is not part of a >= b;
|
||||
// return 0
|
||||
|
||||
false: bipush 0 // Push 0 to top of stack and return
|
||||
ireturn
|
BIN
Aflevering4-IJVM-Udvidelse/Afl4-dComArk-IJVMUdvidelse.pdf
Normal file
BIN
Aflevering4-IJVM-Udvidelse/Afl4-dComArk-IJVMUdvidelse.pdf
Normal file
Binary file not shown.
24
Aflevering4-IJVM-Udvidelse/ijvm.spec
Normal file
24
Aflevering4-IJVM-Udvidelse/ijvm.spec
Normal file
|
@ -0,0 +1,24 @@
|
|||
0x10 bipush byte
|
||||
0x59 dup
|
||||
0xA7 goto label
|
||||
0x60 iadd
|
||||
0x7E iand
|
||||
0x99 ifeq label
|
||||
0x9B iflt label
|
||||
0x9F if_icmpeq label
|
||||
0x84 iinc varnum, byte
|
||||
0x15 iload varnum-wide
|
||||
0xB6 invokevirtual method
|
||||
0x80 ior
|
||||
0xAC ireturn
|
||||
0x36 istore varnum-wide
|
||||
0x64 isub
|
||||
0x13 ldc_w constant
|
||||
0x00 nop
|
||||
0x57 pop
|
||||
0x5F swap
|
||||
0xC4 wide
|
||||
0x78 ishl
|
||||
0x7A ishr
|
||||
0x7C iushr
|
||||
|
303
Aflevering4-IJVM-Udvidelse/ijvm_ext.mal
Normal file
303
Aflevering4-IJVM-Udvidelse/ijvm_ext.mal
Normal file
|
@ -0,0 +1,303 @@
|
|||
#
|
||||
# Extensions to MAL:
|
||||
# ------------------
|
||||
#
|
||||
# - absolute labels; the syntax for labels have been extended to
|
||||
# allow for absolute placement of instructions, as required
|
||||
# by the implementation of IJVM. To have an instruction
|
||||
# placed e.g. at address 0x2A, write:
|
||||
#
|
||||
# imul = 0x2A:
|
||||
# MAR = SP = SP - 1; rd
|
||||
# ...
|
||||
#
|
||||
# The micro code immediately following is guaranteed to be
|
||||
# placed at address 0x2A, provided it does not collide with
|
||||
# other absolute labels. The label `imul' will also serve as
|
||||
# a target for both conditional and unconditional gotos.
|
||||
#
|
||||
# - nop instruction; since the assembler ignores blank lines, a
|
||||
# means to instruct the assembler to generate an empty cycle
|
||||
# is needed. This is used in the implementation of pop and
|
||||
# ireturn. More specifically, in the control word generated
|
||||
# by nop, NEXT_ADDRESS points to the following instruction,
|
||||
# the JAM field is 0, the ALU operation is unspecified, all C
|
||||
# and memory bits are 0 and B is unspecified.
|
||||
#
|
||||
|
||||
#
|
||||
# Wed Apr 21 19:48:26 CEST 1999
|
||||
# -----------------------------
|
||||
#
|
||||
# Okay, "nop" is not a clever name since it is a java bytecode.
|
||||
# How about "empty"? But what about the label "goto"?
|
||||
#
|
||||
|
||||
goto mic1_entry
|
||||
|
||||
main:
|
||||
PC = PC + 1; fetch; goto (MBR)
|
||||
|
||||
nop = 0x00:
|
||||
goto main
|
||||
|
||||
iadd = 0x60:
|
||||
MAR = SP = SP - 1; rd
|
||||
H = TOS
|
||||
MDR = TOS = MDR + H; wr; goto main
|
||||
|
||||
isub = 0x64:
|
||||
MAR = SP = SP - 1; rd
|
||||
H = TOS
|
||||
MDR = TOS = MDR - H; wr; goto main
|
||||
|
||||
iand = 0x7E:
|
||||
MAR = SP = SP - 1; rd
|
||||
H = TOS
|
||||
MDR = TOS = MDR AND H; wr; goto main
|
||||
|
||||
ior = 0x80:
|
||||
MAR = SP = SP - 1; rd
|
||||
H = TOS
|
||||
MDR = TOS = MDR OR H; wr; goto main
|
||||
|
||||
dup = 0x59:
|
||||
MAR = SP = SP + 1
|
||||
MDR = TOS; wr; goto main
|
||||
|
||||
pop = 0x57:
|
||||
MAR = SP = SP - 1; rd
|
||||
empty
|
||||
TOS = MDR; goto main
|
||||
|
||||
swap = 0x5F:
|
||||
MAR = SP - 1; rd
|
||||
MAR = SP
|
||||
H = MDR; wr
|
||||
MDR = TOS
|
||||
MAR = SP - 1; wr
|
||||
TOS = H; goto main
|
||||
|
||||
bipush = 0x10:
|
||||
SP = MAR = SP + 1
|
||||
PC = PC + 1; fetch
|
||||
MDR = TOS = MBR; wr; goto main
|
||||
|
||||
iload = 0x15:
|
||||
H = LV
|
||||
MAR = MBRU + H; rd
|
||||
iload_cont:
|
||||
MAR = SP = SP + 1
|
||||
PC = PC + 1; fetch; wr
|
||||
TOS = MDR; goto main
|
||||
|
||||
istore = 0x36:
|
||||
H = LV
|
||||
MAR = MBRU + H
|
||||
istore_cont:
|
||||
MDR = TOS; wr
|
||||
SP = MAR = SP - 1; rd
|
||||
PC = PC + 1; fetch
|
||||
TOS = MDR; goto main
|
||||
|
||||
wide = 0xC4:
|
||||
PC = PC + 1; fetch; goto (MBR OR 0x100)
|
||||
|
||||
wide_iload = 0x115:
|
||||
PC = PC + 1; fetch
|
||||
H = MBRU << 8
|
||||
H = MBRU OR H
|
||||
MAR = LV + H; rd; goto iload_cont
|
||||
|
||||
wide_istore = 0x136:
|
||||
PC = PC + 1; fetch
|
||||
H = MBRU << 8
|
||||
H = MBRU OR H
|
||||
MAR = LV + H; goto istore_cont
|
||||
|
||||
ldc_w = 0x13:
|
||||
PC = PC + 1; fetch
|
||||
H = MBRU << 8
|
||||
H = MBRU OR H
|
||||
MAR = H + CPP; rd; goto iload_cont
|
||||
|
||||
iinc = 0x84:
|
||||
H = LV
|
||||
MAR = MBRU + H; rd
|
||||
PC = PC + 1; fetch
|
||||
H = MDR
|
||||
PC = PC + 1; fetch
|
||||
MDR = MBR + H; wr; goto main
|
||||
|
||||
ijvm_goto = 0xA7:
|
||||
OPC = PC - 1
|
||||
goto_cont:
|
||||
PC = PC + 1; fetch
|
||||
H = MBR << 8
|
||||
H = MBRU OR H
|
||||
PC = OPC + H; fetch
|
||||
goto main
|
||||
|
||||
iflt = 0x9B:
|
||||
MAR = SP = SP - 1; rd
|
||||
OPC = TOS
|
||||
TOS = MDR
|
||||
N = OPC; if (N) goto T; else goto F
|
||||
|
||||
ifeq = 0x99:
|
||||
MAR = SP = SP - 1; rd
|
||||
OPC = TOS
|
||||
TOS = MDR
|
||||
Z = OPC; if (Z) goto T; else goto F
|
||||
|
||||
if_icmpeq = 0x9F:
|
||||
MAR = SP = SP - 1; rd
|
||||
MAR = SP = SP - 1
|
||||
H = MDR; rd
|
||||
OPC = TOS
|
||||
TOS = MDR
|
||||
Z = OPC - H; if (Z) goto T; else goto F
|
||||
|
||||
T:
|
||||
OPC = PC - 1; fetch; goto goto_cont
|
||||
|
||||
F:
|
||||
PC = PC + 1
|
||||
PC = PC + 1; fetch
|
||||
goto main
|
||||
|
||||
invokevirtual = 0xB6:
|
||||
PC = PC + 1; fetch
|
||||
H = MBRU << 8
|
||||
H = MBRU OR H
|
||||
mic1_entry:
|
||||
MAR = CPP + H; rd
|
||||
OPC = PC + 1
|
||||
PC = MDR; fetch
|
||||
PC = PC + 1; fetch
|
||||
H = MBRU << 8
|
||||
H = MBRU OR H
|
||||
PC = PC + 1; fetch
|
||||
TOS = SP - H
|
||||
TOS = MAR = TOS + 1
|
||||
PC = PC + 1; fetch
|
||||
H = MBRU << 8
|
||||
H = MBRU OR H
|
||||
MDR = SP + H + 1; wr
|
||||
MAR = SP = MDR
|
||||
MDR = OPC; wr
|
||||
MAR = SP = SP + 1
|
||||
MDR = LV; wr
|
||||
PC = PC + 1; fetch
|
||||
LV = TOS; goto main
|
||||
|
||||
ireturn = 0xAC:
|
||||
MAR = SP = LV; rd
|
||||
empty
|
||||
LV = MAR = MDR; rd
|
||||
MAR = LV + 1
|
||||
PC = MDR; rd; fetch
|
||||
MAR = SP
|
||||
LV = MDR
|
||||
MDR = TOS; wr
|
||||
Z = PC - 1; if (Z) goto mic1_exit; else goto main
|
||||
|
||||
mic1_exit:
|
||||
halt
|
||||
|
||||
ishl = 0x78:
|
||||
# It is possible to use the value of
|
||||
# the MBRU register to create the mask.
|
||||
H = MBRU >> 1 # MBRU = 1111000, H = 111100
|
||||
H = H >> 1 # H = 11110
|
||||
H = H + 1 # H = 11111
|
||||
# Read second-to-top word from stack and
|
||||
# set SP to point to this position.
|
||||
MAR = SP = SP - 1; rd
|
||||
TOS = TOS AND H # Apply bit mask to the top word from
|
||||
# the stack which signifies the number
|
||||
# of shifts to perform.
|
||||
H = OPC = MDR # Load the value to be shifted.
|
||||
|
||||
ishl_loop: # If the counter (TOS) is 0, end loop.
|
||||
Z = TOS; if (Z) goto ishl_end; else goto ishl_shift
|
||||
ishl_shift:
|
||||
H = OPC = OPC + H # Perform an arithmetic left-shift by
|
||||
# multiplying H and OPC. H and OPC is
|
||||
# loaded with the result to prepare for
|
||||
# possible further multiplications.
|
||||
|
||||
TOS = TOS - 1 # Decrease the counter by one.
|
||||
goto ishl_loop
|
||||
ishl_end: # Customary push of result to the TOS
|
||||
# register and the stack in memory.
|
||||
# MAR = SP is not necessary, due to
|
||||
# MAR already being set to SP earlier.
|
||||
MDR = TOS = H; wr; goto main
|
||||
|
||||
ishr = 0x7A:
|
||||
# It is possible to use the value of
|
||||
# the MBRU register to create the mask.
|
||||
H = MBRU >> 1 # MBRU = 1111010, H = 111101
|
||||
H = H >> 1 # H = 11110
|
||||
H = H + 1 # H = 11111
|
||||
# Read second-to-top word from stack and
|
||||
# set SP to point to this position.
|
||||
MAR = SP = SP - 1; rd
|
||||
TOS = TOS AND H # Apply bit mask to the top word from
|
||||
# the stack.
|
||||
|
||||
H = MDR # Load the value to be shifted into H.
|
||||
|
||||
ishr_loop: # If the counter (TOS) is 0, end loop.
|
||||
Z = TOS; if (Z) goto ishr_end; else goto ishr_shift
|
||||
ishr_shift: # The actual shifting takes place here
|
||||
H = H >> 1 # The value is shifted arithmetically
|
||||
# right by 1-bit using the ALU.
|
||||
TOS = TOS - 1 # The counter is decreased.
|
||||
goto ishr_loop
|
||||
ishr_end: # Customary push of result to the TOS
|
||||
# register and the stack in memory.
|
||||
MDR = TOS = H; wr; goto main
|
||||
|
||||
iushr = 0x7C:
|
||||
H = MBRU >> 1 # MBRU = 1111100, H = 111110
|
||||
# Set H to the value of OPC to prepare
|
||||
# for the creation of a new bit-mask
|
||||
# later in the instruction.
|
||||
OPC = H = H >> 1 # H = 11111
|
||||
# Read second-to-top word from stack and
|
||||
# set SP to point to this position.
|
||||
MAR = SP = SP - 1; rd
|
||||
TOS = TOS AND H # Apply bit mask to the top word from
|
||||
# the stack.
|
||||
# Create new bit mask from the previous
|
||||
# bit mask.
|
||||
H = OPC = OPC + 1 # H = 100000
|
||||
H = OPC = H + OPC # H, OPC = 01000000
|
||||
# The value of OPC after the following
|
||||
# instructions is listed in the
|
||||
# comments of each line:
|
||||
OPC = H + OPC # 00000000 00000000 00000000 10000000
|
||||
OPC = OPC << 8 # 00000000 00000000 10000000 00000000
|
||||
OPC = OPC << 8 # 00000000 10000000 00000000 00000000
|
||||
OPC = OPC << 8 # 10000000 00000000 00000000 00000000
|
||||
OPC = inv(OPC) # 01111111 11111111 11111111 11111111
|
||||
# If anything is AND with OPC, it will
|
||||
# remove the most significant bit of
|
||||
# that value with OPC.
|
||||
|
||||
H = MDR # Load H with the value to be shifted
|
||||
iushr_loop:
|
||||
Z = TOS; if (Z) goto iushr_end; else goto iushr_shift
|
||||
iushr_shift:
|
||||
H = H >> 1 # Do a 1-bit arithmetic right-shift
|
||||
H = H AND OPC # Use the bit-mask to remove the most
|
||||
# significant bit, effectively making
|
||||
# the arithmetic right-shift into a
|
||||
# logical right-shift.
|
||||
TOS = TOS - 1 # Decrease the counter by one.
|
||||
goto iushr_loop
|
||||
iushr_end: # Customary push of result to the TOS
|
||||
# register and the stack in memory.
|
||||
MDR = TOS = H; wr; goto main
|
513
Aflevering4-IJVM-Udvidelse/ijvm_ext.mic1
Normal file
513
Aflevering4-IJVM-Udvidelse/ijvm_ext.mic1
Normal file
|
@ -0,0 +1,513 @@
|
|||
entry: 006
|
||||
000: 0010000000 goto 0x002;
|
||||
001: 0220350201 PC = PC + 1; goto 0x044;
|
||||
002: 0004350211 PC = PC + 1; fetch; goto (MBR);
|
||||
003: 03703cc008 OPC = H = H + OPC; goto 0x06e;
|
||||
004: 03b0588000 H = (H) >> 1; goto 0x076;
|
||||
005: 0450588000 H = (H) >> 1; goto 0x08a;
|
||||
006: 0240000000 goto 0x048;
|
||||
007: 0040148007 H = TOS; goto 0x008;
|
||||
008: 00103c2140 MDR = TOS = H + MDR; wr; goto 0x002;
|
||||
009: 0050148007 H = TOS; goto 0x00a;
|
||||
00a: 00103f2140 MDR = TOS = MDR - H; wr; goto 0x002;
|
||||
00b: 0060148007 H = TOS; goto 0x00c;
|
||||
00c: 00100c2140 MDR = TOS = H and MDR; wr; goto 0x002;
|
||||
00d: 0070148007 H = TOS; goto 0x00e;
|
||||
00e: 00101c2140 MDR = TOS = H or MDR; wr; goto 0x002;
|
||||
00f: 0010140147 MDR = TOS; wr; goto 0x002;
|
||||
010: 00d0350484 MAR = SP = SP + 1; goto 0x01a;
|
||||
011: 0090000000 goto 0x012;
|
||||
012: 0010142000 TOS = MDR; goto 0x002;
|
||||
013: 0158350211 PC = PC + 1; fetch; goto 0x02b;
|
||||
014: 00b0140084 MAR = SP; goto 0x016;
|
||||
015: 00e0148005 H = LV; goto 0x01c;
|
||||
016: 00b8148040 H = MDR; wr; goto 0x017;
|
||||
017: 00c0140107 MDR = TOS; goto 0x018;
|
||||
018: 00c83700c4 MAR = SP - 1; wr; goto 0x019;
|
||||
019: 0010182000 TOS = H; goto 0x002;
|
||||
01a: 00d8350211 PC = PC + 1; fetch; goto 0x01b;
|
||||
01b: 0010142142 MDR = TOS = MBR; wr; goto 0x002;
|
||||
01c: 00e83c00a3 MAR = H + MBRU; rd; goto 0x01d;
|
||||
01d: 00f0350484 MAR = SP = SP + 1; goto 0x01e;
|
||||
01e: 00f8350251 PC = PC + 1; wr; fetch; goto 0x01f;
|
||||
01f: 0010142000 TOS = MDR; goto 0x002;
|
||||
020: 01083c0083 MAR = H + MBRU; goto 0x021;
|
||||
021: 0110140147 MDR = TOS; wr; goto 0x022;
|
||||
022: 01183704a4 MAR = SP = SP - 1; rd; goto 0x023;
|
||||
023: 0120350211 PC = PC + 1; fetch; goto 0x024;
|
||||
024: 0010142000 TOS = MDR; goto 0x002;
|
||||
025: 0130948003 H = (MBRU) << 8; goto 0x026;
|
||||
026: 01381c8003 H = H or MBRU; goto 0x027;
|
||||
027: 00e83c00a5 MAR = H + LV; rd; goto 0x01d;
|
||||
028: 0148948003 H = (MBRU) << 8; goto 0x029;
|
||||
029: 01501c8003 H = H or MBRU; goto 0x02a;
|
||||
02a: 01083c0085 MAR = H + LV; goto 0x021;
|
||||
02b: 0160948003 H = (MBRU) << 8; goto 0x02c;
|
||||
02c: 01681c8003 H = H or MBRU; goto 0x02d;
|
||||
02d: 00e83c00a6 MAR = H + CPP; rd; goto 0x01d;
|
||||
02e: 01783c00a3 MAR = H + MBRU; rd; goto 0x02f;
|
||||
02f: 0180350211 PC = PC + 1; fetch; goto 0x030;
|
||||
030: 0188148000 H = MDR; goto 0x031;
|
||||
031: 0190350211 PC = PC + 1; fetch; goto 0x032;
|
||||
032: 00103c0142 MDR = H + MBR; wr; goto 0x002;
|
||||
033: 01a0350211 PC = PC + 1; fetch; goto 0x034;
|
||||
034: 01a8948002 H = (MBR) << 8; goto 0x035;
|
||||
035: 01b81c8003 H = H or MBRU; goto 0x037;
|
||||
036: 0100148005 H = LV; goto 0x020;
|
||||
037: 01c03c0218 PC = H + OPC; fetch; goto 0x038;
|
||||
038: 0010000000 goto 0x002;
|
||||
039: 01d0144007 OPC = TOS; goto 0x03a;
|
||||
03a: 01d8142000 TOS = MDR; goto 0x03b;
|
||||
03b: 000a140008 N = OPC; if (N) goto 0x101; else goto 0x001;
|
||||
03c: 01e8144007 OPC = TOS; goto 0x03d;
|
||||
03d: 01f0142000 TOS = MDR; goto 0x03e;
|
||||
03e: 0009140008 Z = OPC; if (Z) goto 0x101; else goto 0x001;
|
||||
03f: 0200370484 MAR = SP = SP - 1; goto 0x040;
|
||||
040: 0208148020 H = MDR; rd; goto 0x041;
|
||||
041: 0210144007 OPC = TOS; goto 0x042;
|
||||
042: 0218142000 TOS = MDR; goto 0x043;
|
||||
043: 00093f0008 Z = OPC - H; if (Z) goto 0x101; else goto 0x001;
|
||||
044: 0228350211 PC = PC + 1; fetch; goto 0x045;
|
||||
045: 0010000000 goto 0x002;
|
||||
046: 0238948003 H = (MBRU) << 8; goto 0x047;
|
||||
047: 02401c8003 H = H or MBRU; goto 0x048;
|
||||
048: 02483c00a6 MAR = H + CPP; rd; goto 0x049;
|
||||
049: 0250354001 OPC = PC + 1; goto 0x04a;
|
||||
04a: 0258140210 PC = MDR; fetch; goto 0x04b;
|
||||
04b: 0260350211 PC = PC + 1; fetch; goto 0x04c;
|
||||
04c: 0268948003 H = (MBRU) << 8; goto 0x04d;
|
||||
04d: 02701c8003 H = H or MBRU; goto 0x04e;
|
||||
04e: 0278350211 PC = PC + 1; fetch; goto 0x04f;
|
||||
04f: 02803f2004 TOS = SP - H; goto 0x050;
|
||||
050: 0288352087 MAR = TOS = TOS + 1; goto 0x051;
|
||||
051: 0290350211 PC = PC + 1; fetch; goto 0x052;
|
||||
052: 0298948003 H = (MBRU) << 8; goto 0x053;
|
||||
053: 02a01c8003 H = H or MBRU; goto 0x054;
|
||||
054: 02a83d0144 MDR = H + SP + 1; wr; goto 0x055;
|
||||
055: 02b0140480 MAR = SP = MDR; goto 0x056;
|
||||
056: 02c0140148 MDR = OPC; wr; goto 0x058;
|
||||
057: 00883704a4 MAR = SP = SP - 1; rd; goto 0x011;
|
||||
058: 02d0350484 MAR = SP = SP + 1; goto 0x05a;
|
||||
059: 0078350484 MAR = SP = SP + 1; goto 0x00f;
|
||||
05a: 02d8140145 MDR = LV; wr; goto 0x05b;
|
||||
05b: 02e0350211 PC = PC + 1; fetch; goto 0x05c;
|
||||
05c: 0010140807 LV = TOS; goto 0x002;
|
||||
05d: 02f0000000 goto 0x05e;
|
||||
05e: 03081408a0 MAR = LV = MDR; rd; goto 0x061;
|
||||
05f: 00a03700a4 MAR = SP - 1; rd; goto 0x014;
|
||||
060: 00383704a4 MAR = SP = SP - 1; rd; goto 0x007;
|
||||
061: 0310350085 MAR = LV + 1; goto 0x062;
|
||||
062: 0318140230 PC = MDR; rd; fetch; goto 0x063;
|
||||
063: 0328140084 MAR = SP; goto 0x065;
|
||||
064: 00483704a4 MAR = SP = SP - 1; rd; goto 0x009;
|
||||
065: 0330140800 LV = MDR; goto 0x066;
|
||||
066: 0338140147 MDR = TOS; wr; goto 0x067;
|
||||
067: 0011370001 Z = PC - 1; if (Z) goto 0x102; else goto 0x002;
|
||||
068: 0348588000 H = (H) >> 1; goto 0x069;
|
||||
069: 0350398000 H = H + 1; goto 0x06a;
|
||||
06a: 03583704a4 MAR = SP = SP - 1; rd; goto 0x06b;
|
||||
06b: 03600c2007 TOS = H and TOS; goto 0x06c;
|
||||
06c: 036814c000 OPC = H = MDR; goto 0x06d;
|
||||
06d: 0019140007 Z = TOS; if (Z) goto 0x103; else goto 0x003;
|
||||
06e: 0378372007 TOS = TOS - 1; goto 0x06f;
|
||||
06f: 0368000000 goto 0x06d;
|
||||
070: 0388588000 H = (H) >> 1; goto 0x071;
|
||||
071: 0390398000 H = H + 1; goto 0x072;
|
||||
072: 03983704a4 MAR = SP = SP - 1; rd; goto 0x073;
|
||||
073: 03a00c2007 TOS = H and TOS; goto 0x074;
|
||||
074: 03a8148000 H = MDR; goto 0x075;
|
||||
075: 0021140007 Z = TOS; if (Z) goto 0x104; else goto 0x004;
|
||||
076: 03b8372007 TOS = TOS - 1; goto 0x077;
|
||||
077: 03a8000000 goto 0x075;
|
||||
078: 0340548003 H = (MBRU) >> 1; goto 0x068;
|
||||
079: 03d858c000 OPC = H = (H) >> 1; goto 0x07b;
|
||||
07a: 0380548003 H = (MBRU) >> 1; goto 0x070;
|
||||
07b: 03e83704a4 MAR = SP = SP - 1; rd; goto 0x07d;
|
||||
07c: 03c8548003 H = (MBRU) >> 1; goto 0x079;
|
||||
07d: 03f80c2007 TOS = H and TOS; goto 0x07f;
|
||||
07e: 00583704a4 MAR = SP = SP - 1; rd; goto 0x00b;
|
||||
07f: 040835c008 OPC = H = OPC + 1; goto 0x081;
|
||||
080: 00683704a4 MAR = SP = SP - 1; rd; goto 0x00d;
|
||||
081: 04103cc008 OPC = H = H + OPC; goto 0x082;
|
||||
082: 04183c4008 OPC = H + OPC; goto 0x083;
|
||||
083: 0428944008 OPC = (OPC) << 8; goto 0x085;
|
||||
084: 0170148005 H = LV; goto 0x02e;
|
||||
085: 0430944008 OPC = (OPC) << 8; goto 0x086;
|
||||
086: 0438944008 OPC = (OPC) << 8; goto 0x087;
|
||||
087: 04402c4008 OPC = inv (OPC); goto 0x088;
|
||||
088: 0448148000 H = MDR; goto 0x089;
|
||||
089: 0029140007 Z = TOS; if (Z) goto 0x105; else goto 0x005;
|
||||
08a: 04580c8008 H = H and OPC; goto 0x08b;
|
||||
08b: 0460372007 TOS = TOS - 1; goto 0x08c;
|
||||
08c: 0448000000 goto 0x089;
|
||||
08d: 0000000000 goto 0x000;
|
||||
08e: 0000000000 goto 0x000;
|
||||
08f: 0000000000 goto 0x000;
|
||||
090: 0000000000 goto 0x000;
|
||||
091: 0000000000 goto 0x000;
|
||||
092: 0000000000 goto 0x000;
|
||||
093: 0000000000 goto 0x000;
|
||||
094: 0000000000 goto 0x000;
|
||||
095: 0000000000 goto 0x000;
|
||||
096: 0000000000 goto 0x000;
|
||||
097: 0000000000 goto 0x000;
|
||||
098: 0000000000 goto 0x000;
|
||||
099: 01e03704a4 MAR = SP = SP - 1; rd; goto 0x03c;
|
||||
09a: 0000000000 goto 0x000;
|
||||
09b: 01c83704a4 MAR = SP = SP - 1; rd; goto 0x039;
|
||||
09c: 0000000000 goto 0x000;
|
||||
09d: 0000000000 goto 0x000;
|
||||
09e: 0000000000 goto 0x000;
|
||||
09f: 01f83704a4 MAR = SP = SP - 1; rd; goto 0x03f;
|
||||
0a0: 0000000000 goto 0x000;
|
||||
0a1: 0000000000 goto 0x000;
|
||||
0a2: 0000000000 goto 0x000;
|
||||
0a3: 0000000000 goto 0x000;
|
||||
0a4: 0000000000 goto 0x000;
|
||||
0a5: 0000000000 goto 0x000;
|
||||
0a6: 0000000000 goto 0x000;
|
||||
0a7: 0198374001 OPC = PC - 1; goto 0x033;
|
||||
0a8: 0000000000 goto 0x000;
|
||||
0a9: 0000000000 goto 0x000;
|
||||
0aa: 0000000000 goto 0x000;
|
||||
0ab: 0000000000 goto 0x000;
|
||||
0ac: 02e81404a5 MAR = SP = LV; rd; goto 0x05d;
|
||||
0ad: 0000000000 goto 0x000;
|
||||
0ae: 0000000000 goto 0x000;
|
||||
0af: 0000000000 goto 0x000;
|
||||
0b0: 0000000000 goto 0x000;
|
||||
0b1: 0000000000 goto 0x000;
|
||||
0b2: 0000000000 goto 0x000;
|
||||
0b3: 0000000000 goto 0x000;
|
||||
0b4: 0000000000 goto 0x000;
|
||||
0b5: 0000000000 goto 0x000;
|
||||
0b6: 0230350211 PC = PC + 1; fetch; goto 0x046;
|
||||
0b7: 0000000000 goto 0x000;
|
||||
0b8: 0000000000 goto 0x000;
|
||||
0b9: 0000000000 goto 0x000;
|
||||
0ba: 0000000000 goto 0x000;
|
||||
0bb: 0000000000 goto 0x000;
|
||||
0bc: 0000000000 goto 0x000;
|
||||
0bd: 0000000000 goto 0x000;
|
||||
0be: 0000000000 goto 0x000;
|
||||
0bf: 0000000000 goto 0x000;
|
||||
0c0: 0000000000 goto 0x000;
|
||||
0c1: 0000000000 goto 0x000;
|
||||
0c2: 0000000000 goto 0x000;
|
||||
0c3: 0000000000 goto 0x000;
|
||||
0c4: 0804350211 PC = PC + 1; fetch; goto (MBR or 0x100);
|
||||
0c5: 0000000000 goto 0x000;
|
||||
0c6: 0000000000 goto 0x000;
|
||||
0c7: 0000000000 goto 0x000;
|
||||
0c8: 0000000000 goto 0x000;
|
||||
0c9: 0000000000 goto 0x000;
|
||||
0ca: 0000000000 goto 0x000;
|
||||
0cb: 0000000000 goto 0x000;
|
||||
0cc: 0000000000 goto 0x000;
|
||||
0cd: 0000000000 goto 0x000;
|
||||
0ce: 0000000000 goto 0x000;
|
||||
0cf: 0000000000 goto 0x000;
|
||||
0d0: 0000000000 goto 0x000;
|
||||
0d1: 0000000000 goto 0x000;
|
||||
0d2: 0000000000 goto 0x000;
|
||||
0d3: 0000000000 goto 0x000;
|
||||
0d4: 0000000000 goto 0x000;
|
||||
0d5: 0000000000 goto 0x000;
|
||||
0d6: 0000000000 goto 0x000;
|
||||
0d7: 0000000000 goto 0x000;
|
||||
0d8: 0000000000 goto 0x000;
|
||||
0d9: 0000000000 goto 0x000;
|
||||
0da: 0000000000 goto 0x000;
|
||||
0db: 0000000000 goto 0x000;
|
||||
0dc: 0000000000 goto 0x000;
|
||||
0dd: 0000000000 goto 0x000;
|
||||
0de: 0000000000 goto 0x000;
|
||||
0df: 0000000000 goto 0x000;
|
||||
0e0: 0000000000 goto 0x000;
|
||||
0e1: 0000000000 goto 0x000;
|
||||
0e2: 0000000000 goto 0x000;
|
||||
0e3: 0000000000 goto 0x000;
|
||||
0e4: 0000000000 goto 0x000;
|
||||
0e5: 0000000000 goto 0x000;
|
||||
0e6: 0000000000 goto 0x000;
|
||||
0e7: 0000000000 goto 0x000;
|
||||
0e8: 0000000000 goto 0x000;
|
||||
0e9: 0000000000 goto 0x000;
|
||||
0ea: 0000000000 goto 0x000;
|
||||
0eb: 0000000000 goto 0x000;
|
||||
0ec: 0000000000 goto 0x000;
|
||||
0ed: 0000000000 goto 0x000;
|
||||
0ee: 0000000000 goto 0x000;
|
||||
0ef: 0000000000 goto 0x000;
|
||||
0f0: 0000000000 goto 0x000;
|
||||
0f1: 0000000000 goto 0x000;
|
||||
0f2: 0000000000 goto 0x000;
|
||||
0f3: 0000000000 goto 0x000;
|
||||
0f4: 0000000000 goto 0x000;
|
||||
0f5: 0000000000 goto 0x000;
|
||||
0f6: 0000000000 goto 0x000;
|
||||
0f7: 0000000000 goto 0x000;
|
||||
0f8: 0000000000 goto 0x000;
|
||||
0f9: 0000000000 goto 0x000;
|
||||
0fa: 0000000000 goto 0x000;
|
||||
0fb: 0000000000 goto 0x000;
|
||||
0fc: 0000000000 goto 0x000;
|
||||
0fd: 0000000000 goto 0x000;
|
||||
0fe: 0000000000 goto 0x000;
|
||||
0ff: 0000000000 goto 0x000;
|
||||
100: 0000000000 goto 0x000;
|
||||
101: 0198374011 OPC = PC - 1; fetch; goto 0x033;
|
||||
102: 000000000f halt
|
||||
103: 0010182140 MDR = TOS = H; wr; goto 0x002;
|
||||
104: 0010182140 MDR = TOS = H; wr; goto 0x002;
|
||||
105: 0010182140 MDR = TOS = H; wr; goto 0x002;
|
||||
106: 0000000000 goto 0x000;
|
||||
107: 0000000000 goto 0x000;
|
||||
108: 0000000000 goto 0x000;
|
||||
109: 0000000000 goto 0x000;
|
||||
10a: 0000000000 goto 0x000;
|
||||
10b: 0000000000 goto 0x000;
|
||||
10c: 0000000000 goto 0x000;
|
||||
10d: 0000000000 goto 0x000;
|
||||
10e: 0000000000 goto 0x000;
|
||||
10f: 0000000000 goto 0x000;
|
||||
110: 0000000000 goto 0x000;
|
||||
111: 0000000000 goto 0x000;
|
||||
112: 0000000000 goto 0x000;
|
||||
113: 0000000000 goto 0x000;
|
||||
114: 0000000000 goto 0x000;
|
||||
115: 0128350211 PC = PC + 1; fetch; goto 0x025;
|
||||
116: 0000000000 goto 0x000;
|
||||
117: 0000000000 goto 0x000;
|
||||
118: 0000000000 goto 0x000;
|
||||
119: 0000000000 goto 0x000;
|
||||
11a: 0000000000 goto 0x000;
|
||||
11b: 0000000000 goto 0x000;
|
||||
11c: 0000000000 goto 0x000;
|
||||
11d: 0000000000 goto 0x000;
|
||||
11e: 0000000000 goto 0x000;
|
||||
11f: 0000000000 goto 0x000;
|
||||
120: 0000000000 goto 0x000;
|
||||
121: 0000000000 goto 0x000;
|
||||
122: 0000000000 goto 0x000;
|
||||
123: 0000000000 goto 0x000;
|
||||
124: 0000000000 goto 0x000;
|
||||
125: 0000000000 goto 0x000;
|
||||
126: 0000000000 goto 0x000;
|
||||
127: 0000000000 goto 0x000;
|
||||
128: 0000000000 goto 0x000;
|
||||
129: 0000000000 goto 0x000;
|
||||
12a: 0000000000 goto 0x000;
|
||||
12b: 0000000000 goto 0x000;
|
||||
12c: 0000000000 goto 0x000;
|
||||
12d: 0000000000 goto 0x000;
|
||||
12e: 0000000000 goto 0x000;
|
||||
12f: 0000000000 goto 0x000;
|
||||
130: 0000000000 goto 0x000;
|
||||
131: 0000000000 goto 0x000;
|
||||
132: 0000000000 goto 0x000;
|
||||
133: 0000000000 goto 0x000;
|
||||
134: 0000000000 goto 0x000;
|
||||
135: 0000000000 goto 0x000;
|
||||
136: 0140350211 PC = PC + 1; fetch; goto 0x028;
|
||||
137: 0000000000 goto 0x000;
|
||||
138: 0000000000 goto 0x000;
|
||||
139: 0000000000 goto 0x000;
|
||||
13a: 0000000000 goto 0x000;
|
||||
13b: 0000000000 goto 0x000;
|
||||
13c: 0000000000 goto 0x000;
|
||||
13d: 0000000000 goto 0x000;
|
||||
13e: 0000000000 goto 0x000;
|
||||
13f: 0000000000 goto 0x000;
|
||||
140: 0000000000 goto 0x000;
|
||||
141: 0000000000 goto 0x000;
|
||||
142: 0000000000 goto 0x000;
|
||||
143: 0000000000 goto 0x000;
|
||||
144: 0000000000 goto 0x000;
|
||||
145: 0000000000 goto 0x000;
|
||||
146: 0000000000 goto 0x000;
|
||||
147: 0000000000 goto 0x000;
|
||||
148: 0000000000 goto 0x000;
|
||||
149: 0000000000 goto 0x000;
|
||||
14a: 0000000000 goto 0x000;
|
||||
14b: 0000000000 goto 0x000;
|
||||
14c: 0000000000 goto 0x000;
|
||||
14d: 0000000000 goto 0x000;
|
||||
14e: 0000000000 goto 0x000;
|
||||
14f: 0000000000 goto 0x000;
|
||||
150: 0000000000 goto 0x000;
|
||||
151: 0000000000 goto 0x000;
|
||||
152: 0000000000 goto 0x000;
|
||||
153: 0000000000 goto 0x000;
|
||||
154: 0000000000 goto 0x000;
|
||||
155: 0000000000 goto 0x000;
|
||||
156: 0000000000 goto 0x000;
|
||||
157: 0000000000 goto 0x000;
|
||||
158: 0000000000 goto 0x000;
|
||||
159: 0000000000 goto 0x000;
|
||||
15a: 0000000000 goto 0x000;
|
||||
15b: 0000000000 goto 0x000;
|
||||
15c: 0000000000 goto 0x000;
|
||||
15d: 0000000000 goto 0x000;
|
||||
15e: 0000000000 goto 0x000;
|
||||
15f: 0000000000 goto 0x000;
|
||||
160: 0000000000 goto 0x000;
|
||||
161: 0000000000 goto 0x000;
|
||||
162: 0000000000 goto 0x000;
|
||||
163: 0000000000 goto 0x000;
|
||||
164: 0000000000 goto 0x000;
|
||||
165: 0000000000 goto 0x000;
|
||||
166: 0000000000 goto 0x000;
|
||||
167: 0000000000 goto 0x000;
|
||||
168: 0000000000 goto 0x000;
|
||||
169: 0000000000 goto 0x000;
|
||||
16a: 0000000000 goto 0x000;
|
||||
16b: 0000000000 goto 0x000;
|
||||
16c: 0000000000 goto 0x000;
|
||||
16d: 0000000000 goto 0x000;
|
||||
16e: 0000000000 goto 0x000;
|
||||
16f: 0000000000 goto 0x000;
|
||||
170: 0000000000 goto 0x000;
|
||||
171: 0000000000 goto 0x000;
|
||||
172: 0000000000 goto 0x000;
|
||||
173: 0000000000 goto 0x000;
|
||||
174: 0000000000 goto 0x000;
|
||||
175: 0000000000 goto 0x000;
|
||||
176: 0000000000 goto 0x000;
|
||||
177: 0000000000 goto 0x000;
|
||||
178: 0000000000 goto 0x000;
|
||||
179: 0000000000 goto 0x000;
|
||||
17a: 0000000000 goto 0x000;
|
||||
17b: 0000000000 goto 0x000;
|
||||
17c: 0000000000 goto 0x000;
|
||||
17d: 0000000000 goto 0x000;
|
||||
17e: 0000000000 goto 0x000;
|
||||
17f: 0000000000 goto 0x000;
|
||||
180: 0000000000 goto 0x000;
|
||||
181: 0000000000 goto 0x000;
|
||||
182: 0000000000 goto 0x000;
|
||||
183: 0000000000 goto 0x000;
|
||||
184: 0000000000 goto 0x000;
|
||||
185: 0000000000 goto 0x000;
|
||||
186: 0000000000 goto 0x000;
|
||||
187: 0000000000 goto 0x000;
|
||||
188: 0000000000 goto 0x000;
|
||||
189: 0000000000 goto 0x000;
|
||||
18a: 0000000000 goto 0x000;
|
||||
18b: 0000000000 goto 0x000;
|
||||
18c: 0000000000 goto 0x000;
|
||||
18d: 0000000000 goto 0x000;
|
||||
18e: 0000000000 goto 0x000;
|
||||
18f: 0000000000 goto 0x000;
|
||||
190: 0000000000 goto 0x000;
|
||||
191: 0000000000 goto 0x000;
|
||||
192: 0000000000 goto 0x000;
|
||||
193: 0000000000 goto 0x000;
|
||||
194: 0000000000 goto 0x000;
|
||||
195: 0000000000 goto 0x000;
|
||||
196: 0000000000 goto 0x000;
|
||||
197: 0000000000 goto 0x000;
|
||||
198: 0000000000 goto 0x000;
|
||||
199: 0000000000 goto 0x000;
|
||||
19a: 0000000000 goto 0x000;
|
||||
19b: 0000000000 goto 0x000;
|
||||
19c: 0000000000 goto 0x000;
|
||||
19d: 0000000000 goto 0x000;
|
||||
19e: 0000000000 goto 0x000;
|
||||
19f: 0000000000 goto 0x000;
|
||||
1a0: 0000000000 goto 0x000;
|
||||
1a1: 0000000000 goto 0x000;
|
||||
1a2: 0000000000 goto 0x000;
|
||||
1a3: 0000000000 goto 0x000;
|
||||
1a4: 0000000000 goto 0x000;
|
||||
1a5: 0000000000 goto 0x000;
|
||||
1a6: 0000000000 goto 0x000;
|
||||
1a7: 0000000000 goto 0x000;
|
||||
1a8: 0000000000 goto 0x000;
|
||||
1a9: 0000000000 goto 0x000;
|
||||
1aa: 0000000000 goto 0x000;
|
||||
1ab: 0000000000 goto 0x000;
|
||||
1ac: 0000000000 goto 0x000;
|
||||
1ad: 0000000000 goto 0x000;
|
||||
1ae: 0000000000 goto 0x000;
|
||||
1af: 0000000000 goto 0x000;
|
||||
1b0: 0000000000 goto 0x000;
|
||||
1b1: 0000000000 goto 0x000;
|
||||
1b2: 0000000000 goto 0x000;
|
||||
1b3: 0000000000 goto 0x000;
|
||||
1b4: 0000000000 goto 0x000;
|
||||
1b5: 0000000000 goto 0x000;
|
||||
1b6: 0000000000 goto 0x000;
|
||||
1b7: 0000000000 goto 0x000;
|
||||
1b8: 0000000000 goto 0x000;
|
||||
1b9: 0000000000 goto 0x000;
|
||||
1ba: 0000000000 goto 0x000;
|
||||
1bb: 0000000000 goto 0x000;
|
||||
1bc: 0000000000 goto 0x000;
|
||||
1bd: 0000000000 goto 0x000;
|
||||
1be: 0000000000 goto 0x000;
|
||||
1bf: 0000000000 goto 0x000;
|
||||
1c0: 0000000000 goto 0x000;
|
||||
1c1: 0000000000 goto 0x000;
|
||||
1c2: 0000000000 goto 0x000;
|
||||
1c3: 0000000000 goto 0x000;
|
||||
1c4: 0000000000 goto 0x000;
|
||||
1c5: 0000000000 goto 0x000;
|
||||
1c6: 0000000000 goto 0x000;
|
||||
1c7: 0000000000 goto 0x000;
|
||||
1c8: 0000000000 goto 0x000;
|
||||
1c9: 0000000000 goto 0x000;
|
||||
1ca: 0000000000 goto 0x000;
|
||||
1cb: 0000000000 goto 0x000;
|
||||
1cc: 0000000000 goto 0x000;
|
||||
1cd: 0000000000 goto 0x000;
|
||||
1ce: 0000000000 goto 0x000;
|
||||
1cf: 0000000000 goto 0x000;
|
||||
1d0: 0000000000 goto 0x000;
|
||||
1d1: 0000000000 goto 0x000;
|
||||
1d2: 0000000000 goto 0x000;
|
||||
1d3: 0000000000 goto 0x000;
|
||||
1d4: 0000000000 goto 0x000;
|
||||
1d5: 0000000000 goto 0x000;
|
||||
1d6: 0000000000 goto 0x000;
|
||||
1d7: 0000000000 goto 0x000;
|
||||
1d8: 0000000000 goto 0x000;
|
||||
1d9: 0000000000 goto 0x000;
|
||||
1da: 0000000000 goto 0x000;
|
||||
1db: 0000000000 goto 0x000;
|
||||
1dc: 0000000000 goto 0x000;
|
||||
1dd: 0000000000 goto 0x000;
|
||||
1de: 0000000000 goto 0x000;
|
||||
1df: 0000000000 goto 0x000;
|
||||
1e0: 0000000000 goto 0x000;
|
||||
1e1: 0000000000 goto 0x000;
|
||||
1e2: 0000000000 goto 0x000;
|
||||
1e3: 0000000000 goto 0x000;
|
||||
1e4: 0000000000 goto 0x000;
|
||||
1e5: 0000000000 goto 0x000;
|
||||
1e6: 0000000000 goto 0x000;
|
||||
1e7: 0000000000 goto 0x000;
|
||||
1e8: 0000000000 goto 0x000;
|
||||
1e9: 0000000000 goto 0x000;
|
||||
1ea: 0000000000 goto 0x000;
|
||||
1eb: 0000000000 goto 0x000;
|
||||
1ec: 0000000000 goto 0x000;
|
||||
1ed: 0000000000 goto 0x000;
|
||||
1ee: 0000000000 goto 0x000;
|
||||
1ef: 0000000000 goto 0x000;
|
||||
1f0: 0000000000 goto 0x000;
|
||||
1f1: 0000000000 goto 0x000;
|
||||
1f2: 0000000000 goto 0x000;
|
||||
1f3: 0000000000 goto 0x000;
|
||||
1f4: 0000000000 goto 0x000;
|
||||
1f5: 0000000000 goto 0x000;
|
||||
1f6: 0000000000 goto 0x000;
|
||||
1f7: 0000000000 goto 0x000;
|
||||
1f8: 0000000000 goto 0x000;
|
||||
1f9: 0000000000 goto 0x000;
|
||||
1fa: 0000000000 goto 0x000;
|
||||
1fb: 0000000000 goto 0x000;
|
||||
1fc: 0000000000 goto 0x000;
|
||||
1fd: 0000000000 goto 0x000;
|
||||
1fe: 0000000000 goto 0x000;
|
||||
1ff: 0000000000 goto 0x000;
|
5
Aflevering4-IJVM-Udvidelse/test_ishl.bc
Normal file
5
Aflevering4-IJVM-Udvidelse/test_ishl.bc
Normal file
|
@ -0,0 +1,5 @@
|
|||
main index: 0
|
||||
method area: 10 bytes
|
||||
00 03 00 00 15 01 15 02 78 ac
|
||||
constant pool: 1 words
|
||||
00000000
|
8
Aflevering4-IJVM-Udvidelse/test_ishl.j
Normal file
8
Aflevering4-IJVM-Udvidelse/test_ishl.j
Normal file
|
@ -0,0 +1,8 @@
|
|||
.method main
|
||||
.args 3
|
||||
.define a = 1
|
||||
.define b = 2
|
||||
iload a
|
||||
iload b
|
||||
ishl
|
||||
ireturn
|
5
Aflevering4-IJVM-Udvidelse/test_ishr.bc
Normal file
5
Aflevering4-IJVM-Udvidelse/test_ishr.bc
Normal file
|
@ -0,0 +1,5 @@
|
|||
main index: 0
|
||||
method area: 10 bytes
|
||||
00 03 00 00 15 01 15 02 7a ac
|
||||
constant pool: 1 words
|
||||
00000000
|
8
Aflevering4-IJVM-Udvidelse/test_ishr.j
Normal file
8
Aflevering4-IJVM-Udvidelse/test_ishr.j
Normal file
|
@ -0,0 +1,8 @@
|
|||
.method main
|
||||
.args 3
|
||||
.define a = 1
|
||||
.define b = 2
|
||||
iload a
|
||||
iload b
|
||||
ishr
|
||||
ireturn
|
5
Aflevering4-IJVM-Udvidelse/test_iushr.bc
Normal file
5
Aflevering4-IJVM-Udvidelse/test_iushr.bc
Normal file
|
@ -0,0 +1,5 @@
|
|||
main index: 0
|
||||
method area: 10 bytes
|
||||
00 03 00 00 15 01 15 02 7c ac
|
||||
constant pool: 1 words
|
||||
00000000
|
8
Aflevering4-IJVM-Udvidelse/test_iushr.j
Normal file
8
Aflevering4-IJVM-Udvidelse/test_iushr.j
Normal file
|
@ -0,0 +1,8 @@
|
|||
.method main
|
||||
.args 3
|
||||
.define a = 1
|
||||
.define b = 2
|
||||
iload a
|
||||
iload b
|
||||
iushr
|
||||
ireturn
|
BIN
Aflevering5-x86-64/Afl5-dComArk-x86-64.pdf
Normal file
BIN
Aflevering5-x86-64/Afl5-dComArk-x86-64.pdf
Normal file
Binary file not shown.
16
Aflevering5-x86-64/Fib.java
Normal file
16
Aflevering5-x86-64/Fib.java
Normal file
|
@ -0,0 +1,16 @@
|
|||
public class Fib {
|
||||
public static long fib(long n) {
|
||||
if (n == 0) return 0;
|
||||
if (n == 1) return 1;
|
||||
return fib(n-1) + fib(n-2);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
long a = 0;
|
||||
long r = 0;
|
||||
|
||||
a = Long.parseUnsignedLong(args[0]);
|
||||
r = fib(a);
|
||||
System.out.println("fib("+ Long.toUnsignedString(a) + ") = " + r);
|
||||
}
|
||||
}
|
35
Aflevering5-x86-64/FibIter.java
Normal file
35
Aflevering5-x86-64/FibIter.java
Normal file
|
@ -0,0 +1,35 @@
|
|||
/**
|
||||
* Created by Casper on 08-12-2015.
|
||||
*/
|
||||
public class FibIter {
|
||||
|
||||
private static long fib_iter(long a) {
|
||||
long r = 0;
|
||||
long minus_one = 1;
|
||||
long minus_two = 0;
|
||||
|
||||
if (a == 0) {
|
||||
r = 0;
|
||||
} else if (a == 1) {
|
||||
r = 1;
|
||||
} else {
|
||||
for (long i = 2; i <= a; i++) {
|
||||
r = minus_one + minus_two;
|
||||
minus_two = minus_one;
|
||||
minus_one = r;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
long a = 0;
|
||||
long r = 0;
|
||||
|
||||
a = Long.parseUnsignedLong(args[0]);
|
||||
r = fib_iter(a);
|
||||
|
||||
System.out.println("fib(" + Long.toUnsignedString(a) + ") = " + r);
|
||||
}
|
||||
}
|
BIN
Aflevering5-x86-64/Kalddiagram.pdf
Normal file
BIN
Aflevering5-x86-64/Kalddiagram.pdf
Normal file
Binary file not shown.
BIN
Aflevering5-x86-64/Stakdiagram.pdf
Normal file
BIN
Aflevering5-x86-64/Stakdiagram.pdf
Normal file
Binary file not shown.
BIN
Aflevering5-x86-64/bin/Fib.class
Normal file
BIN
Aflevering5-x86-64/bin/Fib.class
Normal file
Binary file not shown.
BIN
Aflevering5-x86-64/bin/FibIter.class
Normal file
BIN
Aflevering5-x86-64/bin/FibIter.class
Normal file
Binary file not shown.
BIN
Aflevering5-x86-64/bin/fib
Executable file
BIN
Aflevering5-x86-64/bin/fib
Executable file
Binary file not shown.
BIN
Aflevering5-x86-64/bin/fib-as
Executable file
BIN
Aflevering5-x86-64/bin/fib-as
Executable file
Binary file not shown.
BIN
Aflevering5-x86-64/bin/fib-pure-as
Executable file
BIN
Aflevering5-x86-64/bin/fib-pure-as
Executable file
Binary file not shown.
BIN
Aflevering5-x86-64/bin/fib_iter
Executable file
BIN
Aflevering5-x86-64/bin/fib_iter
Executable file
Binary file not shown.
BIN
Aflevering5-x86-64/bin/fib_iter-as
Executable file
BIN
Aflevering5-x86-64/bin/fib_iter-as
Executable file
Binary file not shown.
13
Aflevering5-x86-64/bin/timetest-iter.sh
Executable file
13
Aflevering5-x86-64/bin/timetest-iter.sh
Executable file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/bash
|
||||
echo "Iterative"
|
||||
echo " N: ${1}"
|
||||
echo "---------"
|
||||
/usr/bin/time --output=fib_iter.log -f %e ./fib_iter $1 &> /dev/null;
|
||||
echo "fib_iter : `cat fib_iter.log`"
|
||||
rm fib_iter.log
|
||||
/usr/bin/time --output=fib_iter-as.log -f %e ./fib_iter-as $1 &> /dev/null;
|
||||
echo "fib_iter-as : `cat fib_iter-as.log`"
|
||||
rm fib_iter-as.log
|
||||
/usr/bin/time --output=fib_iter-java.log -f %e ./fib_iter-java $1 &> /dev/null;
|
||||
echo "fib_iter-java : `cat fib_iter-java.log`"
|
||||
rm fib_iter-java.log
|
13
Aflevering5-x86-64/bin/timetest-rec.sh
Executable file
13
Aflevering5-x86-64/bin/timetest-rec.sh
Executable file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/bash
|
||||
echo "Recursive"
|
||||
echo " N: ${1}"
|
||||
echo "---------"
|
||||
/usr/bin/time --output=fib.log -f %e ./fib $1 &> /dev/null;
|
||||
echo "fib : `cat fib.log`"
|
||||
rm fib.log
|
||||
/usr/bin/time --output=fib-as.log -f %e ./fib-as $1 &> /dev/null;
|
||||
echo "fib-as : `cat fib-as.log`"
|
||||
rm fib-as.log
|
||||
/usr/bin/time --output=fib-java.log -f %e ./fib-java $1 &> /dev/null;
|
||||
echo "fib-java : `cat fib-java.log`"
|
||||
rm fib-java.log
|
21
Aflevering5-x86-64/bin/timetest.sh
Executable file
21
Aflevering5-x86-64/bin/timetest.sh
Executable file
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
echo " N: ${1}"
|
||||
echo "---------"
|
||||
/usr/bin/time --output=fib.log -f %e ./fib $1 &> /dev/null;
|
||||
echo "fib : `cat fib.log`"
|
||||
rm fib.log
|
||||
/usr/bin/time --output=fib-as.log -f %e ./fib-as $1 &> /dev/null;
|
||||
echo "fib-as : `cat fib-as.log`"
|
||||
rm fib-as.log
|
||||
/usr/bin/time --output=fib_iter.log -f %e ./fib_iter $1 &> /dev/null;
|
||||
echo "fib_iter : `cat fib_iter.log`"
|
||||
rm fib_iter.log
|
||||
/usr/bin/time --output=fib_iter-as.log -f %e ./fib_iter-as $1 &> /dev/null;
|
||||
echo "fib_iter-as : `cat fib_iter-as.log`"
|
||||
rm fib_iter-as.log
|
||||
/usr/bin/time --output=fib_iter-java.log -f %e ./fib_iter-java $1 &> /dev/null;
|
||||
echo "fib_iter-java : `cat fib_iter-java.log`"
|
||||
rm fib_iter-java.log
|
||||
/usr/bin/time --output=fib-java.log -f %e ./fib-java $1 &> /dev/null;
|
||||
echo "fib-java : `cat fib-java.log`"
|
||||
rm fib-java.log
|
13
Aflevering5-x86-64/fib-ext.c
Normal file
13
Aflevering5-x86-64/fib-ext.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
extern unsigned long long fib(unsigned long long n);
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
unsigned long long n, r;
|
||||
n = atoll(argv[1]);
|
||||
r = fib(n);
|
||||
printf("fib(%llu) = %llu\n", n, r);
|
||||
|
||||
return 0;
|
||||
}
|
96
Aflevering5-x86-64/fib-pure-as.s
Normal file
96
Aflevering5-x86-64/fib-pure-as.s
Normal file
|
@ -0,0 +1,96 @@
|
|||
.global main
|
||||
|
||||
.section .data
|
||||
result: .asciz "fib(%llu) = %llu\n"
|
||||
a: .quad 0
|
||||
|
||||
.section .text
|
||||
main: push %rbp # Save the old base pointer to the
|
||||
# stack.
|
||||
# This also makes sure that rsp is
|
||||
# 16-byte aligned.
|
||||
movq %rsp, %rbp # Write the new base pointer.
|
||||
subq $16, %rsp # The stack frame is extended to fit
|
||||
# the three local variables and the
|
||||
# old value of the base pointer.
|
||||
# ABI requires 16-byte alignment!
|
||||
# This is not a problem here but it
|
||||
# is very noteworthy!
|
||||
|
||||
movq 8(%rsi), %rdi # Retrieve the first argument from
|
||||
# the array of arguments.
|
||||
# The retrieved value is n in fib(n)
|
||||
call atoll # Convert the argument to long long
|
||||
movq %rax, %rdi # Save the long long as the argument
|
||||
# for the fib(n) function.
|
||||
movq %rax, a # Save the long long in a to use it
|
||||
# later in the printed output.
|
||||
|
||||
call fib # Call the Fibonacci-function
|
||||
|
||||
movq a, %rsi # Move the number a to rsi to use it
|
||||
# as the second argument for print.
|
||||
movq %rax, %rdx # Move to result of the fib(n)-call
|
||||
# to rdx, to use it as the third
|
||||
# argument for printf.
|
||||
movq $result, %rdi # Move the string to rdi, for use as
|
||||
# as the first argument for print.
|
||||
xor %al,%al # Specify that no vector arguments
|
||||
# are to be used.
|
||||
|
||||
call printf # Print the string with values
|
||||
|
||||
xor %rax, %rax # Make sure to return 0 to indicate
|
||||
# a successful run of the program.
|
||||
jmp end # Jump to end to return from the
|
||||
# program with the return value 0.
|
||||
|
||||
|
||||
fib: push %rbp # Save old rbp to stack and align
|
||||
# the stack pointer to 16-bytes,
|
||||
# since the return address already
|
||||
# has been pushed. Thus, the size
|
||||
# of the two values totals to
|
||||
# a size of 16-bytes.
|
||||
movq %rsp, %rbp # Write new base pointer.
|
||||
|
||||
cmpq $1, %rdi # Compare the argument to 1.
|
||||
je one # If equal to one, return 1.
|
||||
cmpq $0, %rdi # Compare the argument to 0.
|
||||
jle zero # If equal to zero or negative go
|
||||
# to 'zero' and return zero.
|
||||
|
||||
decq %rdi # Decrement n by 1.
|
||||
push %rdi # Save the value n - 1 in stack to
|
||||
# be able to recover it later.
|
||||
|
||||
call fib # Call the function. The value of
|
||||
# rax is now equal to the return
|
||||
# value of fib(n-1).
|
||||
|
||||
pop %rdi # Restore rdi = n-1
|
||||
decq %rdi # Decrement rdi by 1.
|
||||
push %rax # Save the result of fib(n-1)
|
||||
|
||||
call fib # Call the function. The value of
|
||||
# rax is now equal to the return
|
||||
# value of fib(n-2).
|
||||
addq (%rsp),%rax # Add fib(n-1) to rax which contains
|
||||
# the reuslt of fib(n-2). fib(n-1)
|
||||
# is retrieved from the stack.
|
||||
jmp end # Jump to 'end' to leave and return
|
||||
# from this call.
|
||||
|
||||
zero: movq $0, %rax # Set return value to 0.
|
||||
jmp end
|
||||
one: movq $1, %rax # Set return value to 1.
|
||||
end: leave # Return the state of the base and
|
||||
# stack pointers to their
|
||||
# original state. By moving the
|
||||
# base pointers value into the
|
||||
# stack pointer and moving the old
|
||||
# base pointer value into the stack
|
||||
# pointer.
|
||||
ret # Return from the current function
|
||||
# with the contents of rax as the
|
||||
# return value.
|
27
Aflevering5-x86-64/fib.c
Normal file
27
Aflevering5-x86-64/fib.c
Normal file
|
@ -0,0 +1,27 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
unsigned long long fib(unsigned long long n) {
|
||||
unsigned long long r; // Declare a local variable r
|
||||
if (n == 0) { // If n is zero, return 0.
|
||||
r = 0;
|
||||
} else if (n == 1) { // If n is one, return 1.
|
||||
r = 1;
|
||||
} else { // Else, calculate the number
|
||||
r = fib(n-1) + fib(n-2); // to return by utilising
|
||||
} // recursion.
|
||||
return r;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
unsigned long long n, r; // Define local variables
|
||||
n = atoll(argv[1]); // Convert the first argument
|
||||
// to a long long value and
|
||||
// load it into n.
|
||||
r = fib(n); // Set the variable r to the
|
||||
// n'th Fibonacci number.
|
||||
// Print the number found.
|
||||
printf("fib(%lld) = %lld\n", n, r);
|
||||
return 0; // Return 0 to indicate a
|
||||
// successful execution.
|
||||
}
|
33
Aflevering5-x86-64/fib.s
Normal file
33
Aflevering5-x86-64/fib.s
Normal file
|
@ -0,0 +1,33 @@
|
|||
.global fib
|
||||
.section .text
|
||||
fib: push %rbp # Save old rbp to stack and align
|
||||
# the stack pointer to 16-bytes.
|
||||
movq %rsp, %rbp # Write new base pointer.
|
||||
cmpq $1, %rdi # Compare the argument to 1.
|
||||
je one # If equal to one go to 'one' and
|
||||
# return 1.
|
||||
cmpq $0, %rdi # Compare the argument to 0.
|
||||
je zero # If equal to zero go to 'zero'
|
||||
# and return zero.
|
||||
|
||||
decq %rdi # Decrement n by 1.
|
||||
push %rdi # Save the value n - 1 on the stack.
|
||||
call fib # Call the function.
|
||||
pop %rdi # Restore rdi = n-1
|
||||
decq %rdi # Decrement rdi by 1.
|
||||
push %rax # Save the result of fib(n-1)
|
||||
call fib # Call the function.
|
||||
addq (%rsp),%rax # Add the top element (fib(n-1)) to
|
||||
# rax which contains fib(n-2).
|
||||
jmp end # Jump to 'end' to leave and return
|
||||
# from this call to the caller.
|
||||
|
||||
zero: movq $0, %rax # Set return value to 0.
|
||||
jmp end
|
||||
one: movq $1, %rax # Set return value to 1.
|
||||
end: leave # Return the state of the base and
|
||||
# stack pointers to their
|
||||
# original state.
|
||||
ret # Return from the current function
|
||||
# with the contents of rax as the
|
||||
# return value.
|
13
Aflevering5-x86-64/fib_iter-ext.c
Normal file
13
Aflevering5-x86-64/fib_iter-ext.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
extern unsigned long long fib_iter(unsigned long long n);
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
unsigned long long n, r;
|
||||
n = atoll(argv[1]);
|
||||
r = fib_iter(n);
|
||||
printf("fib(%llu) = %llu\n", n, r);
|
||||
|
||||
return 0;
|
||||
}
|
35
Aflevering5-x86-64/fib_iter.c
Normal file
35
Aflevering5-x86-64/fib_iter.c
Normal file
|
@ -0,0 +1,35 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
unsigned long long fib_iter(unsigned long long a)
|
||||
{
|
||||
unsigned long long r = 0;
|
||||
unsigned long long minus_one = 1;
|
||||
unsigned long long minus_two = 0;
|
||||
unsigned long long i;
|
||||
|
||||
if (a == 0) {
|
||||
r = 0;
|
||||
} else if (a == 1) {
|
||||
r = 1;
|
||||
} else {
|
||||
for (i = 2; i <= a; i++) {
|
||||
r = minus_one + minus_two;
|
||||
minus_two = minus_one;
|
||||
minus_one = r;
|
||||
}
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
unsigned long long a = 0;
|
||||
unsigned long long r = 0;
|
||||
|
||||
a = atol(argv[1]);
|
||||
r = fib_iter(a);
|
||||
printf("fib(%llu) = %llu\n",a,r);
|
||||
return 0;
|
||||
}
|
117
Aflevering5-x86-64/fib_iter.objdump.s
Normal file
117
Aflevering5-x86-64/fib_iter.objdump.s
Normal file
|
@ -0,0 +1,117 @@
|
|||
|
||||
fib_iter.o: file format elf64-x86-64
|
||||
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
0000000000000000 <fib_iter>:
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
unsigned long long fib_iter(unsigned long long a)
|
||||
{
|
||||
0: 55 push %rbp
|
||||
1: 48 89 e5 mov %rsp,%rbp
|
||||
4: 48 89 7d d8 mov %rdi,-0x28(%rbp)
|
||||
unsigned long long r = 0;
|
||||
8: 48 c7 45 f8 00 00 00 movq $0x0,-0x8(%rbp)
|
||||
f: 00
|
||||
unsigned long long minus_one = 1;
|
||||
10: 48 c7 45 f0 01 00 00 movq $0x1,-0x10(%rbp)
|
||||
17: 00
|
||||
unsigned long long minus_two = 0;
|
||||
18: 48 c7 45 e8 00 00 00 movq $0x0,-0x18(%rbp)
|
||||
1f: 00
|
||||
unsigned long long i;
|
||||
|
||||
if (a == 0) {
|
||||
20: 48 83 7d d8 00 cmpq $0x0,-0x28(%rbp)
|
||||
25: 75 0a jne 31 <fib_iter+0x31>
|
||||
r = 0;
|
||||
27: 48 c7 45 f8 00 00 00 movq $0x0,-0x8(%rbp)
|
||||
2e: 00
|
||||
2f: eb 49 jmp 7a <fib_iter+0x7a>
|
||||
} else if (a == 1) {
|
||||
31: 48 83 7d d8 01 cmpq $0x1,-0x28(%rbp)
|
||||
36: 75 0a jne 42 <fib_iter+0x42>
|
||||
r = 1;
|
||||
38: 48 c7 45 f8 01 00 00 movq $0x1,-0x8(%rbp)
|
||||
3f: 00
|
||||
40: eb 38 jmp 7a <fib_iter+0x7a>
|
||||
} else {
|
||||
for (i = 2; i <= a; i++) {
|
||||
42: 48 c7 45 e0 02 00 00 movq $0x2,-0x20(%rbp)
|
||||
49: 00
|
||||
4a: eb 24 jmp 70 <fib_iter+0x70>
|
||||
r = minus_one + minus_two;
|
||||
4c: 48 8b 55 f0 mov -0x10(%rbp),%rdx
|
||||
50: 48 8b 45 e8 mov -0x18(%rbp),%rax
|
||||
54: 48 01 d0 add %rdx,%rax
|
||||
57: 48 89 45 f8 mov %rax,-0x8(%rbp)
|
||||
minus_two = minus_one;
|
||||
5b: 48 8b 45 f0 mov -0x10(%rbp),%rax
|
||||
5f: 48 89 45 e8 mov %rax,-0x18(%rbp)
|
||||
minus_one = r;
|
||||
63: 48 8b 45 f8 mov -0x8(%rbp),%rax
|
||||
67: 48 89 45 f0 mov %rax,-0x10(%rbp)
|
||||
if (a == 0) {
|
||||
r = 0;
|
||||
} else if (a == 1) {
|
||||
r = 1;
|
||||
} else {
|
||||
for (i = 2; i <= a; i++) {
|
||||
6b: 48 83 45 e0 01 addq $0x1,-0x20(%rbp)
|
||||
70: 48 8b 45 e0 mov -0x20(%rbp),%rax
|
||||
74: 48 3b 45 d8 cmp -0x28(%rbp),%rax
|
||||
78: 76 d2 jbe 4c <fib_iter+0x4c>
|
||||
minus_two = minus_one;
|
||||
minus_one = r;
|
||||
}
|
||||
}
|
||||
|
||||
return r;
|
||||
7a: 48 8b 45 f8 mov -0x8(%rbp),%rax
|
||||
}
|
||||
7e: 5d pop %rbp
|
||||
7f: c3 retq
|
||||
|
||||
0000000000000080 <main>:
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
80: 55 push %rbp
|
||||
81: 48 89 e5 mov %rsp,%rbp
|
||||
84: 48 83 ec 20 sub $0x20,%rsp
|
||||
88: 89 7d ec mov %edi,-0x14(%rbp)
|
||||
8b: 48 89 75 e0 mov %rsi,-0x20(%rbp)
|
||||
unsigned long long a = 0;
|
||||
8f: 48 c7 45 f8 00 00 00 movq $0x0,-0x8(%rbp)
|
||||
96: 00
|
||||
unsigned long long r = 0;
|
||||
97: 48 c7 45 f0 00 00 00 movq $0x0,-0x10(%rbp)
|
||||
9e: 00
|
||||
|
||||
a = atol(argv[1]);
|
||||
9f: 48 8b 45 e0 mov -0x20(%rbp),%rax
|
||||
a3: 48 83 c0 08 add $0x8,%rax
|
||||
a7: 48 8b 00 mov (%rax),%rax
|
||||
aa: 48 89 c7 mov %rax,%rdi
|
||||
ad: e8 00 00 00 00 callq b2 <main+0x32>
|
||||
b2: 48 89 45 f8 mov %rax,-0x8(%rbp)
|
||||
r = fib_iter(a);
|
||||
b6: 48 8b 45 f8 mov -0x8(%rbp),%rax
|
||||
ba: 48 89 c7 mov %rax,%rdi
|
||||
bd: e8 00 00 00 00 callq c2 <main+0x42>
|
||||
c2: 48 89 45 f0 mov %rax,-0x10(%rbp)
|
||||
printf("fib(%llu) = %llu\n",a,r);
|
||||
c6: 48 8b 55 f0 mov -0x10(%rbp),%rdx
|
||||
ca: 48 8b 45 f8 mov -0x8(%rbp),%rax
|
||||
ce: 48 89 c6 mov %rax,%rsi
|
||||
d1: bf 00 00 00 00 mov $0x0,%edi
|
||||
d6: b8 00 00 00 00 mov $0x0,%eax
|
||||
db: e8 00 00 00 00 callq e0 <main+0x60>
|
||||
return 0;
|
||||
e0: b8 00 00 00 00 mov $0x0,%eax
|
||||
}
|
||||
e5: c9 leaveq
|
||||
e6: c3 retq
|
39
Aflevering5-x86-64/fib_iter.s
Normal file
39
Aflevering5-x86-64/fib_iter.s
Normal file
|
@ -0,0 +1,39 @@
|
|||
.section .text
|
||||
.global fib_iter
|
||||
|
||||
fib_iter:
|
||||
push %rbp # Save old base pointer to stack.
|
||||
# This also makes sure that rsp is
|
||||
# 16-byte aligned.
|
||||
movq %rsp, %rbp # Write new base pointer
|
||||
cmpq $1, %rdi # Compare the argument to 1
|
||||
je one # If n = 1 go to 'one' label.
|
||||
cmpq $0, %rdi
|
||||
je zero # If n = 0, go to 'zero' label.
|
||||
|
||||
|
||||
movq $1, %rcx # Set minus_one (rcx) to 1
|
||||
movq $0, %rdx # Set minus_two (rdx) to 0
|
||||
movq %rcx, %rax # Set r (rax) to minus_one (rcx)
|
||||
|
||||
loop: addq %rdx, %rax # r (rax) = minus_one (rcx)
|
||||
# + minus_two (rdx)
|
||||
# rax is already set to minus_one
|
||||
# due to the last line in the loop
|
||||
# The first time the loop is run,
|
||||
# this is handled before the loop.
|
||||
movq %rcx, %rdx # minus_two (rdx) = minus_one (rcx)
|
||||
movq %rax, %rcx # minus_one (rcx) = r (rax)
|
||||
decq %rdi # Decrement the counter by 1.
|
||||
cmpq $1, %rdi # Loop if the counter is over 1:
|
||||
jle end # If counter is 1:
|
||||
# End and return r (rax)
|
||||
jmp loop # If counter is 0: loop.
|
||||
|
||||
zero: movq $0, %rax # Return 0.
|
||||
jmp end
|
||||
one: movq $1, %rax # Return 1.
|
||||
end: leave # Return the state of the base and
|
||||
# stack pointers to their
|
||||
# original state.
|
||||
ret # Return r (rax)
|
24
Aflevering5-x86-64/makefile
Normal file
24
Aflevering5-x86-64/makefile
Normal file
|
@ -0,0 +1,24 @@
|
|||
CC=gcc
|
||||
CFLAGS=
|
||||
INSTALL_PATH=/usr/local
|
||||
all: fib fib-as fib_iter fib_iter-as fib-pure-as
|
||||
fib: fib.c
|
||||
$(CC) $(CFLAGS) fib.c -o bin/fib
|
||||
fib-as: fib-ext.c fib.s
|
||||
$(CC) $(CFLAGS) fib-ext.c fib.s -o bin/fib-as
|
||||
fib_iter: fib_iter.c
|
||||
$(CC) $(CFLAGS) fib_iter.c -o bin/fib_iter
|
||||
fib_iter-as: fib_iter-ext.c fib_iter.s
|
||||
$(CC) $(CFLAGS) fib_iter-ext.c fib_iter.s -o bin/fib_iter-as
|
||||
fib-pure-as: fib-pure-as.s
|
||||
$(CC) $(CFLAGS) fib-pure-as.s -o bin/fib-pure-as
|
||||
install:
|
||||
cp bin/fib* ${INSTALL_PATH}/bin
|
||||
uninstall:
|
||||
rm ${INSTALL_PATH}/bin/fib
|
||||
rm ${INSTALL_PATH}/bin/fib_iter
|
||||
rm ${INSTALL_PATH}/bin/fib-as
|
||||
rm ${INSTALL_PATH}/bin/fib_iter-as
|
||||
rm ${INSTALL_PATH}/bin/fib-pure-as
|
||||
clean:
|
||||
rm bin/fib*
|
Loading…
Reference in New Issue
Block a user