Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / School & Studie / Huiswerkvragen: Exacte vakken
Reageren
 
Topictools Zoek in deze topic
Oud 18-02-2010, 14:03
WAT
WAT is offline
ik loop helemaal vast in hoe beide codes toe te passen? Wie heeft er genoeg ervaring met deze 2 programmeertalen om mij de basics te kunnen uitleggen?
Met citaat reageren
Advertentie
Oud 19-02-2010, 08:50
Verwijderd
Ik heb iets van 5 jaar geleden wel met assembler moeten werken, maar het is toch gewoon hetzelfde principe als alle andere programmeertalen (alleen dan wat omslachtiger)? Wat begrijp je precies niet?
Met citaat reageren
Oud 19-02-2010, 09:38
WAT
WAT is offline
het probleem zit em voornamelijk in dat ik de overslag van assembler naar microcode niet begrijp en dat ik helemaal gek word van het boek
Met citaat reageren
Oud 20-02-2010, 20:18
ILUsion
Avatar van ILUsion
ILUsion is offline
Er zijn verschillende soorten assembler, elke computerarchitectuur heeft er zijn eigen dialect van en hetzelfde kan je zeggen van microcode; een expert in x85-assembler hoeft dus ook geen expert in powerpc of avr-assembler te zijn en exact hetzelfde als het gaat over microcode (maar nog extremer).

Om gewoon te schetsen hoe programmeertalen min of meer in elkaar zitten:
een hoge programmeertaal (pascal, C, ...) kan je door een compiler laten omzetten in machinecode, dit kan je in feite zien als binaire vorm van assembler. Assembler-code wordt door een assembler vrij makkelijk omgezet naar die machinecode (met het voordeel dat je in assembler variabelen als naam kan gebruiken, in machinecode worden dat gewoon getalletjes en dat gelijkaardige operaties eenzelfde naam hebben in assembler maar een verschillend nummer kunnen hebben in machinecode: voor de machine is het anders om een constante op te tellen bij een register of twee registers op te tellen). Één instructie in een hoge taal zoals:
Code:
IF a = b 
  THEN
    bla;
  ELSE
    blabla;
  END;
wordt omgezet naar verschillende commando's in assembler (of machinecode, maar dat noteer ik niet):
Code:
JNE a, b, labelELSE
bla
JMP labelEND
labelELSE:
blabla
labelEND:
Hoe dat vertalen exact gebeurt, hangt een beetje af van wat voor architectuur je hebt; instructies kunnen op een andere architectuur mogelijk helemaal anders vertaald worden. In een architectuur zonder aftrekking, moet je om te kunnen aftrekken gewoon het negatieve getal bij optellen.

Met microcode gebeurt er iets gelijkaardigs: elk assemblercommando (of beter: elke instructie in de machinecode) wordt omgezet in nog kleinere instructies: bv. haal waarde uit register X, schrijf deze naar de adresbus van het geheugen, ... Voor het bovenstaande voorbeeld zou dat voor enkel de eerste JNE-instructie bv. kunnen zijn:
Code:
pop een waarde van de stack naar tijdelijk register
plaats de waarde van het tijdelijk register naar ALU-ingang 1
pop een waarde van de stack naar tijdelijk register
plaats de waarde van het tijdelijk register naar ALU-ingang 2
pop een waarde van de stack naar tijdelijk register
plaats de bitsequentie voor aftrekken op controleingang van ALU
controleer de uitgangsflag "gelijk aan 0?" van de ALU
als deze flag gezet is: plaats de waarde van het tijdelijk register in de instruction pointer
haal de volgende instructie op
Deze hangen dus even hard vast aan de architectuur: op een architectuur zonder tijdelijk register zal je bovenstaand voorbeeld niet kunnen runnen. Je moet de processor dus op een veel gedetailleerder niveau kennen om microcode te schrijven: sommige locaties die je in microcode hebt, zijn anders dan in assembler. Stel dat je A en B wilt optellen, ga je over het algemeen A naar de ene ingang van de ALU voeden, B naar de andere ingang, op een controleingang de bits voor optelling en het resultaat ergens anders weer wegschrijven. Maar in assembler kan je niet direct aan de controleingangen; dat gaat in microcode wel. Dat omzetten naar microcode wordt in de processor gedaan; in de meeste gevallen moet je je daar dus niets van aantrekken tenzij je zelf een processor zou bouwen of dat je leert hoe het werkt.

