Widziałem coś takiego - program był większy niż 64kb, a przecież licznik PC jest 16bitowy - jak to jest zrobione? Obejrzałem zdebugowany program, ale nic nie wymyśliłem.
Pozdr. Maciek
Widziałem coś takiego - program był większy niż 64kb, a przecież licznik PC jest 16bitowy - jak to jest zrobione? Obejrzałem zdebugowany program, ale nic nie wymyśliłem.
Pozdr. Maciek
Użytkownik "Maciek" snipped-for-privacy@chabrowa.net napisał w wiadomości news: snipped-for-privacy@risp.pl...
bankowanie
czesc kodu wspolna a czesc w przestrzeni 64 KB podstawiana np 8 KB wspolne i dwa banki po 56 KB
Użytkownik "Maciek" snipped-for-privacy@chabrowa.net napisał w wiadomości news: snipped-for-privacy@risp.pl
Przez bankowanie pamięci. Obrazowy przykład: W obszarze (1): 0000h...7FFFh - siedzi 32KiB pamięci programu - dostępne zawsze W obszarze (2): 8000h...FFFFh - siedzi N nałożonych na siebie banków po
32KiB pamięci. To do którego banku nastąpi faktyczne odwołanie zależy od zawartości dodatkowego rejestru bankującego wybierającego jeden z banków. Czyli generującego właściwy sygnał CS\ jeżeli banki siedzą w kilku kościach, lub dostarczającego brakujące bity adresowe (>=A16) - jeżeli mamy jeden duży EPROM . Procesor widzi do rejestr bankujący w przestrzeni I/O. W szczególnym przypadku tą role może pełnić choćby np. kilka linii portu P1. Przed wywołaniem procedury z obszaru (2) należy do rejestru bankującego wpisać numer banku zawierającego tą procedurę.W disasemblowanym programie miałeś szanse zobaczyć odwołania do rejestru bankującego. Aczkolwiek w dobrze napisanym kodzie, przełączenia banków mogą być nieliczne, a do tego wykonywane w sposób zakamuflowany. Np. w minimodułach WG (
Wprawdzie nigdy z tego nie korzystałem, ale AFAIR kompilator+linker Keil-a oferują możliwość bankowania.
"...Widziałem coś takiego - program był większy niż 64kb, a przecież licznik PC jest 16bitowy..."
Zazwyczaj tak, ale nie zawsze. Niektóre
51-ki (np.DS80C400) mają możliwość przestawienia w tryb adresowania ciągłego z 24-bitowym PC.Cierpliwości w walce z bitami życzy dziadek Ben
Dziękuje za wskazówki - przejrzę ten kod dokładniej.
Pozdr. Maciek
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.