Page 1 of 1

[CS] PEP /7

Posted: Tue Jan 22, 2008 1:44 pm
by racekakje
ALs je in PEP /7 volgende instructies uitvoert, wat gebeurd er dan? Ben ik hier juist of fout.

NOTA (van het woord dat in A zit wordt elke 1 een 0 en omgekeerd)
ANDA d#0005,d (er gebeurt nen AND tss de woorden in A en op de plaats d#5 in het geheugen)
ORA d#0005, d (er gebeurt nen OR tss de woorden in A en op de plaats d#5 in het geheugen)
ASLA (alle bits in het woord in A worden naar links verplaatst)
ASRA (alle bits in het woord in A worden naar rechts verplaatst)

Wat gebeurd er met de uiterste bits bij ASLA en ASRA?
wordt de eerste de laatste en omgekeerd? Of valt er ene weg en komt er een 0 bij?

Posted: Tue Jan 22, 2008 1:48 pm
by Pieter Belmans
Moeten we het zo uitgebreid kennen? Voor zover ik weet hebben we maar 1 oefening gemaakt waarbij bitbewerkingen voorkwamen, en dat was dat met negatieve getallen.

Maar, ik meen ooit gelezen te hebben dat in de meeste toepassingen een bitshift naar links inhoudt dat er een 0 wordt toegevoegd rechts. En bij 'n bitshift naar de andere kant een 0 langs de linkerkant. Maar op zich maakt dat niks uit denk ik, je verliest in beide gevallen evenveel nauwkeurigheid denk ik.

Posted: Tue Jan 22, 2008 1:58 pm
by racekakje
Ik zag het staan en vroeg me af wat er gebeurde..

kan iemand een lijstje geven met alle BR's (die jump dinges)
want ik ben da blad kwijt :(

Posted: Tue Jan 22, 2008 2:14 pm
by PieterK
racekakje wrote:kan iemand een lijstje geven met alle BR's (die jump dinges)
want ik ben da blad kwijt :(
U vraagt wij draaien! :P

Code: Select all

BRLE Branch when <= 0
BRLT Branch when < 0
BREQ Branch when = 0
BRNE Branch when # 0
BRGE Branch when >= 0
BRGT Branch when > 0
Maar die PEP7 commando's moeten wij nie vanbuiten kennen hé. We krijgen die op het examen :)

Posted: Tue Jan 22, 2008 2:54 pm
by Yannick
die ASLA en ASRA zijn nie meer als shiftfuncties op u meegegeven woord
Stel bv u A = 000101
dan zal ASLA 001010 geven dacht'k en ASRA 100010
wij hebben dat 1 keer gebruik dacht ik bij een oefening, dunno meer met wat :')

Posted: Wed Jan 23, 2008 2:07 pm
by Tom
Yannick wrote:die ASLA en ASRA zijn nie meer als shiftfuncties op u meegegeven woord
Stel bv u A = 000101
dan zal ASLA 001010 geven dacht'k en ASRA 100010
wij hebben dat 1 keer gebruik dacht ik bij een oefening, dunno meer met wat :')
Nee, die vallen weg.

Een bitshift is eigenlijk gewoon een snellere manier om een vermenigvuldiging of een deling met 2 te doen. (Dubbele shift 4, Driedubbele shift 8, ...)

Als je in C++ (of andere hogere programmeertalen) dus veel werkt met het verdubbelen of het halveren van (gehele) getallen dan is het efficienter (sneller) om bitshifts te gebruiken. (De taal voorziet hier gewoon operators voor, je moet dus niet inline assembly* gebruiken)

Meer informatie:

http://en.wikipedia.org/wiki/Bitwise_operation

* Inline Assembly: Binnen een hoge programmeertaal (ook mogelijk in Oberon) assembly commando's invoegen om code efficienter te maken en te optimaliseren, of om specifieke Hardware Interrupts te gebruiken (hoever dat dat mogelijk is). Let wel op, te vroeg optimaliseren is meestal ten nadele. Beter een werkend programma dan een snel programma dat crasht.