Estaba pensando, ¿cómo interpretan las máquinas el código binario? Todo lo que entiendo es que tu código get se convirtió en 1 y 0 para que la máquina pueda entenderlos, pero ¿cómo lo hacen? ¿Es solo un texto normal para la traducción binaria?¿Cómo interpretan las máquinas el binario?
Respuesta
En primer lugar, "binario" no significa lo que usted piensa que significa (cualquier información en la computadora, incluido el texto ya es binario, simplemente la forma en que decidimos mostrar y manejar es diferente).
En segundo lugar, la compilación no es una simple transformación a personajes divertidos (si fuera así, no necesitaríamos compiladores diferentes para diferentes idiomas). Para comprender realmente el código de máquina, debe comprender la arquitectura a la que apunta. Hay muchas arquitecturas de computadora, tu PC es solo una de ellas. Es un tema muy amplio y necesita una comprensión firme de la arquitectura de la computadora para comprender.
Mostraré un ejemplo de instrucciones MIPS. Si estás interesado, puedes seguir leyendo y obtener algunos conocimientos reales sobre el tema, prueba los enlaces al final de mi publicación.
MIPS es un tema de introducción popular porque su formato de instrucción es uno de los más fáciles de digerir. Las instrucciones MIPS tienen 32 bits de ancho. Hay 3 tipos de instrucciones en MIPS: "R", "I" y "J". Echaremos un vistazo a las instrucciones "I".
Cuando el procesador recibe una instrucción (32 bits de datos) lo lee y decide qué hacer con él. "I" instrucciones tener este aspecto:
|------|-----|-----|----------------|
opcode rs rt immediate
6 5 5 16 (the numbers show how wide are each part)
El significado de estos:
- código de operación dice qué tipo de instrucción se trata (por ejemplo: suma, resta, multiplicación y muchos otros). Todas las instrucciones (incluidos los tipos "R" y "J") comienzan con el código de operación de 6 bits, y así es como el procesador sabe de qué tipo es.
- rs y rt son registros, un tipo de almacenamiento en el procesador que puede contener valores de 32 bits. MIPS tiene 32 de estos y se identifican por su número. Esto no es lo mismo que memoria, está dentro de la CPU.
- inmediatamente es un número. Se llama así porque el número está "justo allí" en la instrucción, no en un registro o memoria.
Un ejemplo concreto de la adición de un inmediata a un número almacenado en un registro:
001000 00001 00010 0000000000000011
En este ejemplo, se rompió la instrucción en partes más que el anterior.El significado de los valores es la siguiente:
- código de operación:
001000
significaaddi
o "Agregar inmediata". - rs:
00001
es1
en decimal, por lo que esta parte de la instrucción indica al procesador que queremos utilizar el registro 1 como rs. - rd:
00010
es2
en decimal, la misma idea que con rs. - inmediato:
0000000000000011
es3
en decimal.
La instrucción addi
funciona así: se toma el valor encontrado en rs y añade el valor inmediata a ella. Después de eso, coloca el resultado en rd. Entonces, cuando la instrucción esté lista, rd contendrá 3 + 2 = 5.
En pocas palabras, los compiladores analizan el texto y generan instrucciones para el procesador de destino que hace lo mismo que pretendía hacer con su programa. Como puede ver, hay una gran brecha entre la representación textual del programa que los programadores escriben y el código máquina ejecutable.
Unos recursos útiles en MIPS y arquitectura de computadores:
- Video lecture on computer architecture
- How instruction decoding works inside a MIPS processor
- Computer organization and design
- MARS te permite jugar con MIPS código de máquina
Es un gran tema lo que estás preguntando. Recomendaría el excelente libro The elements of computing systems para una descripción general de cómo se construyen las computadoras y los compiladores en principio. Es bastante fácil de seguir y los ejercicios son divertidos de hacer. La mayor parte está disponible en línea en el enlace proporcionado.
This question también tiene algunos buenos enlaces sobre el tema.
Piense en ello de esta manera. Tiene 8 interruptores de potencia cada interruptor tiene apagado (0) o encendido (1). La computadora verá los 8 conmutadores como 1. Ahora es muy parecido a un bloqueo de combinación. Cada símbolo en su teclado tiene una combinación.
- 1. Crear un binario genérico en linux para todas las máquinas x86
- 2. interpretan como no firmada firmado
- 3. ¿Cómo analizan e interpretan los navegadores el código JavaScript?
- 4. Cómo comparar máquinas virtuales
- 5. ¿Es factible virtualizar las máquinas de desarrollador?
- 6. ¿Cómo encontrar el tamaño de las asignaciones estáticas desde binario?
- 7. ¿Qué tan estables son las máquinas ec2?
- 8. ¿Cómo funcionan las interrupciones en máquinas multinúcleo/multicpu?
- 9. ¿Cómo manejan las máquinas virtuales modernas la asignación de memoria?
- 10. máquinas virtuales
- 11. Idiomas que se interpretan en Javascript?
- 12. texto jQuery(), interpretan <br> como nueva línea
- 13. Mantener las configuraciones de shell sincronizadas en varias máquinas
- 14. ¿Cómo se manejan las interrupciones en las máquinas con dos procesadores?
- 15. ¿Cómo se almacena el código y los archivos para su uso en todas las máquinas?
- 16. ¿Mantiene los archivos de punto sincronizados en todas las máquinas?
- 17. ¿Cómo escalar MySQL con múltiples máquinas?
- 18. Haskell: el crecimiento binario innecesario con las importaciones de módulos
- 19. ¿Cómo eliminar las cadenas de un binario (.so)
- 20. C#, lea las estructuras del archivo binario
- 21. Cómo convertir el binario al decimal
- 22. ¿Cómo puedo traducir el ensamblaje a binario?
- 23. ¿Cómo comprobar si el archivo es binario?
- 24. Cómo convertir el maleficio al iphone binario
- 25. ¿Cómo leer el archivo binario en C#?
- 26. Cómo escribir máquinas de estados con C#?
- 27. construcción usando múltiples máquinas
- 28. máquinas virtuales del futuro
- 29. Eliminación en el montón binario
- 30. ¿Dónde está el binario genérico binario openjdk7.tar.gz?