Meddelande

Du befinner dig just nu på en äldre version av Pluggakuten, gamla.pluggakuten.se. Nya Pluggakuten lanserades den 6 februari 2017 och du finner forumet på www.pluggakuten.se.

På gamla.pluggakuten.se kan du fortfarande läsa frågorna och svaren som ställts, men du kan inte skapa ett nytt konto eller nya trådar. Är du redan medlem kan du däremot fortfarande logga in och svara i befintliga trådar. Nya frågor och nytt konto skapar du på det nya forumet, välkommen dit!

Assembler (CLRA)

TB16
Medlem

Offline

Registrerad: 2014-11-05
Inlägg: 1078

Assembler (CLRA)

http://i67.tinypic.com/1pa2pd.png

Jag har en liten fundering kring denna maskininstruktion. Varför måste jag flytta konstanten 0 till R innan jag laddar register A med innehållet i R? Varför kan jag inte skicka konstanten 0 till A direkt?

 
SeriousSquid
Medlem

Offline

Registrerad: 2010-05-17
Inlägg: 3643

Re: Assembler (CLRA)

EDIT.
Verkar finnas olika lösningar så vet inte vilken som är definitivt utan att kunna läsa den där ->CC-raden betyder så visade sig att mitt inlägg mest är vild spekulation : \

Kaninte skälet bara vara rent fysiskt att minnesenheterna i de flesta arkitekturer endast är tillgängliga via en eller ett fåtal centrala register "R"? Konceptuellt något i stil med:

http://i.imgur.com/b06pcvz.png

och att de enda kommandona som faktiskt finns involverandes registrerna i säg RAM är get- och set-kommandon gentemot centrala register R:
LaTeX ekvation och LaTeX ekvation

Låt säga att 0:an fanns lagrad i B så finns ingen direkt fysisk koppling mellan A och B utan man måste göra förflyttningen via R, LaTeX ekvation

Jag har dock ingen direkt kunskap om Assembly så det här kanske är helt fel utan baserar gissningen på logikdiagramsmodeller av miniräknare som jag lekt en del med men där jag antar att principerna bör vara desamma.

Edit 2: Kan även vara eftersom om man gör det på det här sättet så behöver man inte uppfinna en aritmetiskt funktion utan kan bygga den via fundamentala logiska operationer som alla processorenheter måste ha inbyddga tillexempel xor som har egenskapen att den producerar 0 i när du har två lika argument

LaTeX ekvation

Så det du vill göra är något i stil med

LaTeX ekvation

men för det måste du först hämta A (duplicera A) för att kunna mata de båda in i XOR-enheten samtidigt.

Dett var i alla fall implementationen i assembly för de här företagets microcontrollers: http://www.atmel.com/webdoc/avrassemble … b_CLR.html

Senast redigerat av SeriousSquid (2016-11-18 11:00)


"...a result is trivial if: (a) it follows from the underlying definitions without any trickery or ingenuity and (b) a written specification of how it follows runs the danger of suggesting that it is nontrivial."
 
TB16
Medlem

Offline

Registrerad: 2014-11-05
Inlägg: 1078

Re: Assembler (CLRA)

Inte lätt att veta när du inte har en bild på dataväg, styrenhet och minne. Det verkar som man måste utföra en operation via ALU:n för att få innehållet i R till 0. Trodde man kunde hämta värdet 0 från minnet och ladda i A direkt. Men register A (Ackumulator) är ett generellt register för aritmetik-/logik-operationer där resultatet (register R) alltid placeras i registret ("ackumuleras")

bild av dataväg, styrenhet och minne:
http://i65.tinypic.com/5cix6w.jpg


SeriousSquid skrev:

EDIT.
Verkar finnas olika lösningar så vet inte vilken som är definitivt utan att kunna läsa den där ->CC-raden betyder så visade sig att mitt inlägg mest är vild spekulation : \

Kaninte skälet bara vara rent fysiskt att minnesenheterna i de flesta arkitekturer endast är tillgängliga via en eller ett fåtal centrala register "R"? Konceptuellt något i stil med:

http://i.imgur.com/b06pcvz.png

och att de enda kommandona som faktiskt finns involverandes registrerna i säg RAM är get- och set-kommandon gentemot centrala register R:
LaTeX ekvation och LaTeX ekvation

Låt säga att 0:an fanns lagrad i B så finns ingen direkt fysisk koppling mellan A och B utan man måste göra förflyttningen via R, LaTeX ekvation

Jag har dock ingen direkt kunskap om Assembly så det här kanske är helt fel utan baserar gissningen på logikdiagramsmodeller av miniräknare som jag lekt en del med men där jag antar att principerna bör vara desamma.

Edit 2: Kan även vara eftersom om man gör det på det här sättet så behöver man inte uppfinna en aritmetiskt funktion utan kan bygga den via fundamentala logiska operationer som alla processorenheter måste ha inbyddga tillexempel xor som har egenskapen att den producerar 0 i när du har två lika argument

LaTeX ekvation

Så det du vill göra är något i stil med

LaTeX ekvation

men för det måste du först hämta A (duplicera A) för att kunna mata de båda in i XOR-enheten samtidigt.

Dett var i alla fall implementationen i assembly för de här företagets microcontrollers: http://www.atmel.com/webdoc/avrassemble … b_CLR.html

 


Sidfot

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

Powered by Mattecentrum
 |  Denna sida använder cookies |  Kontakta oss |  Feedback |