Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Stos Jako licznik programu. Czy to możliwe ?

sizu 04 Gru 2010 20:53 860 7
  • #1 04 Gru 2010 20:53
    sizu
    Poziom 8  

    załóżmy, że do zadządzania wywołaniami i powrotami podprogramów standardowych przez procesor ma być użyty stos.Czy można wyeliminować licznik programu przez zastosowanie wierzchołka stosu jako licznika programu.

    Czy może mi ktoś odpowiedzieć na to pytanie albo chociaż naprowadzić mnie ?

    0 7
  • #2 04 Gru 2010 21:20
    maqister
    Poziom 10  

    licznik programu? tzn chodzi Ci o IP- instruction pointer (wskaznik rozkazow,licznik rozkazów, licznik instrukcji)

    0
  • #3 04 Gru 2010 21:26
    sizu
    Poziom 8  

    Tak, wydaje mi się, że teoretycznie jest to możliwe ale nie umiem tego udowodnić.

    0
  • #4 04 Gru 2010 22:26
    maqister
    Poziom 10  

    no wg mnie nie, jezeli mowimy o standardowych architekturach procesorow, to nie jest to mozliwe, poniewaz IP wskazuje kolejne rozkazy do pobrania, a stos jest potrzebny np. przy wywolaniu skokow ze sladem(wtedy odklada adresy na stos i po wykonaniu sie segmentu powraca, zdejmujac adres powrotu ze stosu).

    0
  • #5 04 Gru 2010 22:35
    sizu
    Poziom 8  

    I nawet Teoretycznie nie da się tego wykonać ? Nie ma tu znaczenia, że chodzi o programy standardowe?

    0
  • #6 04 Gru 2010 22:38
    maqister
    Poziom 10  

    no nie wiem, wykonac teoretycznie?

    mozesz sprobowac zaprojektowac swoja architekture, zobacz sobie jaka architekture ma procesor 8086(sztandarowy przyklad), wyciagnij wnioski dlaczego IP jest taki wazny i jezeli masz jakas koncepcje, to zrob to, ogolem dziwny pomysl.

    nie wiem skad Ci takie cos przyszlo do glowy

    0
  • #7 04 Gru 2010 22:41
    sizu
    Poziom 8  

    To nie mój pomysł a profesora Od Architektury sys. Komputerowych, dal do rozwiązania ot takie zagadnienie i muszę to przygotować na jutro.
    Mógłbyś mi napisać jeszcze kilka powodów dla których nie można wyeliminować ip ?

    0
  • #8 04 Gru 2010 22:50
    maqister
    Poziom 10  

    ołłłłłłłłłłłłłłł prof. od arch. systemów komuterowych !!! ??? xD

    z czymś takim nie chciałem zadzierać, mam po prostu mega mega podstawowe pojęcie o architekturze systemów komputerowych.

    http://pl.wikipedia.org/wiki/Intel_8086

    wiesz, może jest jakiś sposób, żeby to zrealizować na stosie, jednak nie będzie to rozwiązanie standardowe, ja Ci piszę o rozwiązaniach standardowych.

    Licznik rozkazów (Instruction Pointer – IP) [edytuj]
    Jest to 16-bitowy rejestr, którego zawartość służy do obliczania adresu fizycznego następnego słowa rozkazu do pobrania z pamięci. Stanowi on rejestr indeksowy dla rejestru CS wyznaczającego segment z kodem programu. Jego zawartość jest automatycznie inkrementowana po pobraniu każdego bajtu rozkazu (w przypadku pobrania słowa jego wartość wzrasta o 2). Programista ma możliwość zmiany zawartości licznika rozkazów poprzez zastosowanie rozkazu skoku.

    zamiescilem powyzej def z wiki.

    jak widzisz jest potrzebny do wyznaczania adresu fizycznego(poprzed adresowanie segmentowe CS+IP), do pobierania kolejnych rozkazow, czyli oczywiste oczywistosci.

    Jezeli chodzi o Ciebie to tylko mowie, ze takie rozwiazanie moze sie uda zrealizowac ale trzeba by bylo wymyslec architekture procesora. Na to na pewno nie starczy jeden dzien. I watpie zeby to bylo rozwiazanie dobre lub optymalne, moze mialo by jakas zalete nie wiem. Ale raczej bylo by to zadanie zeby na chama uzyc stosu zamiast licznika rozkazow i cala architektura musiala by byc dopasowana do tego.

    Bynajmniej jak profesor odpowie na to pytnia, wrzuc na forum czego sie dowiedziales. W zasadzie ciekawe zagadnienie.

    0