¿Cómo funcionan las condiciones en una computadora? [cerrado]

-3

Quiero saber cómo sabe una computadora si una condición es verdadera o falsa. Por ejemplo, en montaje las instrucciones

SUB EAX, EBX
JNZ not_equal

comprobará si los registros no son iguales (compruebe si el indicador cero ZF es 0).
ZF = 1 significa que hay electricidad (este bit está activado), pero no entiendo cómo la computadora sabe cómo hacer un salto lógico (condicional).
Supongo que la respuesta está relacionada con la forma en que funciona la electricidad en la CPU, pero me gustaría saber qué es exactamente.
Espero que la pregunta sea lo suficientemente clara ...
Si no, solo dime todo lo que puedas sobre las instrucciones condicionales en una CPU.

    
pregunta Mor Cohen

3 respuestas

1

este no es fácil de responder en breve. Pero lo intento:

El bloque de construcción básico de un mcu es una "puerta lógica". Estos vienen en diferentes sabores: Y / O / NO / XOR, etc. vea enlace . El otro es una celda de memoria.

Dependiendo de la técnica que utilice su CPU, se pueden construir con transistores / mosfets, etc.

Por simplicidad, imagine que una compuerta AND es un transistor PNP cuyo EMISOR solo se vuelve alto cuando se aplica corriente tanto a BASE como a COLLECTOR.

Ahora a su programa:

Tu primera instrucción es una sub que resta un valor de otro. Si ambos valores son iguales, el registro de destino solo contiene cero. Entonces (para un registro de 8 bits) hay 8 celdas de memoria que contienen ceros o que "no contienen corriente" / están "conectadas a tierra".

Ahora, utilizando las puertas lógicas, puede O estas celdas de memoria y terminar con una salida que es alta (si alguna de ellas es alta) o baja (si todas son bajas). Este valor se transfiere (por ejemplo, conecte salida de este "cable" a la entrada de la celda de memoria) al registro de estado como Z-Bit.

Ahora a tu segunda instrucción: el salto condicional.

Primero, la condición: esto podría ser solo otra puerta que se conecta a la celda de memoria Z-Bit.

Ahora el salto: el puntero de instrucción de tu CPU es solo otra celda de memoria. Pero todo lo que necesitamos es transferir el valor de su objetivo de salto a esa celda de memoria utilizando algunas puertas AND.

¿Así que es eso?

En realidad no. Es mucho más complicado. No hemos hablado de relojes, unidades auxiliares y mucho más. Pero estas deben ser las operaciones muy básicas para que pueda imaginar algo que al menos no sea completamente incorrecto;)

EDITAR: si desea saber más o simplemente probar que no es así mucho más complicado, vea esto: enlace

    
respondido por el Scheintod
1

La lógica de la CPU es muy complicada y varía según la arquitectura, pero su pregunta puede entenderse en el nivel de la puerta lógica. La CPU tiene un registro llamado puntero de instrucción (IP) que contiene la dirección de la siguiente instrucción para que la CPU obtenga de la memoria. Normalmente, después de cada instrucción hay algunos circuitos lógicos que incrementan el puntero de la instrucción para que apunte a la siguiente instrucción. Cuando la CPU recibe una instrucción de salto, en lugar de incrementar el puntero de instrucción, hay otros circuitos lógicos (puertas NAND) que verifican el estado de las banderas apropiadas. Si determinan que es necesario que ocurra un salto, en lugar de incrementar el puntero de instrucción, la dirección del salto se carga en el puntero de instrucción. Esto hace que la CPU obtenga la siguiente instrucción de esa nueva dirección. La dirección se suele dar como parte de la instrucción de salto.

Entonces, para responder a tu pregunta, la forma en que la computadora "sabe" hacer un salto es porque los diseñadores del chip diseñaron los circuitos para que se comporten de esa manera. Si desea obtener más información sobre el funcionamiento interno de una CPU, le recomiendo el libro Pero, ¿cómo saberlo? . Tiene una explicación completa de una CPU simple que incluye todos los circuitos lógicos. Las CPU del mundo real son mucho más complicadas e incluyen cosas como la predicción de ramificación y el multihilo, pero ese libro le dará una buena idea de lo que está pasando dentro del silicio.

    
respondido por el Robert Stiffler
0

No debe preocuparse, en este nivel, cómo funciona la electricidad en una CPU o si una CPU "sabe" algo.

Si desea construir una CPU a partir de transistores, entonces saber cómo funciona la electricidad sería algo bueno.

En este nivel, es de suponer que está contento de que una CPU tenga registros, pueda direccionar la memoria, pueda decodificar instrucciones y todos estos pueden considerarse como vectores de 'bits' o valores lógicos binarios.

El indicador de cero, o el indicador de transporte, es solo un bit más, que el decodificador de direcciones tiene en cuenta al decidir dónde obtener la próxima instrucción. Si la instrucción tiene un bit verdadero en la parte 'verificar condicional' de la instrucción, y se establece el CF o ZF, entonces el decodificador de dirección busca la instrucción en la rama. Si no, recupera la siguiente instrucción.

    
respondido por el Neil_UK

Lea otras preguntas en las etiquetas