Ready64 Forum

Commodore 64 => Aiuto & Domande => Topic aperto da: Hal9000 - 21 Novembre 2019, 17:27:56

Titolo: Moltiplicazione assembly
Inserito da: Hal9000 - 21 Novembre 2019, 17:27:56
https://i.imgur.com/3VROY4I.png (https://i.imgur.com/3VROY4I.png)

Salve, sul libro Programmazione del 6502 è riportato un esempio di moltiplicazione, dopo l'ultima iterazione del ciclo, viene eseguita comunque un'operazione di scorrimento e rotazione che restano inutilizzate, volevo provare a modificare la logica del codice cercando di risparmiare qualche istruzione. Potete dirmi se la versione modificata nell'immagine è corretta? ???

thx :ciauz:

Titolo: Re:Moltiplicazione assembly
Inserito da: eregil - 21 Novembre 2019, 22:04:11
Per cortesia verso gli altri frequentatori, non utilizzare immagini quando non strettamente necessario: per riportare del codice, usa i tag {code}...{/code} (usa le quadre anziché le graffe). In questo modo resterà traccia delle tue domande sul forum e sarà possibile fare copia e incolla.
Titolo: Re:Moltiplicazione assembly
Inserito da: 0scur0 - 22 Novembre 2019, 09:17:41
A un'occhiata veloce le due versioni del programma dovrebbero essere equivalenti, nella seconda ti risparmi di preparare il moltiplicando per una somma parziale che non avverrà.
Se ti va prova a ottimizzare ulteriormente la routine usando meno cicli.
Titolo: Re:Moltiplicazione assembly
Inserito da: eregil - 22 Novembre 2019, 09:27:45
Lo scopo di eseguire l'ultima iterazione del ciclo (non eseguito nella seconda versione) è quello di preservare il valore del fattore in una locazione di memoria. Inoltre la seconda versione ha anche il difetto di non essere rilocabile senza modifiche, data la presenza di una JMP. Questi sono i due motivi per cui l'autore originale non ha proposto queste modifiche. Sul libro è riportata anche una versione ottimizzata dell'algoritmo, poche pagine dopo.
Titolo: Re:Moltiplicazione assembly
Inserito da: Hal9000 - 26 Novembre 2019, 19:35:00
Grazie ad entrambi  :ciauz: