Jak sprawdzić długość instrukcji w kodzie MCU HC11 na podstawie adresu?
Długość instrukcji
From: "Lejek" <d_lelek_at_nospam_poczta.onet.pl>
Subject: Długość instrukcji
Date: Tue, 9 Mar 2004 14:00:42 +0100
Witam serdecznie,
zy istniej jakiś sposób/algorytm na sprawdzenie długości kolejnej instrukcji
w kodzie MCU? Pozszukuje rozwiązania tego problemu w HC11 :). Zczytuje sobie
PC i znam adres następnej instrukcji, czy mogę jakoś sprawdzić ile ona ma
bajtów?
Z góry dzięki za pomoc,
Lejek
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!lublin.pl!news.onet.pl!newsgate.onet.pl!newsgate.p
From: zielpro_at_nospam_poczta.onet.pl (ziel)
Subject: RE: =?ISO-8859-2?Q?D=B3ugo=B6=E6?= instrukcji
Date: 10 Mar 2004 21:57:23 +0100
On Behalf Of Lejek
zy istniej jakiś sposób/algorytm na sprawdzenie długości kolejnej
instrukcji
w kodzie MCU? Pozszukuje rozwiązania tego problemu w HC11 :).
Zczytuje sobie
PC i znam adres następnej instrukcji, czy mogę jakoś sprawdzić ile ona ma
bajtów?
Określić długość rozkazu na podstawie jego adresu?
Nie.
pzdr
Artur
--
Archiwum grupy: http://niusy.onet.pl/pl.misc.elektronika
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Jan Dubiec <jdx_at_nospam_slackware.pl>
Subject: Re: =?ISO-8859-2?Q?D=B3ugo=B6=E6_instrukcji?=
Date: Wed, 10 Mar 2004 23:05:03 +0100
ziel wrote:
On Behalf Of Lejek
zy istniej jakiś sposób/algorytm na sprawdzenie długości kolejnej
instrukcji
w kodzie MCU? Pozszukuje rozwiązania tego problemu w HC11 :).
Zczytuje sobie
PC i znam adres następnej instrukcji, czy mogę jakoś sprawdzić ile ona ma
bajtów?
Określić długość rozkazu na podstawie jego adresu?
Nie.
To w jaki sposób np. symulatory i disassemblery na podstawie ciągu bajtów
odtwarzają mnemoniki oraz ich argumenty (czyli de facto długość rozkazu)? :-)
Regards,
/J.D.
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!newsfeed.gazeta.pl!news.onet.pl!newsgate.onet.pl!newsgate.p
From: zielpro_at_nospam_poczta.onet.pl (ziel)
Subject: RE: =?ISO-8859-2?Q?D=B3ugo=B6=E6?= instrukcji
Date: 11 Mar 2004 07:53:09 +0100
On Behalf Of Jan Dubiec
Zczytuje sobie
PC i znam adres następnej instrukcji, czy mogę jakoś sprawdzić
ile ona ma
bajtów?
Określić długość rozkazu na podstawie jego adresu?
Nie.
To w jaki sposób np. symulatory i disassemblery na podstawie ciągu bajtów
odtwarzają mnemoniki oraz ich argumenty (czyli de facto długość
rozkazu)? :-)
To co innego. Przeczytaj dokładnie - (znam adres następnej instrukcji,
czy mogę jakoś sprawdzić ile ona ma bajtów?)
A teraz napisz ile bajtów ma rozkaz widząc, że znajduje się pod adresem
114H.
pzdr
Artur
--
Archiwum grupy: http://niusy.onet.pl/pl.misc.elektronika
========
Path: news-archive.icm.edu.pl!news.rmf.pl!poznan.rmf.pl!news.man.poznan.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!hs001.slackware.pl!new
From: Jan Dubiec <jdx_at_nospam_slackware.pl>
Subject: Re: =?iso-8859-2?q?D=B3ugo=B6=E6?= instrukcji
Date: 11 Mar 2004 12:58:51 +0100
On 11 Mar 2004 07:53:09 +0100, zielpro_at_nospam_poczta.onet.pl (ziel) wrote:
On Behalf Of Jan Dubiec
[.....]
To w jaki sposób np. symulatory i disassemblery na podstawie ciągu bajtów
odtwarzają mnemoniki oraz ich argumenty (czyli de facto długość
rozkazu)? :-)
To co innego. Przeczytaj dokładnie - (znam adres następnej instrukcji,
czy mogę jakoś sprawdzić ile ona ma bajtów?)
A teraz napisz ile bajtów ma rozkaz widząc, że znajduje się pod adresem
114H.
Wiedząc że kod rozkazu zajmuje nie więcej niż 8 bitów, odczytuję z
pamięci programu bajt znajdujący się pod adresem 0x114 a następnie
pracowicie porównuję bity na odpowiednich pozycjach odczytanego bajtu
ze wzorcami sporządzonymi na podstawie listy instrukcji danego CPU.
Powinno dać się to przyspieszyć przy pomocy kilku lookup tabelek.
Natomiast chcąc ustalić długość następnej instrukcji którą ma wykonać
CPU i mając funkcję opisaną wyżej, silnie dałoby się zoptymalizować
rozwiązanie ponieważ ta długość będzie zawsze byłaby stała (pewnie
jakiś MOV lub CALL). :-)
Regards,
/J.D.
--
Jan Dubiec, jdx_at_nospam_slackware.pl, mobile: +48 602 101787
Głęboka wiara wymaga płytkiego rozumu i nikłej wiedzy.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.onet.pl!newsgate.onet.pl!newsgate.p
From: zielpro_at_nospam_poczta.onet.pl (ziel)
Subject: RE: =?ISO-8859-2?Q?D=B3ugo=B6=E6?= instrukcji
Date: 12 Mar 2004 10:34:34 +0100
On Behalf Of Jan Dubiec
Wiedząc że kod rozkazu zajmuje nie więcej niż 8 bitów, odczytuję z
pamięci programu bajt znajdujący się pod adresem
Ale odczytujesz. A ja zrozumiałem, żeby określić jego długość bez
odczytywania pierwszego bajtu.
pzdr
Artur
--
Archiwum grupy: http://niusy.onet.pl/pl.misc.elektronika
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!lublin.pl!uw.edu.pl!news.pw.edu.pl!not-for-mai
From: BLE_Maciek <i80c586_at_nospam_cyberspace_NO_SPAM_.org>
Subject: Re: =?ISO-8859-2?Q?D=B3ugo=B6=E6_instrukcji?=
Date: Thu, 11 Mar 2004 10:17:39 +0100
Wed, 10 Mar 2004 23:05:03 +0100 jednostka biologiczna o nazwie Jan
Dubiec <jdx_at_nospam_slackware.pl> wyslala do portu 119
jednego z serwerow news nastepujace dane:
To w jaki sposób np. symulatory i disassemblery na podstawie ciągu bajtów
odtwarzają mnemoniki oraz ich argumenty (czyli de facto długość rozkazu)? :-)
Bo odczytuja te rozkazy (bajty) i robia disassemblacje, ale na
podstawie samego adresu, nic nie odczytujac nie da sie przeciez
powiedziec jaki rozkaz tam jest.
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: JS <jar0sz_at_nospam_polbox.com.pl_without_pl>
Subject: Re: =?iso-8859-2?Q?D=B3ugo=B6=E6?= instrukcji
Date: Thu, 11 Mar 2004 17:10:46 +0000 (UTC)
W artykule <c2kf5o$l2l$1_at_nospam_news.onet.pl>
autorem którego mieni się Lejek, napisano:
zy istniej jakiś sposób/algorytm na sprawdzenie długości kolejnej instrukcji
w kodzie MCU? Pozszukuje rozwiązania tego problemu w HC11 :). Zczytuje sobie
PC i znam adres następnej instrukcji, czy mogę jakoś sprawdzić ile ona ma
bajtów?
Przeczytaj, co pod tym adresem siedzi w pamięci - dwa kolejne bajty.
To wystarczy do określenia długości instrukcji (dla części rozkazów
wystarczy już pierwszy bajt).
Sam używałem debuggera do HC11, działającego wg podobnej zasady - na
podstawie PC określał możliwe adresy następnej instrukcji (dla skoków
warunkowych mogą być dwa) i ustawiał tam pułapki (invalid opcode).
Ale nie korzystał z zawartości pamięci programu i disasemblacji,
tylko z informacji wygenerowanych przez asembler. Był podgląd kodu
źródłowego, single-step, step-over/into, podgląd pamięci itp.
Disasemblacja nigdy nie była na tyle potrzebna, żeby warto było ją pisać.
Pozdrawiam
Jarosław Szynal
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!feed.news.interia.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai
From: "Lejek" <d_lelek_at_nospam_poczta.onet.pl>
Subject: Re: Długość instrukcji
Date: Thu, 11 Mar 2004 23:55:57 +0100
Sereczne dzięki wszystkim!!!!
Pozdrawiam,
Lejek
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.atman.pl!wsisiz.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsgate.onet.pl!newsgate.p
From: zielpro_at_nospam_poczta.onet.pl (ziel)
Subject: RE: =?ISO-8859-2?Q?D=B3ugo=B6=E6?= instrukcji
Date: 12 Mar 2004 10:35:46 +0100
On Behalf Of Lejek
Sereczne dzięki wszystkim!!!!
Co, już koniec?
Ja nie zdążyłem się jeszcze na dobre rozkręcić,
a tu wątek się urywa. :-(
pzdr
Artur
--
Archiwum grupy: http://niusy.onet.pl/pl.misc.elektronika
========
Path: news-archive.icm.edu.pl!news.rmf.pl!wroclaw.rmf.pl!80.55.82.106!poznan.rmf.pl!news.man.poznan.pl!news.internetia.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai
From: "Lukasz Kozik" <lkozik_at_nospam_op.pl>
Subject: Re: Długość instrukcji
Date: Fri, 12 Mar 2004 15:32:08 +0100
Użytkownik "ziel" <zielpro_at_nospam_poczta.onet.pl> napisał w wiadomości
news:GCEELCNNHEGDKMODCEPBKEHEGLAA.zielpro_at_nospam_poczta.onet.pl...
Co, już koniec?
Ja nie zdążyłem się jeszcze na dobre rozkręcić,
a tu wątek się urywa. :-(
Jestem otwarty na kolejne rozwiązania. Ja zrobiłem to w tn sposób:
1. Określam stronę na podstawie 1 bajtu
2. Określam rodzaj adresacji.
3. Na podsstawie tego określaam ilość bajtów.
4. No i oczywiście w odpowiednich momentach sprawdzam wyjątki + skoki +
branche +powroty....
5. Rozrysowałem to sobie w Visio ==> zajęło połowę formatu A0...
Pozdrawiam,
Lejek
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai