Red de conocimiento informático - Aprendizaje de código fuente - Conjunto de instrucciones, SBC por qué es necesario invertir C

Conjunto de instrucciones, SBC por qué es necesario invertir C

Cabe señalar que en la instrucción SUBS, si se produce una operación de préstamo, el bit de bandera C en el registro CPSR se establece en 0: si no se produce ninguna operación de préstamo, el bit de bandera C en el registro CPSR se establece en 1. Esto es exactamente lo opuesto a la instrucción de acarreo en la instrucción ADDS. Esto es principalmente para adaptarse a las necesidades operativas de instrucciones como SBC.

Instrucción de resta bit a bit SBC:

La instrucción SBC resta el valor representado por del registro y luego resta el complemento del bit del indicador de condición C en el registre CPSR, guarde el resultado en el registro de destino y actualice el bit de indicador de condición correspondiente en el CPSR de acuerdo con el resultado de la operación.

"Arquitectura y programación ARM" Du Chunlei P67

¿Cómo entiendes la configuración inversa y luego el código inverso en este lugar?

Creo que sí. La oración en fuente roja de arriba no es exacta. El propio SUB resta, basándose en el código de complemento, es decir, complemento (complemento + complemento + X). esta X representa si pedir prestado o no.

Supongamos que se produce un préstamo y el bit de marca C es 0 en este momento, luego se invierte 0 y el resultado es 0xFFFF (suponiendo un sistema operativo de 16 bits, que es 16 1) y 0xFFFF Resulta ser complemento a 1, por lo que X es 0xFFFF, lo que significa que cuando se produce un préstamo, lo que sucede en el mundo decimal es en realidad "menos uno", lo que cumple con los requisitos.

En consecuencia, si no hay préstamo, se invierte 1 y el valor alcanza 0x0000, que es exactamente el complemento de -0, que cumple con los requisitos.

====Lo siguiente continúa citando:

La instrucción SBC y la instrucción SUBS se pueden usar juntas para restar dos operandos de 64 bits. Si un operando fuente de 64 bits se coloca en los registros RO y R I, con el valor inferior de 32 bits ubicado en RO: otro operando fuente de 64 bits se coloca en los registros R2 y R3, con el valor inferior de 32 bits ubicado en R2 . La siguiente secuencia de instrucciones implementa la operación de resta de dos operandos de 64 bits.

SUBS R4, R0, R2 SBC R5, Rl, R3

Cabe señalar que en la instrucción SBCS, si se produce una operación de préstamo, el indicador C en el registro CPSR se establece a 0: si no se produce ninguna operación de préstamo, el bit de bandera C en el registro CPSR se establece en 1. Esto es exactamente lo opuesto a la instrucción de acarreo en la instrucción ADDS.

¡Corrígeme si entiendes lo anterior!