Varias razones que conozco y he usado, la mayoría implican trabajar con “bignums” enteros, enteros mucho más grandes que el tamaño de los datos nativos (por ejemplo, números de 2048 bits en una máquina de 32 bits), pero también se aplican a lazos y lógica más generales. casos:
- Al configurar O y Z, INC y DEC efectivamente le dan el estado C, por lo que sería duplicativo tocarlo realmente. Puede realizar su acarreo / préstamo en sus operandos más grandes basados en O / Z cuando está trabajando en 1. Debido a que +/- 1 es una operación tan común incluso con “bignums”, a menudo personaliza esta ruta de código con un bucle especial, así que tienes una ruta general muy rápida para aumentar o disminuir un “bignum”
- Al no tocar C, puede usar INC / DEC para los bucles de cierre que representan cosas como (a) el tamaño (a menudo variable) de su “bignum” durante la suma / resta o (b) el recuento de interacciones durante “bignum “multiplicación y división (o pow o shift, etc.) – y los bucles no afectarán la lógica de acarreo necesaria para la suma / resta principal – realizas un ADD o SUB (o shift), que establece C / B y luego el Los INC o DEC necesarios para administrar sus bucles solo tocan O / Z y dejan a C solo. Luego, prueba para ver si has terminado con el bucle y sale o reinicia / vuelve a contar si es así antes de utilizar C / B en el siguiente elemento de tu “bignum”.
- Hasta donde sé, este no es el caso en las primeras CPU que ya tenían este diseño para INC / DEC y, por lo tanto, creo que surgió de 1. y 2. arriba, pero más tarde cuando ADD / SUB podría tomar varios ciclos y había tuberías. , y C no se establecería en el próximo ciclo si quisiera ramificarse en él, resulta útil poder poner el INC / DEC de su ciclo justo después de ADD / SUB para mantener la tubería llena. Relacionado con ambos 2. y 3. aquí, estos bucles muy importantes tienen menos lógica de ramificación y son simplemente más pequeños y más rápidos debido a este diseño.
- Hay otros casos en los que compila / codifica C para construcciones de bucles while mientras este efecto también es útil en relación con posibles bloqueos de canalización. Debido a que INC / DEC solo tiene el impacto O / Z, tienen menos restricciones de movimiento y son más fáciles de usar para llenar la tubería.
No sé si estas son las razones específicas de Bryant y O’Hallaron, pero son lo suficientemente esotéricas y universales como para sospechar que son la razón por la que esto surgió originalmente y luego se ha quedado.
- ¿Cómo se implementa un árbol KD bidimensional en C ++?
- Creo que soy de mente recursiva. No quiero pero observo mi pensamiento mientras estoy pensando en resolver cualquier problema. Y no encuentra solución. ¿Qué hacer?
- ¿Es una persona inteligente debido a los 'algoritmos' que usa su cerebro? Si es así, ¿alguien podría copiar ese 'algoritmo' para ser igualmente inteligente?
- ¿Cómo podemos lograr la inserción en el hash en el peor de los casos en O (1) mediante el uso de la matriz, mientras que las matrices tienen problemas de extensión en filledup?
- ¿Qué bibliotecas o marcos de Python, C son buenos para las pruebas de diagnóstico en estadísticas?