Page 1 of 1

CS/CA: Hulp nodig met een script uitvoeren op een datapath

Posted: Sun Jan 10, 2010 6:36 pm
by Timmy
Ben (ter wijze van "pauze" xP) wat CS/CA aan het doen, nl enkel opdrachten herwerken etc. Nu hebk een probleem met de laatste opdracht, te vinden in deze link:

http://msdl.cs.mcgill.ca/people/bart/co ... als/as7oef
en
http://msdl.cs.mcgill.ca/people/bart/co ... als/asm.pl

Ik ben absoluut geen held in Reguliere expressies & toestanden, dus kan iemand mij ff helpen met wat dat scriptje precies doet, en wat voor output het geeft? Kmoet da runnen op mn datapath maar ik weet begot niet wat de bedoeling is :s Das zo een opdracht dat ik gwn heb geskipt door tijdsgebrek, maar aangezien da da het praktijkexamen CA gaat zijn moetek er toch uit geraken :)

Iemand een idee?

Re: CS/CA: Hulp nodig met een script uitvoeren op een datapa

Posted: Sun Jan 10, 2010 6:47 pm
by djgl3nn
Timmy wrote:Ben (ter wijze van "pauze" xP) wat CS/CA aan het doen, nl enkel opdrachten herwerken etc. Nu hebk een probleem met de laatste opdracht, te vinden in deze link:

http://msdl.cs.mcgill.ca/people/bart/co ... als/as7oef
en
http://msdl.cs.mcgill.ca/people/bart/co ... als/asm.pl

Ik ben absoluut geen held in Reguliere expressies & toestanden, dus kan iemand mij ff helpen met wat dat scriptje precies doet, en wat voor output het geeft? Kmoet da runnen op mn datapath maar ik weet begot niet wat de bedoeling is :s Das zo een opdracht dat ik gwn heb geskipt door tijdsgebrek, maar aangezien da da het praktijkexamen CA gaat zijn moetek er toch uit geraken :)

Iemand een idee?
die asm.pl zet een input.s file om in een output text bestand.

de bedoeling is dus
da als er in u input file
add $03, $02, $01
staat
dat dmv u asm.pl in u output.hex de juiste 4 digit hexadecimale code terecht komt die zou werken in u datapath.
0846 ofzo. die gaat ge dan kopieren en in u instructie geheugen van u datapath plakken.
En als ge dan u clock gaat activeren, en u datapath gaat dan optellen dan werkt alles perfect.

gij moet er dus voor zorgen da ge die asm.pl zodanig gaat aanpassen zodat het klopt vo u datapath, da zijn in principe ni zoveel aanpassingen. Ik zelf kende ook nix van regex en tis mij toch gelukt.

die output bekomde do in unix shell die code uit te voere die in u opdracht staat.

Posted: Sun Jan 10, 2010 6:48 pm
by Robbe
Perl is ook maar ver voor mij, maar voor zover ik kan volgen leest hij elke keer een lijn in en zet die dan om naar een opcode met weetikveelwatnogallemaal. Elk haakje in de regex komt overeen met een $N argument, te tellen per openend haakje. Voor de rest kan ik nu ni veel zeggen :P

Posted: Sun Jan 10, 2010 6:55 pm
by Timmy
Ahaaa, op die manier ^^

Dus bv bij

elsif ($inst =~m/^\s*add\s+\$r([0-3]),?\s+\$r([0-3]),?\s+\$r([0-3])/i){
$num = ($1 << 6) | ($2 << 10) | ($3 << 8) | 2;

Gaat hij checken voor de "add" instructie in u assembly code, maar wat doet

$num = ($1 << 6) | ($2 << 10) | ($3 << 8) | 2;

Dan? Da lijtk mij da hij $1 6 plekke gaat shiftleften, $2 10 en $3 8, maar WTF zijn die waardes dan precies? En dan da "2"ke achteraan.

Mja kzegget, kvoel mij echt ne noob atm, kzie ff echt de logica ni =D

IIG al merci :)

Posted: Sun Jan 10, 2010 7:05 pm
by djgl3nn
Timmy wrote:Ahaaa, op die manier ^^

Dus bv bij

elsif ($inst =~m/^\s*add\s+\$r([0-3]),?\s+\$r([0-3]),?\s+\$r([0-3])/i){
$num = ($1 << 6) | ($2 << 10) | ($3 << 8) | 2;

Gaat hij checken voor de "add" instructie in u assembly code, maar wat doet

$num = ($1 << 6) | ($2 << 10) | ($3 << 8) | 2;

Dan? Da lijtk mij da hij $1 6 plekke gaat shiftleften, $2 10 en $3 8, maar WTF zijn die waardes dan precies? En dan da "2"ke achteraan.

Mja kzegget, kvoel mij echt ne noob atm, kzie ff echt de logica ni =D

IIG al merci :)
het eerste getal da ge na u add ingeeft me dollarteke gedoe gaat 6 plaatste na
links staan, het 2de 10 en het 3de 8
en die 2 komt helemaal opt einde. Das voor u add opcode.


sorry vo slechte uitleg ma ik ga lere XD

Posted: Mon Jan 11, 2010 9:50 am
by Timmy
djgl3nn wrote:
Timmy wrote:Ahaaa, op die manier ^^

Dus bv bij

elsif ($inst =~m/^\s*add\s+\$r([0-3]),?\s+\$r([0-3]),?\s+\$r([0-3])/i){
$num = ($1 << 6) | ($2 << 10) | ($3 << 8) | 2;

Gaat hij checken voor de "add" instructie in u assembly code, maar wat doet

$num = ($1 << 6) | ($2 << 10) | ($3 << 8) | 2;

Dan? Da lijtk mij da hij $1 6 plekke gaat shiftleften, $2 10 en $3 8, maar WTF zijn die waardes dan precies? En dan da "2"ke achteraan.

Mja kzegget, kvoel mij echt ne noob atm, kzie ff echt de logica ni =D

IIG al merci :)
het eerste getal da ge na u add ingeeft me dollarteke gedoe gaat 6 plaatste na
links staan, het 2de 10 en het 3de 8
en die 2 komt helemaal opt einde. Das voor u add opcode.


sorry vo slechte uitleg ma ik ga lere XD
Merci Glenn, kpeins dak hem door heb nu :) Morge ne x probere se.