[zxspectrum] Un po' di codice macchina..

  • From: Stefano Bodrato <stefano_bodrato@xxxxxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Thu, 11 Oct 2007 10:40:15 +0200

Ciao a tutti,
avrei una domandina per i molti pazzi dell'assembler in lista (utimamente un 
po' dormienti, ma so che ci siete..).


Avendo rimesso le mani sul z88dk per lo ZX81 sono arrivato alle librerie che 
fanno uso dei registri "speciali" dello Z80 (registri indici, set alternativo, 
ecc..).

Allo stato attuale NON posso permettermi di usare IY (in verità sarebbe IX, ma 
faccio uno swap a caldo in fase di compilazione/assemblaggio, sia delle 
librerie che dei programmi utente) e AF'.
Inoltre credo che non sia il caso di toccare neanche HL'.

Sto quindi definendo delle macro che poi potranno servire in generale per 
situazioni analoghe (vedi GameBoy o il Rabbit Control Module, che assomigliano 
allo Z80 ma hanno delle modifiche interne). 
Ad esempio l'istruzione EX AF,AF' può essere sostituita con una CALL a una 
routine del genere:

af1:    defw    0
afswap:
        push    hl
        push    af
        ld          hl,(af1)
        ex        (sp),hl
        ld          (af1),hl
       pop     af
       pop     hl
       ret

So che l'impatto sulle prestazioni può essere disastroso (anche se finora i 
risultati sono soddisfacenti), ma ci permette di essere molto rapidi 
nell'ottenere qualcosa di funzionante, che poi può essere ottimizzato in 
seguito.

Penso di usare lo stesso trucco per la tripletta BC DE e HL per rimpiazzare 
l'istruzione EXX (vi vengono in mente sistemi migliori ?).

Poi vorrei trovare un modo per sostituire le istruzioni che hanno a che fare 
con i registri indice.. secondo voi è possibile ?
In qualche punto ci sono riuscito, ma ho molti dubbi (non ultimo devo scoprire 
se questi vengono maneggiati dalle LIB con istruzioni non documentate).


_________________________________________________________________
Scarica GRATIS la versione personalizzata MSN di Internet Explorer 7!
http://optimizedie7.msn.com/default.aspx?mkt=it-it

Other related posts:

  • » [zxspectrum] Un po' di codice macchina..