RTN med ALU och Assembler
Hej, jag har två problem här med RTN som jag skall tyda av och har lite svårt att förstå vissa saker. Här är den första:
Här kunde jag nästan lösa den här frågan med uteslutningsmetoden. Med tanke på att vi måste börja med att ladda T registret som första steg blev e och f endast de aktuella kandidaterna för rätt svar. Jag vet dock inte varför f skulle vara rätt, skillnaden är att man adderar 1 två extra gånger i e. Vet inte varför man skall addera med 1 från början i Q2 som de gjort i båda stegen.
Den här tyckte jag var väldigt svår att förstå, det enda jag listade ut var att e inte kunde vara aktuell här eftersom man utför operationen med effektivadressering. Men mer än så förstod jag inte.
Jag använder denna processorn: http://www.cse.chalmers.se/edu/year/2014/course/EDA216/FlisProcessorHandbok-A4.pdf
Jag gjorde en tabell och stegade. a)
Ska testa e och f härnäst.
e)
f)
Programmeraren skrev:e)
f)
Jag testade precis detta, en otroligt bra metod för att verifiera och få fram rätt svar. Tack så hemskt mycket!
1.13)
Offseten till SP ligger i byten efter instruktionen så man måste veta om PC auto-inkrementeras före eller efter opcode:n har lästs.
Dock har 5 av alternativen M(PC)-->T så vi får nog tro att PC pekar på offseten (byten efter opcoden).
Ser inget om att SP påverkas av instruktionen under "Indirekt stackregister med konstant offset (Indexed) [ns]" så då försvinner alternativen B, C, D, E.
A och F är samma förutom add C(arry) ingår i add:en i steg Q6 i alternativ F. Men ADDA är utan carry och då återstår endast A.
Stämmer det med facit?
Programmeraren skrev:1.13)
Offseten till SP ligger i byten efter instruktionen så man måste veta om PC auto-inkrementeras före eller efter opcode:n har lästs.
Dock har 5 av alternativen M(PC)-->T så vi får nog tro att PC pekar på offseten (byten efter opcoden).
Ser inget om att SP påverkas av instruktionen under "Indirekt stackregister med konstant offset (Indexed) [ns]" så då försvinner alternativen B, C, D, E.
A och F är samma förutom add C(arry) ingår i add:en i steg Q6 i alternativ F. Men ADDA är utan carry och då återstår endast A.
Stämmer det med facit?
Det stämmer med facit, jag blev lite förvirrad på Q6 steget i F med tanke på att våra carry benämningar oftast är "Cin" och inte bara "C", men det låter rimligt att det är skillnaden eftersom vår ALU inte kan addera 3 register samtidigt.
Tack igen för en bra förklaring!
Som du ser så kan ALU:n addera med carry, ADCA gör det till exempel. Men man vill ha båda varianterna som olika instruktioner för olika tillfällen.