Hlavní navigace

Vlákno názorů k článku LuaJIT – Just in Time překladač pro programovací jazyk Lua (2) od klusacek - diky za clanek. Chtel bych se zeptat jak...

  • Článek je starý, nové názory již nelze přidávat.
  • 21. 10. 2014 2:42

    klusacek (neregistrovaný)

    diky za clanek. Chtel bych se zeptat jak je kodovan for.

    Evidentne potrebuje znat 4 udaje. Slot pocitadla, slot ve ktere je ulozen konec, slot
    ve kterem je krok a adresu kam ma skocit. Kdyz index slotu zabere 8 bitu tak je to trochu moc na 32 bitovou instrukci. Takze to vypada a vypis assembleru tu hypotezu podporuje, ze se udava jen slot pocitadla a 2 sloty za nim jsou vyhrazene pro krok a konec pricemz adresa skoku je 16bitova (je relativni nebo absolutni? (v kteremzto pripade by byl hard limit na pouzitelnou delku funkce 64K instrukci)).

    Je to nejak tak?

  • 21. 10. 2014 8:44

    Pavel Tišnovský

    Přesně tak, je to podobné například instrukci CALL - udává se jen slot X s prvním vyžadovaným parametrem + další parametry v případě FORI-FORL jsou ve slotu X+1, X+2...

    Konkrétně:

    /* Stack slots used by FORI/FORL, relative to operand A. */
    enum {
     FORL_IDX, FORL_STOP, FORL_STEP, FORL_EXT
    };

    D potom obsahuje index instrukce za tělem smyčky přesně s tím omezením, o kterém píšeš :/