Forum: Mikrocontroller und Digitale Elektronik Befehl BIC ARM


von dabudai (Gast)


Lesenswert?

Nabend alle zusammen,

sitze hier gerade übereinen Arm-Programm, und weiß nicht was der Befehl 
BIC hier macht.Könnte mir das evt. einer in binär schreibweise 
aufschreiben, damit ich das verstehe:

R0 = 0x81
BIC R0,R0,#0x7F


Vielen Dank im Voraus.

dabudai

von jan (Gast)


Lesenswert?

Hi,

also BIC steht für Bit Clear und macht:

BIC r0,r1,r2   -> r0 = r1 and not r2

Das heißt das alle Bits die "1" sind im zweiten opperand (r2) setzten 
die entsprechenden Bits im Operand r1 aus "0". Gerne zum Maskieren von 
Bitmustern genutzt.

R0 = 0x81
BIC R0,R0,#0x7F

R0= 10000001 and not 1111111 = 10000000

gruß Jan

von Michael König (Gast)


Lesenswert?

Wie Jan schon schreibt, steht BIC für "Bit Clear", was eigentlich nur 
eine AND-NOT-Operation ist.
Das Gegenteil ist BIS (Bit Set), das bei den meisten anderen Prozessoren 
als OR bezeichnet wird.

Die Mnemonics BIS und BIC müßten die Entwickler bei Acorn damals meiner 
Ansicht nach von der VAX übernommen haben.

von (prx) A. K. (prx)


Lesenswert?

Angesichts der Art wie ARM seine Konstanten im Befehl codiert liegt 
dieser Befehl allerdings nahe. Wobei er nicht erst auf der VAX sondern 
auch auf allerlei älteren Maschinen bereits existierte, beispielsweise 
PDP11:BIC und TI990:SZC.

von Michael König (Gast)


Lesenswert?

Korrektur meinerseits:
ARM hat nur BIC. Das BIS heißt dort ORR, was wahrscheinlich wie viele 
andere Mnemonics an die des 6502 angelehnt sind (in dem Fall dann ORA).

Ich hätte beinahe PDP-11 geschrieben, war mir aber nicht mehr ganz 
sicher. BIC/BIS scheint eine typische DEC-Nomenklatur zu sein, weswegen 
sich das dann auch noch in der Alpha findet.

Ich hatte vor einigen Jahren mal einen Artikel für die German Archimedes 
Group geschrieben, in dem ich Hypothesen aufgestellt habe, welche 
Prozessoren wahrscheinlich für die ARM-Architektur Pate gestanden haben. 
War eine sehr bunte Mischung.
Kurzfassung (so aus dem Kopf, deswegen fehlt bestimmt etwas):

6502: Die typischen Mnemonics mit unbedingt drei Buchstaben (siehe vor 
allem ORR)
SPARC: Das RISC-Grundkonzept und das Optionale Setzen von Conditionflags
S/360 & 68K: LDM/STM, namentlich von der 360er, aber Registermaske eher 
vom MOVEM des 68K
6800/68K: Die vielen Konditionen für die Prädikation

von (prx) A. K. (prx)


Lesenswert?

Nur setzt diese moderne Abstammungslehre ja voraus, dass seitens ARM 
niemand eigene Ideen gehabt hat, aber der Entwickler des 6800 sehr wohl. 
Bischen unfair finde ich. Für die Registermaske muss man nicht unbedingt 
68000 studiert haben, da kann man notfalls auch selber drauf kommen.

Die ARM Architektur ist übrigens ein paar Jahre älter als SPARC, also 
wenn schon dann hat Sun sich das bei ARM abgeguckt. ;-)

von Michael König (Gast)


Lesenswert?

Dummerweise ist bekannt, daß Acorn damals mehrere Prozessoren als 
möglichen Nachfolger für den 6502 ausgewertet hat. Der 68000er war auch 
dabei und wurde wegen der schlechten Latenzen verworfen.
Sicherlich ist es möglich, daß die Registermaske eine eigene Idee war, 
nur ist es mindestens ebenso wahrscheinlich, daß die Implementierung der 
MOVEM-Instruktion des 68000er eine Inspiration war.
Wie gesagt, es war eine rein hypothetische Angelegenheit und im Artikel 
habe ich ARM als Architektur im Vergleich zu anderen Prozessoren 
dargestellt.

ARM als kommerzieller Prozessor ist älter als SPARC, das ist korrekt 
(genau genommen ist ARM der älteste kommerzielle RISC).
Allerdings basiert SPARC auf dem Berkeley-RISC-Projekt (vielleicht hätte 
ich diesen Namen verwenden sollen, aber kaum jemand kennt das Projekt 
heutzutage und so riesig ist der Unterschied zu SPARC nicht) und das 
wurde von den Acorn-Entwicklern nicht nur als Inspiration, sondern als 
eigentlicher Anstoß genommen, eine eigene Prozessorarchitektur zu 
entwickeln. Läßt sicher sehr gut in den Büchern von Steven Furber 
nachlesen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.