Typy výrazů integrovaného assembleru

Z Delphi & Pascal (česká wiki)
Verze z 12. 10. 2012, 11:55, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (Vytvorená stránka „Každý výraz integrovaného assembleru patří k určitému typu. Tento typ znamená velikost, protože assembler se dívá na typ výrazu jako na velikost jeho pamě...“)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

Každý výraz integrovaného assembleru patří k určitému typu.

Tento typ znamená velikost, protože assembler se dívá na typ výrazu jako na velikost jeho paměťového místa v bajtech.

Assembler vykonává kontrolu typu, kdekoli je to možné; ohlásí chybu, jestliže kontrola typu selhala.

Lze použít přetypování typu paměťového odkazu. Například, všechny následující řádky se odkazují na první bajt proměnné OutBufPtr:

 asm
   MOV     DL,BYTE PTR OutBufPtr
   MOV     DL,Byte(OutBufPtr)
   MOV     DL,OutBufPtr.Byte
 end;

V některých případech je paměťový odkaz netypový; například, přímá hodnota uzavřená do hranatých závorek:

 asm
   MOV     AL,[100H]
   MOV     BX,[100H]
 end;

Assembler připustí oba příkazy, protože výraz [100H] má přidružený typ (tzn. "obsah adresy 100H v datovém segmentu"), který je určen prvním operandem (bajt pro AL, slovo pro BX).

V případě, kde typ nemůže být určen z prvního operandu, assembler požaduje explicitní přetypování, jako např.:

 asm
   INC     BYTE PTR [100H]
   IMUL    WORD PTR [100H]
 end;