¿cómo implementa la mayoría de los compiladores las operaciones en los operandos de 64 bits (por ejemplo, int largo) en entornos de 32 bits? en otras palabras, ¿hay alguna manera de implementar estas operaciones en un solo paso o necesitamos acceder a múltiples ubicaciones de memoria para implementar estas operaciones?Operaciones en operandos de 64 bits en arquitecturas de 32 bits?
Respuesta
Utilizan dos registros para contener un valor de 64 bits. Uno para los 32 bits inferiores y uno para los 32 bits superiores.
Para x86, 64-bit de suma/resta se realiza mediante complemento con acarreo y restar-con-prestado instrucciones:
add %eax, (lower 32-bits of operand)
adc %edx, (upper 32-bits of operand)
multiplicación de 64 bits es mucho más complicado, pero también hace usando una combinación de multiplicaciones de 32 bits y instrucciones add-with-carry de 32 bits. (de forma similar a una multiplicación larga con 2 dígitos)
Para cargas y almacenes, sí, dos valores de 32 bits deben cargarse/almacenarse en/desde dos registros.
De forma similar, los enteros de 128 bits se pueden implementar en hardware de 64 bits. GCC lo admite como una extensión.
¿Qué sucede con los enteros de 128 bits en hardware de 32 bits (x86)? –
Se pone feo. En este punto, no es muy diferente de la aritmética de precisión múltiple. Además, estaría encadenando 3 instrucciones 'adc'. (no olvides que tienes una dependencia en la bandera de acarreo que podría matar tu tubería ...) Para la multiplicación, tendrías que hacer multiplicaciones de 16 x 32 bits y un montón de 'agregar' y' adc'. .. No conozco ningún compilador que admita esto. – Mysticial
- 1. 64 bits por división de 32 bits
- 2. Registros de 64 bits en ventanas de 32 bits
- 3. ¿Aplicación de 32 bits o de 64 bits en el sistema operativo de 64 bits?
- 4. Ejecute AnyCPU como 32 bits en sistemas de 64 bits
- 5. Eclipse 32 bits ejecutándose en 64 bits JVM
- 6. QtCreator en Linux: 32 bits frente a 64 bits
- 7. Compilación de 32 bits con llvm-gcc de 64 bits
- 8. Agregar números de 64 bits con aritmética de 32 bits
- 9. Determinación de Windows de 64 bits frente a 32 bits
- 10. ¿Cómo fuerzo Python para ser de 32 bits en Snow Leopard y otras preguntas de 32 bits/64 bits
- 11. ¿Cómo debería funcionar la aplicación en las arquitecturas intel de 64 bits frente a las de 32 bits?
- 12. Puerto 32 bits Controlador de Windows a 64 bits Windows
- 13. Compatibilidad con Java de 32 bits frente a 64 bits
- 14. conversión de aplicación .NET 32 bits a 64 bits
- 15. Mezcla de 32 bits y 64 bits P/Invoca
- 16. Objeto compartido/bibliotecas mixtas de 32 bits y 64 bits
- 17. ¿iPhone OS es de 64 bits o 32 bits?
- 18. MapViewOfFile compartido entre procesos de 32 bits y 64 bits
- 19. Utilice un instalador de NSIS para instalar binarios de 32 bits en sistemas operativos de 32 bits y binarios de 64 bits en sistemas operativos de 64 bits.
- 20. ¿Por qué Valgrind está limitado a 32 Gb en arquitecturas de 64 bits?
- 21. ¿Utiliza la versión de 32 bits de ODBC en Windows 7 de 64 bits?
- 22. División de 64/32 bits en un procesador con división de 32/16 bits
- 23. Siempre es de 64 bits en las máquinas de 32 y 64 bits
- 24. Interoperabilidad de 32 y 64 bits en Windows de 64 bits
- 25. Wendy ASP.NET AJAX Error/32 bits a 64 bits
- 26. Java JDK 32 bits frente a 64 bits
- 27. En sistemas de 64 bits, ¿una columna de 32 bits ocupa menos espacio que uno de 64 bits?
- 28. ¿Alguna razón para usar enteros de 32 bits para operaciones comunes en la CPU de 64 bits?
- 29. uint es de 32 bits, sin importar si el sistema es de 32 o 64 bits?
- 30. individual de 32 bits con 32 MSI/controladores de 64 bits
o registros múltiples más bien –