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
Have something to add? Share your thoughts — no account required.
Ask the community — no account required