Heel simpel gesteld: met een hoge taal maak je de computer (maar vooral jezelf) wijs wat er moet gebeuren, met assembler maak je de processor wijs wat er moet gebeuren en met microcode maak je elk van de onderdelen van de processor duidelijk wat ze moeten doen.
__________________
vaknar staden långsamt och jag är full igen (Kent - Columbus)

Laatst gewijzigd op 20-02-2010 om 20:27.
Met citaat reageren
Oud 20-02-2010, 21:47
sean_b
sean_b is offline
@ILUsion: bedankt voor de gestructureerde uitleg, ik begrijp het nu zo ongeveer.
@TS: Ik neem aan dat jij ook trotse eigenares bent van het Computers/organisatie/architectuur/communicatie boek ? wat een $^%& boek is dat.
Met citaat reageren
Oud 20-02-2010, 21:57
WAT
WAT is offline
Citaat:
. Dat omzetten naar microcode wordt in de processor gedaan; in de meeste gevallen moet je je daar dus niets van aantrekken tenzij je zelf een processor zou bouwen of dat je leert hoe het werkt.
dat is nu precies waar wij mee bezig zijn op school daarom mijn vraag hier

@ sean_b idd wij hebben dat boek ook, heel hulp daar uit te verwachten :/
Met citaat reageren
Oud 21-02-2010, 09:45
ILUsion
Avatar van ILUsion
ILUsion is offline
Citaat:
dat is nu precies waar wij mee bezig zijn op school daarom mijn vraag hier

@ sean_b idd wij hebben dat boek ook, heel hulp daar uit te verwachten :/
God, dan zit je al in een vrij specifieke richting, gok ik (hier hebben we vooral tot op assembler-niveau gezien (heel klein beetje microcodeniveau voor 2 academische architecturen) en dat is universitair in een elektronica/informatica-richting). Waarschijnlijk moet je dus niet al te hard tillen aan dat stukje. Zeker omdat dergelijke microcode zeer architectuurafhankelijk is, en je dus al bijna een datasheet van honderden/duizenden pagina's achter de kiezen moet hebben om uit het hoofd microcode op te schrijven voor 1 type processor (zeker als je de bijhorende binaire voorstelling moet gebruiken bv.) Het lijkt me dat dat enkel relevant is voor de mensen die CPUs ontwikkelen. Het belangrijkste wat je moet meehebben van die omzetting, is een beetje weten hoe je data doorheen je CPU vloeit: hoe een instructie ongeveer opgehaald wordt (dat je weet dat dat verschillende stapjes zijn), hoe geheugeninstructies in hun werk gaan, ...

Maar goed, daar ben je weinig verder mee. Ik geloof dat een van de basiswerken daaromtrent de werken van A. Tanenbaum zijn (tenzij je daarop al doelde): voor dit onderwerp zal dat "Structured Computer Organization" (ISBN 0-13-148521-0) zijn, lijkt me. En anders staan er op WikiPedia wel wat referenties als je zoekt op microcode (in de Engelse tenminste; sowieso zou ik aanraden om Engelse referentiewerken te gebruiken als je de taal genoeg machtig bent).
__________________
vaknar staden långsamt och jag är full igen (Kent - Columbus)
Met citaat reageren
Oud 28-02-2010, 16:16
WAT
WAT is offline
hmmm, oke het is mij tenminste iets duidelijker nu

en wij doen in informatica jaar 1 een periode TI (technische informatica) vandaar de zooi op het CPU, en we hebben er een hele handleidinjg voor gekregen hoor, alleen is die niet heel duidelijk vaak
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 10:16.