Erstellen eines Assembly-Programms zum Berechnen von Exponenten - kann ich die imul-Anweisung mit demselben Register wie beide Operanden verwenden?Können Sie imul verwenden, um ein Register zu multiplizieren?
Antwort
Ja, Sie können. imul ax,ax
ist eine vollkommen gute Anleitung.
ELSE IF (NumberOfOperands = 2)
DANN
Temp ← DEST * SRC (* Multiplikation der Unterzeichnung; temp Doppel DEST Größe )
DEST ← DEST * SRC ( Signed Multiplikation *)
IF temp ≠ DEST
DANN CF ← 1; OF ← 1;
ELSE CF ← 0; OF ← 0; FI;
Wie Sie aus dem operativen Algorithmus sehen kann, gibt es keine Gefahr, dass die einzelnen Register korrumpiert, während die Multiplikation auftritt, da die CPU eine Temp während Multiplikation verwendet. CF und OF werden gesetzt, wenn diese temp nicht in das einzelne Register passt.
Ich habe dies früher abgelehnt, aber hatte keine Zeit, den Grund zu verlassen. Ihre intervenierende Bearbeitung ist viel besser, aber für mich, um den downvote schließlich zu entfernen, konnten Sie das ursprüngliche Plakat wenigstens wissen lassen, dass er eine Anweisungssatzreferenz konsultieren sollte. Sie könnten einen Link zur Intel-Dokumentation bereitstellen, aber ich finde [Felix Coultier's Webversion] (http://www.felixcloutier.com/x86/) der Intel-Referenzen einfacher zu navigieren. –
@MichaelPetch Phrasen wie "Schaut es euch im Handbuch an" und "Lerne einen Debugger zu benutzen" (ein anderer Klassiker) sorgen für sehr gute Kommentare, machen es aber in einer Antwort nicht so gut. Was die Bereitstellung eines Links angeht, so glaube ich, dass die Mehrheit der Personen, die Fragen stellen, bereits die Dokumentation/Anweisungssatz-Referenz zur Verfügung hat, aber aus irgendeinem Grund die relevanten Teile nicht extrahieren kann, daher habe ich einen Auszug mit einigen Erläuterungen zur Verfügung gestellt. –
- 1. In x86-Assembly ist es besser, zwei separate Register für imul zu verwenden?
- 2. imul Bauanleitung - ein Operand?
- 3. Verwenden Sie numpy, um eine Matrix über ein Array von Punkten zu multiplizieren?
- 4. Array Elemente multiplizieren ohne Schleife zu verwenden
- 5. Können Sie Boost.Regex verwenden, um einen Stream zu parsen?
- 6. Können Sie blastn verwenden, um nach genauen Übereinstimmungen zu suchen?
- 7. Ist IMUL AX gültig?
- 8. Python-Zeichen multiplizieren oder multiplizieren
- 9. Können Sie die Facebook-API verwenden, um eine Seite (und nicht ein Profil) zu aktualisieren?
- 10. Können Sie den uvm_backdoor-Zugriff für ein einzelnes Register in UVM einrichten?
- 11. Verwenden Sie @media, um Computerbildschirm zu zielen
- 12. Erhöhen/Verwenden/Ändern Smali-Register
- 13. Django: Verwenden Sie LayerMapping, um ein vorhandenes Modell zu aktualisieren?
- 14. Erhalten Sie GCC, um ein SSE-Register in einer Funktion zu erhalten, die Inline-Asm verwendet
- 15. Verwenden Sie Javascript, um auf ein Pseudo-Element zu klicken?
- 16. So richten Sie Clang ein, um MinGW zu verwenden libstdC++
- 17. Verwenden Sie jQuery, um ein langes vertikales Formular zu scrollen
- 18. Java: Verwenden Sie WriteableRaster.setRect, um ein Bild zu überlagern?
- 19. Verwenden Sie CSS, um ein äußeres Element zu beeinflussen
- 20. Wie verwenden Sie factory_boy, um ein MongoEngine EmbeddedDocument zu modellieren?
- 21. Verwenden Sie Dojo, um ein programmatisch generiertes Kombinationsfeld zu formatieren
- 22. Verwenden Sie Maven, um Programme zu starten
- 23. funktionaler Stil, um zwei Listen mit Scala zu multiplizieren
- 24. benutze passwort/code um zur login/register Seite zu gelangen
- 25. Montageanleitung mov Register, [Register] [Register]
- 26. Schreibe Funktion, um Matrizen in C++ zu multiplizieren
- 27. Muss ich gutes JavaScript kennen, um jquery verwenden zu können?
- 28. Verwenden Sie SHAppBarMessage, um Taskleiste zu verschieben
- 29. Multiplizieren Sie TimeSpan in .NET
- 30. Verwenden Sie ASL, um zu console.app
Haben Sie es versucht? –
Ja, und es hat funktioniert. Ich war mir jedoch nicht sicher, ob es in allen Fällen funktioniert oder ob es sich sogar um eine Best Practice handelte. –