mips_sim
1092 spim2hex
mips_sim
$ cat examples/42.s li $a0, 42
li $v0, 1
syscall
li $a0,
li $v0, 11
syscall
# printf(%d, 42);
# printf(%c,
);
$ 1092 spim2hex examples/42.s 3404002a
34020001
c
3404000a
3402000b
c
mips_sim.c
:siht ekil noitcurtsni eseht gnitucexe etalumis dluohs
.snoitcurtsni SPIM rof sedoc xeh eht uoy evig lliw dnammoc ehT .srebmun lamicedaxeh sa snoitcurtsni SPIM rof sedoc noitcurtsni tib-23 eht eb lliw ot tupni ehT . SPIM eht fo tesbus elpmis llams a rof rotalumis a etirw ot si tnemngissa siht ni ksat ruoY tnemngissA ehT
snoitarepo tib gnidulcni ,C gnisitcarP UPC elpmaxe na fo gnidnatsrednu etercnoc a gnidliub yllareneG snoitcurtsni SPIM fo scitnames gnidnatsrednU snoitcurtsni SPIM fo gnidocne gnidnatsrednU
smiA rotalumis SPIM ,mis_spim :1 tnemngissA
00 00 02 41-20-1202 :detadpu tsal 0.1 :noisrev
$ cat examples/42.hex 3404002a
34020001
c
3404000a
3402000b
c
$ gcc -Wall -Werror -std=gnu99 mips_sim.c -o mips_sim $ ./mips_sim examples/42.hex
0: 0x3404002A ori$4, $0, 42
>>> $4 = 42
1: 0x34020001 ori$2, $0, 1
>>> $2 = 1
2: 0x0000000C syscall
>>> syscall 1
<<< 423: 0x3404000A ori$4, $0, 10>>> $4 = 10
4: 0x3402000B ori$2, $0, 11
>>> $2 = 11
5: 0x0000000C syscall
>>> syscall 11
<<< $ ./mips_sim -r examples/42.hex 421092 mips_sim:siht ekil ,tupni yna rof tuptuotcerroc eht dnif ot esu nac hcihw sa elbaliava si noitatnemelpmi ecnerefer Anoitatnemelpmi ecnerefeR :siht ekil ,nwohs eb dluohs sllacsys morf tuptuo eht ylno neht nevig si r- tnemugra enil-dnammoc eht fI$ cat examples/square.hex 34100004341100037210800272318802230202034020001c3404000a3402000bc$ 1092 mips_sim examples/square.hex 0: 0x34100004 ori $16, $0, 4>>> $16 = 4
1: 0x34110003 ori $17, $0, 3
>>> $17 = 3
2: 0x72108002 mul$16, $16, $16
>>> $16 = 16
3: 0x72318802 mul$17, $17, $17
>>> $17 = 9
4: 0x02302020 add$4, $17, $16
>>> $4 = 25
5: 0x34020001 ori$2, $0, 1
>>> $2 = 1
6: 0x0000000C syscall
>>> syscall 1
<<< 257: 0x3404000A ori$4, $0, 10>>> $4 = 10
8: 0x3402000B ori$2, $0, 11
>>> $2 = 11
9: 0x0000000C syscall
>>> syscall 11
<<<$ 1092 mips_sim -r examples/square.hex 25add $d, $s, $t d = s + t 000000ssssstttttddddd00000100000sub $d, $s, $t d = s – t 000000ssssstttttddddd00000100010 slt $d, $s, $t d = s < t 000000ssssstttttddddd00000101010nrettaP tiB C relbmessA.esac siht ni ruoivaheb s’noitatnemelpmi ecnerefer eht hctam ot deen ton od uoy taht etacidni ro ,gub eht xif yam ew ,gub a si ti fI .murof ssalc eht ni ti troper ,noitatnemelpmi ecnerefer eht ni gub a eb ot eveileb uoy tahw revocsid uoy fI:snoitcurtsni SPIM 01 eseht ylno tnemelpmi ot deen uoY tesbuS noitcurtsnI SPIM.tnemngissa eht fo trap yletarebiled si ruoivaheb s’noitatnemelpmi ecnerefer eht gnihctam dna gnirevocsiD.ruoivaheb s’noitatnemelpmi ecnerefer eht hctam dluohs uoy noitacificeps siht ni denifednu si tnemngissa siht fo tcepsa yna erehW.WSNU evael uoy retfa htiw krow ot deen ylekil lliw uoy gnihtemos s’ti dna ,noitacificeps lanoitarepo na enifed ro edivorp ot dohtem evitceffe dna tneiciffe ,nommoc a si noitatnemelpmi ecnerefer a fo noisivorPmul $d, $s, $td =s * t011100ssssstttttddddd00000000010beq $s, $t, Ibne $s, $t, Iaddi $t, $s, Iif (s == t) PC += Iif (s != t) PC += It =s + It =s | It = I << 16syscall000100ssssstttttIIIIIIIIIIIIIIII000101ssssstttttIIIIIIIIIIIIIIII001000ssssstttttIIIIIIIIIIIIIIII001101ssssstttttIIIIIIIIIIIIIIII00111100000tttttIIIIIIIIIIIIIIII00000000000000000000000000001100 ori $t,lui $t,syscall$s, II printf(“%d”, $a0)exit(0) printf(“%c”, $a0)$a0$ 1092 mips_sim examples/bad_syscall.hex 0: 0x34021092 ori $2, $0, 4242>>> $2 = 4242
1: 0x0000000C syscall
>>> syscall 4242
Unknown system call: 4242
noitcurtsni tsal eht retfa yletaidemmi noitacol eht ot hcnarb a si ereht fi stlah noitucexE .noitcurtsni tsal eht retfa noitacol eht sehcaer ti fi stlah noitucexE .detucexe si llacsys tixe na fi stlah noitucexE gnitlaH
.esoprup yna rof desu eb nac dna gninaem laiceps on evah sretsiger 13 rehto ehT .noitcurtsni llacsys eht yb desu era )0a$( 4$ dna )0v$( 2$ sretsiger fo seulav ehT .tceffe on evah ti egnahc ot tpmetta hcihw snoitcurtsnI .0 syawla si )orez$( 0$ retsiger fo eulav ehT .snigeb noitucexe nehw orez eb ot tes era sretsiger 23 llA sretsigeR
:egassem snoitatnemelpmi ecnerefer eht hctaM :detnirp eb dluohs egassem rorre na deilppus si rebmun llacsys dilavni na fI
C-oduesP
11 01 1 0v$
retcarahc tnirp tixe regetni tnirp noitpircseD
.
fo )stib 8 tsewol( etyb wol eht tnirp dluohs 11 llacsyS
.sllac metsys 3 eseht tnemelpmi ot deen ylno uoY sllaC metsyS
rebmun retsiger tib-evif :t ,s ,d )rebmun dengis tib-61( etaidemmI :I eno tib laretiL :1 orez tib laretiL :0
:noitcurtsni hcae seifitnedi yleuqinu nrettap tib noitcurtsni ehT
nrettaP tiB C relbmessA
Illegal branch to address before instructions: PC = ?? Illegal branch to address after instructions: PC = ??
1092 spim2hex
mips_sim
examples.zip
mips_sim.c
1092 spim2hex
1092 spim2hex
$ mkdir -m 700 mips_sim $ cd mips_sim
$ 1092 fetch mips_sim $ unzip examples.zip .
$ gcc -Wall -Werror -std=gnu99 mips_sim.c -o mips_sim $ ./mips_sim examples/42.hex
0: 3404002a
1: 34020001
2: 0000000c
3: 3404000a
4: 3402000b
5: 0000000c
mips_sim.c
evoba selbat eht ni denoitnem ylticilpxe ton era hcihw serutaef ro ,sllac metsys ,snoitcurtsni SPIM tnemelpmi ot evah ton od uoY
dnammoc gnildnah stnemelpmi ydaerla hcihw edoc gnitrats dna
ni tnemngissa siht rof edoc gnitrats nevig neeb evah uoY eht daolnwod nac uoy ,ESC no gnikrow ton eruoy fi ,rO
dedivorp eht hctef dna , yrotcerid siht ot egnahc ,
:sdnammoc eseht gninnur yb :selpmaxe dellac tnemngissa siht rof yrotcerid wen a etaerC
tnemugra enil dnammoc a sa elif elgnis a nevig si emussa nac uoY .noitatnemelpmi ecnerefer eht fo tuptuo eht hctam ,tbuod ni fI .elbissop sa snoitpmussa wef sa ekam dluohs uoy ,sremmargorp doog lla ekiL snoitacifiralC dna snoitpmussA
.snoitcurtsni eht fo noitucexe eht etalumis ot snoitcurtsni_etucexe ni edoc eht egnahc ot deen uoY
.tnemngissa siht rof tebus ecneinevnoc rof oslA .tesbus deificeps eht edistuo snoitcurtsni ro snoitcurtsni-oduesp tnemelpmi ot evah ton od uoY .ecneinevnoc rof tsuj si sihT .tnemngissa siht rof tesbus eht ni snoitcurtsni ot tnemngissa siht fo tesbus eht edistuo snoitcurtsni wef a dna snoitcurtsni -oduesp emos setalsnart tnemngissa siht rof selpmaxe sa edoc gnitsixe esu ot ysae ti ekam oT
eht ni ton si rj esuaceb rj si ti fi noitcurtsni tsal eht seteled
.il sa hcus snoitcurtsni-oduesp sniatnoc smargorp elpmaxe eht rof relbmessa eht etoN . gnisu selpmaxe nwo ruoy tcurtsnoc dna gnitset nwo ruoy od ot deen osla lliw uoY elif piz a sa elbaliava era smargorp SPIM elpmaxe emoS selpmaxE
:snoitcurtsni deificeps fo egnar eht dnoyeb noitacol rehto yna ot hcnarb a si ereht fi egassem rorre na htiw stlah noitucexE
.noitcurtsni tsal eht retfa yletaidemmi noitacol eht ot hcnarb a si ereht fi stlah noitucexE
.selif h. ro c.artxe etaerc yam uoY
.senifed# dna snoitcnuf artxe dda ot deen lliw uoY
.sedoc noitcurtsni eht stnirp ylno snoitcurtsni_etucexe ni edoc deilppus eht tub noitucexe etalumis ot snoitcurtsni_etucexe noitcnuf eht sllac edoc ehT
.yarra na otni edoc noitcurtsni lacimedaxeh eht gnidaer dna stnemugra enil
detratS gnitteG
$ echo 12858AA > invalid.hex
$ cat invalid.hex
12858AA
$ 1092 mips_sim invalid.hex
0: 0x012858AA invalid instruction code
.s .hex
stdlib.h string.h
gcc -Wall -Werror -std=gnu99 *.c -o mips_sim
autotest
stdio.h
%08X
math.h assert.h system
-l
$ 1092 autotest mips_sim mips_sim.c [any other .c or .h files]
,
. esu yam uoY .) ( yrarbil scitamehtam eht dna ).cte , ,
morf snoitcnuf ,.g.e( yrarbil C dradnats eht morf snoitcnuf llac yam uoY .ylno C eb tsum edoc dettimbus ruoY
:stset detamotua elpmis emos nur ot esu nac uoy ,gnikrow si margorp ruoy kniht uoy nehW tnemssessA
.noissimbus erofeb tuptuo gniggubed elbasid uoy erus ekam :stset gnikramotua liaf lliw ti ,tuptuo gniggubed tuo setirw margorp ruoy fI
C lagelli morf srorre emit-nuR .gnikram nehw esu lliw ew hcihw ,
htiw elipmoc tsum tI .snoitpo elipmoc artxe eriuqer ton tsum margorp ruoY
.sliated rof woleb eeS .tnemngissa ruoy fo snoisrev etaidemretni timbus ot deriuqer era uoY .murof ssalc eht ni ksa ,tnemngissa siht rof od ro esu tonnac dna nac uoy tahw no noitacifiralc deen uoy fI
.galf sccg esu tonnac uoy ,sdrow rehto ni ;seirarbil rehto morf snoitcnuf esu ton yam uoY .smargorp lanretxe nur ot snoitcnuf C rehto ro esu ton yam uoY .segaugnal rehto ni edoc timbus ton yam uoY
.tuodts ot segassem lla tnirp osla dluohs uoY .gnikramotua/tsetotua gnietacilpmoc dluow sihT .rredts ot detnirp eb yllamron thgim segassem eseht fo emoS .margorp eht ni srorre gnitacidni seagssem gnidulcni tuodts ot segassem lla tnirp noitatnemelpmi ecnerefer eht smargorp SPIM gninnur nehW
.tesbus tnemngissa eht ni sedoc noitcurtsni otni tesbus eht edistuo snoitcurtsni wef a dna snoitcurtsni-odeusp emos setalsnart xeh2mips ecneinevnoc roF
.tesbus tnemngissa eht ni snoitcurtsni ylno sniatnoc selif gnidnopserroc ehT
. noitcurtsni-oduesp/snoitcurtsni eseht eldnah ot deen ton od uoY .)rj g.e( tesbus tnemngissa eht edistuo snoitcurtsni dna il elpmaxe rof ,snoitcurtsni-oduesp niatnoc selif ) ( relbmessa elpmaxe eht fo emoS
.edoc noitcurtsni hcnarb eht fo trap si hcihw tesffo evitaler eht otni eseht setalsnart xeh2mips 2901 .slebal hcnarb eldnah ot deen ton od uoY
.ws ro wl sa hcus yromem ssecca hcihw snoitcurtsni eldnah ot deen ton od uoY
.snoitarepo rehto ro citemhtira gnirud rucco ton seod wolfrevo emussa nac uoY .tesbus siht ni ton si hcihw llac metsys a si ereht fi egassem rorre na htiw stlah noitucexE
.meht rof egassem rorre na tnirp ton od dna evoba tesbus eht dnoyeb snoitcurtsni SPIM artxe tnemelpmi uoy fi dezilanep eb ton lliw uoY
.sedoc noitcurtsni dilavni tnirp ot sesu noitatnemelpmi ecnerefer ehT
:egassem snoitatnemelpmi ecnerefer eht hctaM .edoc noitcurtsni dilavni eht sehcaer noitucexe nehw ro margorp eht gnitucexe erofeb egassem rorre siht tnirp nac uoY
.tesbus SPIM evoba eht ni noitcurtsni na ot dnopserroc ton seod hcihw rebmun lamicedaxeh a nevig fi egassem rorre na tnirp dluohs margorp ruoY
noissimbuS
.gnikramotua liaf ot edoc ruoy esuac lliw
.evoba selbat
$ give dp1092 ass1_mips_sim mips_sim.c [other .c or .h files]
give give
give
give
$ DPST1092 classrun -check ass1_mips_sim
.uoy rof krow od ot nosrep rehtona gniyap ;tnesnoc rieht tuohtiw krow snosrep rehtona gnittimbus
tcudnocsim cimedaca
.krow tnioj sedulcni siht ;krow snosrep rehto yna gnittimbus
2901TSPD rof LF 0
.)enoyna yb( dettimbus yltneuqesbus si ti dna enoyna ot krow ruoy gnidivorp ylgniwonk
%0 )+05( SP )+06( RC/SP )+07( ND/RC )+09( DH
smargorp trohs yrev elpmis emos rof gnikrow ot esolc smargorp elpmis emos rof skrow ,edoc elbadaer smargorp tsom rof skrow ,edoc elbadaer yrev smargorp lla rof yltcefrep skrow ,edoc detnemucod lufituaeb
:gniwollof eht ot ralimis yldaorb eb ot ylekil si ti tub ,snoissimbus tnemngissa eht gnitcepsni retfa emehcs tnemssessa eht yrav yam rerutcel ehT .swollof emehcs tnemssessa evitacidni nA
.margorp ruoy dnatsrednu dna daer ot namuh a rof si ti ysae woh no dessessa eb lliw uoy ,sdrow rehto nI .elyts dna ecnagele ,gnitnemmoc ,ytiralc fo sisab eht no dedrawa eb lliw skram esehT .gnikram dnah morf emoc lliw 1 tnemngissa rof skram eht fo %02
.stset fo seires egral a no edoc ruoy fo ecnamrofrep eht morf emoc lliw 1 tnemngissa rof skram eht fo %08 .kram 2901TSPD lanif ruoy ot skram 51 etubirtnoc lliw tnemngissa sihT emehcS tnemssessA
.emit taht ta eveihca nac ti kram mumixam eht ,%07 dedrawa eb dluow ti ,etal sruoh 51 dettimbus saw tnemngissa emas eht fI .tceffe on evah dluow noissimbus etal eht ,etal sruoh 01 dettimbus saw %47 htrow tnemngissa na fi ,elpmaxe roF .%2 yb eveihca nac ti kram mumixam eht secuder etal si ti ruoh hcae ,etad siht retfa dettimbus si tnemngissa ruoy fI
.95 32 yadseuT 8 keeW eud ylevitatnet si tnemngissa sihT etaD euD
.ecafretni bew sevig aiv elbaliava eb osla lliw kram gnitluser ehT ;ereh stluser ruoy weiv nac uoy ,krow ruoy dessessa sah rotut ruoy retfA .woleb noitces tnemssessA eht ni debircsed sa ,ytilibadaer dna elyts rof kram lliw ohw ,rotut ruoy yb enod eb lliw gnikram launaM
:htiw srevres ESC no noissimbus tsetal ruoy kcehc nac uoY .srerutcel ro srotut ot edoc ruoy gniliam-e yb skram niatbo tonnac uoY .ecafretni bew sevig aiv krow ruoy daolpu ot tneinevnoc erom ti dnif yam uoy ,emoh ta gnikrow era uoy fI .dekram eb lliw noissimbus tsal ruoy ylnO
.nwo ruoy yleritne eb tsum htiw timbus uoy krow eht ,esicrexe laudividni na si siht taht etoN .tnemngissa siht rof skram eht niatbo ot 95 32 yadseuT 8 keeW erofeb nur tsum uoY
.ereh dettimbus evah uoy selif eht kcehc nac uoY
: gninnur yb krow ruoy timbus tsum uoy ,tnemngissa eht no gnikrow dehsinif era uoy nehW
.semit elpitlum nur nac uoY
give
https://gitlab.cse.unsw.edu.au/z5555555/21T1-dpst1092-ass1_mips_sim
G89000 redivorP SOCIRC
ua.ude.wsnu.esc@2901pd ta tnuocca ssalc eht liame esaelp ,seiriuqne lla roF .yendyS ,selaW htuoS weN fo ytisrevinU eht ta
gnireenignE dna ecneicS retupmoC fo loohcS eht
yb uoy ot thguorb si slatnemadnuF smetsyS retupmoC :1T12 2901TSPD
.snoissimbus hcus rof ,yllaunam dna yllacitamotua htob ,denimaxe eb lliw snoissimbus tnemngissA
.asiv tneduts a fo ssol eht ni tluser osla yam sihT .pihsralohcs eht fo ssol a ni tluser yam siht ,spihsralohcs dloh devlovni stneduts fi :tcudnocsim tneduts rehto ro msiraigalp fo stca troper ot deriuqer osla era eW .enilpicsid cimedaca rehto ylbissop dna ,esruoc eht fo eruliaf citamotua ,skram evitagen edulcni yam seitlaneP .desilanep eb lliw snoitidnoc eseht etaloiv taht snoissimbuS
.yrotisoper etavirp a esu yam uoY .elbissecca yllacilbup si taht esle erehw yna ro buhtig sa hcus seirotisoper enilno ni krow tnemngissa ruoy ecalp ton oD
.egdelwonk ro tnesnoc ruoy tuohtiw nekat si krow ruoy fi dezilanep eb ton lliw uoY .uoy ot nwonknu ytrap driht a yb dettimbus si krow ruoy fi neve ylppa yam siht ;tnesnoc ro egdelwonk ruoy tuohtiw dettimbus saw krow taht fi neve ,dezilanep eb yam uoy ,dettimbus si ti morf devired krow dna ,nosaer yna rof nosrep rehtona ot krow tnemngissa ruoy wohs ro edivorp ylgniwonk uoy fI .2901TSPD fo ffats gnihcaet eht morf trapa ,)murof eht no ti gnitsop yb gnidulcni( nosrep rehto yna ot krow tnemngissa ruoy wohs ro edivorp ton oD
.2901TSPD fo )srotut dna )s(rerutcel eht( ffats gnihcaet eht morf ro ,snoisses pleh ,murof esruoc eht ni tnemngissa eht htiw pleh tseuqer ot dettimrep ylno era uoY
.dettimrep ton si nosrep rehto yna htiw nettirw yltnioj ro nosrep rehto yna morf devired yletelpmoc ro yllaitrap krow fo noissimbuS .evoba noitacificeps tnemngissa eht ni dedulcni ylticilpxe snoitpecxe yna morf trapa ,krow nwo ruoy yleritne eb tsum timbus uoy krow ehT
.dedeen fi edoc ruoy fo snoisrev reilrae eveirter ot uoy wolla lliw sihT .)DIz nwo ruoy htiw 5555555z gnicalper( ta ecafretni bew a aiv uoy ot elbaliava edam dna yrotisoper tiG a ni decalp eb lliw krow ruoy fo snoisrev etaidemretni eseht llA
.dekram eb lliw tnemngissa ruoy fo noisrev dettimbus lanif eht ylnO .stset noissimbus liaf esiwrehto ro elipmoc ton od snoisrev etaidemretni fi enif si tI .woleb dnammoc eht gnisu ti timbus dna tnuocca ESC ruoy ot krow ruoy ypoc dluohs uoy ssergorp emos ekam dna tnemngissa eht no krow uoy emit yrevE
)00 00 02 41-20-1202( .esaeler laitinI 0.1 noisreV
.tnemngissa ruoy fo snoisrev etaidemretni timbus ot deriuqer era uoY kroW fo snoisreV etaidemretnI
goL egnahC
.tnemngissa laudividni na si sihT kroW fo noitubirttA
Reviews
There are no reviews yet.