Fe23 - x86 könyvtár - vezérlő transzferek és eljáráshívások

Az "Operand" oszlop azt mutatja, hogy operandus a gépi utasításhoz. A 16 bites vagy 32 bites operandus méretét az operandus méret attribútuma határozza meg.







Opció (0). Rövid SHORT átmenet esetén az eltolás csak 1 byte-ot vesz igénybe. Ezért az átmenet csak (-128) és (+127) között lehet.

Opció (1). Közel NEAR átmenet esetén az eltolás 2 bájt vagy 4 bájtot vesz igénybe. Ha az eltolás két bájt, az átmenet lehetséges (-32768) (+32767).

Az első három esetben az átmenet ugyanabban a szegmensben történik, amelyben a JMP parancs végrehajtásra kerül. Ezzel az átmenettel a CS regiszter tartalma nem változik.

A következő két változatban messze FAR átmenet (interszegmentális) történik.

Az eljáráshívás parancs

A másik négy opció teljesen azonos a JMP parancsra és a CALL parancsra. Teljesen ugrás típusok, operandus típusok, gép parancs formátum. (Világos, hogy a JMP és a CALL parancs működési kódjai eltérőek).

Minden magyarázat a táblázat után a JMP utasításhoz az opciókhoz (1). (2). (3). (4) teljesen alkalmas a CALL parancsra.







A távoli FAR eljáráshívásokhoz a CS szegmens értéke a veremben is tárolódik, a CS először a verembe, majd az EIP (vagy a "16 bit" üzemmódba IP).

Return parancs az eljárásból

A RET parancs négy különböző működési kódot tartalmaz, ezek a gépi utasítások kicsit másképpen működnek.

A szoros közeljövő visszatérés a kötegből visszanyeri az EIP értékét, míg a CS érték változatlan marad. Ha a FAR messze van a kötegtől, az EIP értékét kivonjuk, majd a CS értékét.

A visszatérési típus az eljárásból - egy közel NEAR vagy egy távoli FAR - meg kell egyeznie az eljáráshívás típusával a CALL paranccsal. Általában az összeszerelő lehetővé teszi az "N" vagy "F" betű hozzáadását a RET parancs nevéhez a visszatérési típus meghatározásához.

Stack frame parancsok

A veremkeret egyfajta szoftvermechanizmus, amely lehetővé teszi, hogy a veremben lévő helyi változók dinamikus elhelyezéséhez adjon ki egy köteget a veremben. Az ENTER és a LEAVE parancsok hardveres támogatást nyújtanak ehhez a mechanizmushoz és megkönnyítik a programozást.

Az ENTER parancs az eljárás elején helyezkedik el. Felkészíti a köteg keretét a munkára. A LEAVE parancs az eljárás elhagyása előtt kerül elhelyezésre, és minden RET parancs elé kerül, ha több kimenet van. Visszaállítja a régi helyzetet a veremen.

Az ENTER parancs két paraméterrel rendelkezik. Az első paraméter határozza meg a bájtok számát, amelyek az eljárás helyi változóira vonatkoznak. A második paraméter általában nulla.

A könyvtár fő oldalai