Ten procesor má spoločný adresný priestor a napríklad v tej subrutine pravdepodobne číta hodnotu z portu, na 0x0001 je PortA. Je ale kľudne možné že sa ti niekde posunul bajt a namiesto inštrukcie čítaš ich data. To by zodpovedalo tomu úseku kódu kde sa presúva hodnota z registra do registra bez nejakej náväznosti.
Ďalej musíš počítať s tým, že niektoré registre môže čítať cez DMA nejaký ďalší ďas a to že tam niečo zapíšeš a o chvíľu to prepíšeš môže mať nejaký ďalší význam, napríklad odblokovanie niečoho.
To spätné dekódovanie pri tak zložitom procesore neni úplne triviálne a potrebuješ poznať jeho vrtochy, inak nad tým stráviš mesiace.
Dúfam že to neni nejaká blbá RJ za pár stoviek €,
Nějak matně si vzpomínám, že i překladač zdrojového kódu může generovat nějaké zbytečné instrukce. V MCS-51 byl na to nějaký "odžmolkovací" program Lint, který ty zbytečnosti čistil. Tenkrát přišel každý ušetřený bajt programu vhod, aspoň občas.
Nemám disassembler, len plošák, multimeter, výpis externej ROM a datašit k procesoru. Na adrese 0 začína program po zapnutí. To 0x0001 v subrutine nie je adresa, ale priame dáta. Procak nemá DMA. RAM je externá. Periférie môžu prepísať len data v RAM, nie procesorové registre. Samozrejme čarovať sa dá so všeličím, ale ten HW okolo nie je zas až tak inteligentný. Zatiaľ som prešiel asi 500 bajtov z 50kB. Na začiatku programu som našiel inicializáciu riadiacích registrov pre organizáciu pamätí a čip selektov a register ochrany (watchdog atď...). Potom prišli tie nezmyselné inštrukcie. Skúsil som vliezť cez chybové prerušenie a v nejakom bordeli som našiel volanie subrutiny na resetovnie watchdogu. Skúsil som ďalšie HW prerušenie a tam sa pomedzi bordel nastavujú nejaké bity výstupných portov. Najzložitejšie je rozlúštiť nejasnosti okolo príliš stučného popisu inštrukcií, napríklad čím sa doplní extended adresa na 20 bitov, alebo či sa offset ráta so znamienkom alebo bez. Tiež neviem, čo sa stane, keď nejaká nezmyselná inštrukcia chce zapisovať do ROM, či sa vyvolá nejaké chybove prerušenie alebo nič. Ešte sa trochu povrtam v tom kóde a potom asi skúsim pripojiť na zbernicu arduino a porovnať, či program beží tak ako to vidím v kóde.
Práve že ja nechcem nič odpájať. Nemám na to čas ani chuť, lebo ani neviem, koľko krát to budem musieť takto prepájať a potom naspäť do pôvodného stavu. Ale už asi viem, čo urobím. Privediem impulzy na oba vývody kryštálu súčasne.
Mám však iný problém. Narazil som pri lúštení kódu na nejasnosť. Prarameter inštrukcie BPL Branch if Plus je signed alebo unsigned?
(strana 131 v pdf, alebo strana 6-63 v texte)
https://www.nxp.com/docs/en/reference-manual/CPU16RM.pdf
Časy uváděny v GMT + 1 hodina Jdi na stránku Předchozí1, 2
Strana 2 z 2
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.