Was ist der Zweck der Rotieroperationen (ROL, RCL auf x86)?
Fragte ich mich immer, was ist der Zweck der rotate-Anweisungen einige CPUs haben (ROL, RCL auf x86, zum Beispiel). Welche Art von software nutzt diese Anleitung? Ich dachte zuerst, Sie können verwendet werden für die Verschlüsselung/Computer-hash-codes, aber diese Bibliotheken sind geschrieben in der Regel in C, welche keine Operatoren, die Karte zu dieser Anleitung.
Hat jemand fand eine Verwendung für Sie? Warum, wo Sie Hinzugefügt, um die Anweisungen setzen?
InformationsquelleAutor der Frage Gratian Lup | 2011-02-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dreht die erforderlich sind für die bit-Verschiebungen über mehrere Wörter. Wenn Sie SHL das untere Wort, das high-order bit heraus schwappt in die tragen. Um den Vorgang abzuschließen, müssen Sie eine Verschiebung der höheren word(s) während der Einführung in das tragen der low-order-bit. RCL ist die Anweisung, die das leistet.
ROL und ROR sind nützlich für die Analyse einen Wert bit-by-bit in einer Weise, die (letztlich) nicht-destruktiv. Sie können auch verwendet werden, um shunt-eine Bitmaske, um ohne bringt im Müll bits.
InformationsquelleAutor der Antwort Nietzche-jou
Drehen shift-Befehle ROL, RCL, ROR, RRW) sind fast ausschließlich für Hash-und CRC-Berechnungen. Sie sind ziemlich obskur und sehr selten benutzt.
Die shift-opcodes (SHL, SHR) verwendet für die schnelle Multiplikation von Potenzen von 2, oder verschieben von einem low-byte in ein high-byte großes register.
Den Unterschied zwischen ROL und SHL ist ROL nimmt die hohen bit-und Rollen Sie es um in den " low bit-position. SHL wirft die hohe bit Weg und füllt die niedrigen bit-position mit null.
InformationsquelleAutor der Antwort dthorpe
ROR ROL sind "historisch", aber immer noch nützlich in einer Reihe von Möglichkeiten.
Bevor der 80386 (und opcode-BT), ROL wäre viel verwendet, um zu testen, ein bisschen (SHL nicht propagieren, um das carry flag) - tatsächlich in den 8088, ROR/ROL würde nur shift um 1 bit zu einer Zeit !!!!
Auch wenn Sie verschieben möchten, ein Weg und dann die andere Weise, ohne dabei die bits, die verschoben waren außerhalb des Bereichs, die Sie verwenden würden, ROR/ROL statt SHR/SHL
InformationsquelleAutor der Antwort Alain Pannetier
Wenn ich Sie richtig verstehe, Ihre Frage ist diese:
"Angesichts der Tatsache, dass die rotation Anweisungen scheinen sehr speziellen Zweck und nicht emittiert, der von Compilern, Wann sind Sie eigentlich und warum sind Sie eingeschlossen in CPUs?".
Die Antwort ist zweierlei:
CPU ' s sind nicht speziell zum ausführen von C-Programmen. Vielmehr sind Sie konzipiert als Allzweck-Maschinen, die zu lösen eine Vielzahl von Problemen mit einer Vielzahl von verschiedenen tools und Sprachen.
Den Designern der Sprache sind nicht verpflichtet, jede opcode in der CPU. In der Tat, die meisten der Zeit, Sie tun es nicht, weil einige CPU-Instruktionen sind hoch spezialisiert, und die Sprache der designer hat keine dringende Notwendigkeit, Sie zu benutzen.
Mehr Informationen über die bitweisen Operatoren (und, wie Sie sich auf C-Programmierung) können hier gefunden werden: http://en.wikipedia.org/wiki/Bitwise_operation
InformationsquelleAutor der Antwort Robert Harvey
Zurück, wenn Mikroprozessoren erstellt wurden, werden die meisten Programme geschrieben wurden, die bei der Montage nicht kompiliert. Die Mehrheit der CPU-Anweisungen sind wahrscheinlich nicht emittiert durch den Compiler (das ist der Anstoß für die Erstellung RISC), aber die sind oft relativ einfach zu implementieren in hardware.
Viele algorithmen, Grafiken und Kryptographie "rotation verwenden", und Ihre Integration in CPUs macht es möglich, zu schreiben, sehr schnelle algorithmen in der Montage.
InformationsquelleAutor der Antwort Gabe