Hlavní navigace

Názory k článku Programovací jazyk Forth a zásobníkové procesory (14)

  • Článek je starý, nové názory již nelze přidávat.
  • 14. 4. 2005 9:15

    Petr Dolezal (neregistrovaný)
    Zajimalo by me, jak se presneji rozlisuje kategorie zasobniku S (small) a L (large), konkretne v clanku je receno, ze x86 patri do SS2. Zasobnik na x86 patri opravdu do kategorie S? A pokud ano, jaky je tedy rozdil oproti zasobnikum na RISC procesorech, ktere jsou zarazeny do kategorie SL2 (tedy s velkym zasobnikem)?
  • 15. 4. 2005 10:32

    Pavel Tišnovský
    Zlatý podporovatel

    Dobrý den,
    jedno z vysvětlení je uvedeno například na výborné stránce http://www.ece.cmu.edu/~koopman/stack_computers/appa.html, ze které budu citovat:

    The 80x86 processor family, which includes the 8088, 8086, 80186, 80286, and 80386 is a family of microprocessors with a general purpose register architecture. Simple PUSH and POP instructions are supported to manipulate the stack. Many high level language compilers produce code that uses the BP (base pointer) register as a frame pointer to a combined return address and parameter passing stack. When used in this mode, the 80x86 family can be considered to be doing stack processing. In the context of stack computers, the 80x86 is simply included in this listing as a representative example of a conventional machine that can be used as an SS2 architecture.

    Je jasné, že architektura x86 podporuje z jednoho pohledu velké zásobníky, protože zásobník může teoreticky zahrnout celý segment. V protected módu není dokonce velikost zásobníku omezena vůbec, samozřejmě při korektním nastavení deskriptorů (ty nedělá ani Linux ani Windows, potom se nemůžeme divit útokům typu stack-overflow). Na druhou stranu, pokud je tento procesor použit pro zpracování (interpretaci) zásobníkového kódu, lze použít pouze krátké offsety k bázové adrese. Situace se samozřejmě ještě více komplikuje tím, že pro oba zásobníky je k dispozici pouze jeden SS a SP.