Symboly ve výrazech

From Delphi & Pascal (česká wiki)
Jump to navigation Jump to search

Integrovaný assembler poskytuje přístup k téměř všem Pascalským symbolům ve výrazu assembleru, včetně návěští, konstant, typů, proměnných, procedur a funkcí. Integrovaný assembler také obsahuje několik symbolů předdefinovaných typů.

Symbol Hodnota Třída Typ
návěští Adresa návěští Paměťový SHORT (krátký)
Konstanta Hodnota konstanty Přímý 0
Typ 0 Paměťový Velikost typu
Položka Ofset položky Paměťový Velikost typu
Proměnné Adresa proměnné Paměťový Velikost typu
Procedura Adresa procedury Paměťový NEAR nebo FAR
Funkce Adresa funkce Paměťový NEAR nebo FAR
Jednotka 0 Přímý 0
@Code Adresa programového segmentu Paměťový 0FFF0H
@Data Adresa datového segmentu Paměťový 0FFF0H
@Result Ofset návratové Paměťový Velikost typu


Symboly, které NEMOHOU být použity ve výrazech
  • Standardní procedury a funkce (např. Writeln, Chr).
  • Speciální pole Port a PortW.
  • Řetězce, reálná čísla a množinové konstanty.
  • Procedury a funkce deklarované s direktivou inline.
  • návěští, která nejsou deklarována v aktuálním bloku.
  • Symbol @Result vně funkci.
Lokální proměnné
Lokální proměnné (proměnné deklarované ve funkcích a procedurách) jsou vždy alokovány na zásobníku a zpřístupněny relativně k SS:BP.
Hodnota symbolu lokální proměnné představuje ofset od SS:BP.
Integrovaný assembler k odkazu na lokální proměnnou automaticky přidává BP.
Parametry volané odkazem
Assembler vždy zpracuje parametr volaný odkazem jako 32 bitový ukazatel, a velikost parametru je vždy 4 (velikost 32 bitového ukazatele).
Pro přístup k obsahu parametru nejdříve musíte získat hodnotu tohoto ukazatele a pak se jím odkazovat.
Oblast viditelnosti
Oblast viditelnosti poskytují symboly typu, položky a proměnné typu záznamu nebo typu objektu.
Navíc identifikátor jednotky otevírá oblast viditelnosti pro jednotku, podobně jako plně kvalifikovaný identifikátor v Pascalu.
Operátor
Některé symboly, jako např. typy záznamu a proměnné typu záznam, vyžadují při přístupu použití kvalifikátoru s operátorem selektor člena struktury (.).
Identifikátor typu
Každá z následujících instrukcí generuje stejný strojový kód, který do registru AX přesune obsah ES:[ DI+4]:
asm
  MOV  AX,(Rect PTR ES:[DI]).B.X
  MOV  AX,Rect(ES:[DI]).B.X
  MOV  AX,ES:Rect[DI].B.X
  MOV  AX,Rect[ES:DI].B.X
  MOV  AX,ES:[DI].Rect.B.X
end;