Esiste qualcosa come un operatore modulo in x86 Assembler?Assembly Language - Come fare Modulo?
risposta
L'istruzione DIV
(ed è la controparte IDIV
per i numeri firmati) fornisce sia il quoziente che il resto (modulo). DIV r16
divide un numero a 32 bit in DX:AX
da un operando a 16 bit e memorizza il quoziente in AX
e il resto in DX
.
Esempio:
mov dx, 0
mov ax, 1234
mov bx, 10
div bx ; Divides 1234 by 10. DX = 4 and AX = 123
In 32 bit assemblaggio si può fare div ebx
per dividere un operando a 64 bit in EDX:EAX
da EBX
. Vedi Intels Architectures Software Developer’s Manuals per ulteriori informazioni.
Ma GCC non utilizza div perché è lento: http://stackoverflow.com/questions/4361979/how-does- the-gcc-realizzazione-di-modulo-lavoro-e-perché-fa-da-non-uso-the –
Se si calcola modulo una potenza di due, l'uso di AND bit a bit è più semplice e generalmente più rapido rispetto alla divisione di esecuzione. Se b
è una potenza di due, a % b == a & (b - 1)
.
Ad esempio, prendiamo un valore nel registro EAX, modulo 64.
Il modo più semplice sarebbe AND EAX, 63
, perché 63 è 111111 in binario.
Le cifre mascherate e più alte non ci interessano. Provalo!
Analogamente, invece di utilizzare MUL o DIV con due potenze, lo spostamento dei bit è la strada da percorrere. Fate attenzione agli interi firmati, però!
- 1. Assembly language to C
- 2. Ciao Mondo in LLVM-Assembly Language su Windows
- 3. Assembly language: prova a capire una piccola funzione
- 4. Come fare riferimento a una costante in Spring Expression Language
- 5. Come collegare un file oggetto C con un file oggetto Assembly Language?
- 6. Come posso fare riferimento agli assembly TeamFoundation nel mio progetto?
- 7. Il modulo doveva contenere un manifest assembly
- 8. Come fare un'applicazione senza modulo in C#?
- 9. Come eseguire Esoteric Language ZOMBIE
- 10. Fare clic sul modulo trasparente
- 11. Symfony2 Language per TLD
- 12. Language Translation for Tables
- 13. È possibile fare riferimento a un assembly .NET da ColdFusion?
- 14. plugin maven-assembly - come creare assembly nidificati
- 15. In Go Language, come faccio a fare un array unson a un array di oggetti?
- 16. Go language su iPhone
- 17. mpd mpc query language
- 18. Console.log in Dart Language
- 19. Visual Language Control Control
- 20. cUrl set language header
- 21. MarkLogic triple objects language
- 22. Come cambio il browser accept-language
- 23. Laravel Vue Language Translation
- 24. Estensione Library vs Language
- 25. Maven assembly: assembly
- 26. Come formattare un numero in Expression Language?
- 27. Come usare Go language con NetBeans IDE?
- 28. Come fare riferimento a file locali in un modulo npm?
- 29. Come fare clic su modulo Onclick Javascript usando Selenium?
- 30. Notepad ++ Keyboard Language appena cambiato
http://stackoverflow.com/questions/4361979/calculating-modulo-in-assembly –