Re: Adresové cykly u klasické '51

Jan Waclawek konfera na efton.sk
Neděle Červen 21 14:32:49 CEST 2015


Takto prvoplanovo sa dekodovat fetch prvej instrukcie u '51 neda. U
niektorych klonov (Philips/NXP, SST/Microchip, Dallas) by sa dal ziskat
vnutorny stav pomocou nezverejnenych rozsireni ktore su tam kvoli
debuggingu, ale ako vravim, su nezverejnene t.j. by sa museli reverznut
alebo z niekoho znaleho (co ja nie som) vymlatit.

Mozno by sa dalo vyuzit aj instrukcia vzdy fetchuje dvakrat v instrukcnom
cykle (kazdych 6 hodinovych cyklov u klasickej 12-clock '51), a u
jednobytovych instrukcii sa v druhom fetchi neinkrementuje adresa. No
lenze podobne je to u trojbytovych instrukcii, ale tam samozrejme je to
este viac ex-post-ovitejsie ;-), a tiez u dvojbytovych - dvojcyklovych; no
proste by si bolo treba nakreslit vsetky kombinacie a vsetky moznosti
inkrementu adries a skusit odhadnut, ci sa z toho da unikatne to MOVC
dekodovat. Inak ani inkrement adresy nie je trivialne dekodovat, bo to
kazia skoky...

Mimochodom, MOVC nie je jedna instrukcia ale dve - ani ten komparator
instrukcie by nebol uplne trivialny najma ak nie je poruke '688...

wek



>  ano, jistě, to mne také napadlo. Ale myslím, µe úplný dekodér instrukcí,
>který by na to byl potřeba, tam není. Ono by to ±lo snáze, pokud by '51
>měla signál M1 jako třeba Z80, ale ten pokud vím nemá a není asi snadné
>ho dekódovat.
>  "Chytrostí" se zde rozumí jen běµné obvody maximálně úrovně MSI. Nic
>programovatelného. Jde o design z 80. let minulého století, kdy to CPU
>byla asi největ±í "chytrost", která v tom je.
>  Taky se kloním k závěru, µe to asi bez "extrémní chytrosti" nejde a tedy
>µe pokud chci přistupovat k určité paměti, ze které chci brát instrukcí
>MOVC data, tak v ní musím ten program skutečně vykonávat (samozřejmě
>pominu-li moµnost např. na adrese 1000H mít vybraný jeden čip a na adrese
>F000H jiný, ale to je jaksi normání způsob a nesouvisí to s tímto dotazem).
>
>Zdraví Pavel
>
>> "Chytrost" to je co? Programovatelná logika?
>>
>> Napada mne dekodovat instrukce a pokud se detekuje instrukce MOVC A, at A+DPTR 
>> tak v dalsim cyklu to prepnout na jinou pamet.
>>
>> Ale bude to mazec - nektere instrukce maji jeden byte jine vice.
>>
>>
>> Michal Gregor
>>
>>
>>
>>
>> Dne 20.6.2015 v 12:08 Pavel Troller napsal(a):
>>> Zdravím,
>>>    analyzuji tu nějaký kód klasické '51 a potřeboval bych vědět jeden HW
>>> detail, který teď přesně nevím:
>>>    Lze rozpoznat čtecí cyklus při vykonávání instrukce MOVC A, at A+DPTR
>>> od běµného čtení kódu (instruction fetch) ?
>>>    Zajímá mne, zda lze při pouµití nějaké přídavné chytrosti v adresovém
>>> dekodéru specificky tento cyklus rozpoznat a poslat na sběrnici data z
>>> jiné paměti, neµ je ta, z níµ se aktuálně vykonává program.
>>>    Samozřejmě znám instrukce MOVX, které přistupují k externí RAM, ale
>>> zde by ±lo o je±tě jiný, dal±í paralelní adresový prostor.
>>>
>>> Zdraví Pavel



Daląí informace o konferenci Hw-list