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
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
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.
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.
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
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. ;-)
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.
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.