La maestría interior...
Metal Slug para Atari STE: Video-1 Video-2
En venta memorias de 512 KB y 1 MB para Amiga 500 y Amiga 500 Plus
En venta disco duro tarjeta micro SD para Atari ST/E, compatible SDHC
No creo ya que dependiendo del lo grande que sean los números tardarías mas, supongo que se hacen con sumas y desplazamientos. IIRC ningún procesador de 8 bits tiene instrucciones de multiplicaciones ni division.
De todas formas para el Elite en vez de usar matrices de rotacion y multiplicar vectores, usaban logaritmos. Log(a*b) = Log(a) + Log(b). Asi se ahorran las multiplicaciones.
http://www.gdcvault.com/play/1014628...ame-Postmortem
-----Actualizado-----
Y si no vas justo de memoria puedes usar esto, pero creo que solo funciona para números positivos. Sacado de una pagina sobre 6502.
Código:;Fast Multiplication; ;The idea stems from Stephen Judd. ;You find it in The Fridge and in the C=Hacking magazine: ; ;Let f(x) = x^2 / 4. Then ; ; a*b = f(a+b) - f(a-b) ; ;You need 2 tables of squares with 9 bit input size and ;16 bit result size. ; ;You can save the building of the 2th complement ; ; EOR #$ff ; CLC ; ADC #1 ; ;by shifting the second table 1 byte down and ;using the 1th complement: ; ; EOR #$ff ; ;This algorithm is very useful when you want to multiply ;multiple bytes by the same factor. Then you can set the ;zp addresses once and just modify the y register. ;With the same trick you can easily extend this algorithm ;to 16 bit. But if you want to be fast you will need more ;than the 8 zp addresses.
No es lo mismo tener diez años de experiencia, que tener un año de experiencia diez veces.
It is an undisputed truth that the Atari ST gets the best out of coders. No dedicated hardware, just the CPU and a frame buffer! Some call it Spartan, others name it Power Without The Price, and a select few say `challenge accepted'! --- by spkr from smfx
JoJo_ReloadeD (29/06/2018)
Encantado con la info, lo de emplear las reglas de los logaritmos en lugar de multiplicar (dado que no podían) es excelente; aunque debo dar por hecho que tendrán unas tablas de logaritmos precalculadas y luego con otra relación obtienen más valores o algo semejante.
Conozco un procesador de 8 bits que sí tiene instrucción de multiplicar y de dividir, de hecho la de multiplicar da como resultado un número de 16 bits, que se guarda en dos campos / registros de 8 bits. El procesador incluído como núcleo en el microcontrolador 8051, que data de 1980 por Intel:
8051 MUL instruction:
http://www.keil.com/support/man/docs/is51/is51_mul.htm
8051 DIV instruction:
http://www.keil.com/support/man/docs/is51/is51_div.htm
¿Así que el Z80 se encuentra en desventaja frente a un 8051? ¿El 8051 era mucho más "élite" que el Z80? Lo que si sé, es que el código máquina generado por un programa en C de 8051 en el que hagas cálculos con números de 32 bits ocupa más que el equivalente en Z80, ahora como hagas multiplicaciones y divisiones ya sabemos cual va a ser mejor; y luego para mover bloques de datos, en 8051 tienes lo básico, moverlos byte a byte a memoria externa cuesta 2 instrucciones por byte a mover.
Es un microcontrolador, pero le puedes colocar hasta 64 KB de RAM externa y con otros pines de entrada/salida puedes hacer bank switching y elevar esa cifra a 128 KB o a 256 KB pero sin despeinarte, y entonces ya tendrías convertido el 8051 en procesador de 8 bits. Es una práctica habitual, o al menos lo era, para los computadores en sistemas ferroviarios en los 80; había placas madre con un 8051, RAM externa, disquetera y adaptador de vídeo; además de puerto serie RS-422 y 485 Y se siguen usando, montando y reparando; como les funcionan no las cambian,
Ahora, a nivel de eficiencia en la ejecución de las intrucciones ya no sé quien gana, si el Z80 o el 8051
Por otra parte, gran parte de la magia del 68000 es que ya tiene lista la siguiente instrucción a ejecutar mientras está ejecutando la anterior... pipelining, creo que es el primero en llevar de esto,
Última edición por masteries; 28/06/2018 a las 23:21
La maestría interior...
Metal Slug para Atari STE: Video-1 Video-2
En venta memorias de 512 KB y 1 MB para Amiga 500 y Amiga 500 Plus
En venta disco duro tarjeta micro SD para Atari ST/E, compatible SDHC
https://chuntey.wordpress.com/2013/1...es-chapter-15/
a veces con simples rotaciones de bits bastaba, depende por cuanto se queria multiplicar o dividir...
...
Mira Splinter que recientemente me he documentado sobre la CPU que montan los microcontroladores basados en ARM más humildes, aunque es una CPU de 32 bits... y resulta que la CPU ARM Cortex M0 no dispone de instrucción para dividir números, al menos tiene instrucción para multiplicar... pero lo de la división me ha dejado sorprendido.
La maestría interior...
Metal Slug para Atari STE: Video-1 Video-2
En venta memorias de 512 KB y 1 MB para Amiga 500 y Amiga 500 Plus
En venta disco duro tarjeta micro SD para Atari ST/E, compatible SDHC
Supongo que porque es un microcontrolador y la division se usa "poco", les conviene ahorrar espacio, pero la multiplicacion la necesitas cada vez que accedes a un elemento mediante un indice.
No es lo mismo tener diez años de experiencia, que tener un año de experiencia diez veces.
It is an undisputed truth that the Atari ST gets the best out of coders. No dedicated hardware, just the CPU and a frame buffer! Some call it Spartan, others name it Power Without The Price, and a select few say `challenge accepted'! --- by spkr from smfx
Marcadores