Absolute: Porovnání verzí

Z Delphi & Pascal (česká wiki)
Skočit na navigaci Skočit na vyhledávání
(Vytvorená stránka „Se standardní direktivou absolute se proměnná deklaruje na absolutní adrese paměti. ;Syntaxe var identifikátor: typ absolute seg:ofs; NEBO var identifikátor: ...“)
 
m (1 revízia: Assembler pismeno D)
 
(Nejsou zobrazeny 4 mezilehlé verze od stejného uživatele.)
Řádek 28: Řádek 28:
 
     StrLen: Byte absolute Str;
 
     StrLen: Byte absolute Str;
  
[[Category::assembler]]
+
[[Category:assembler]]

Aktuální verze z 9. 11. 2012, 21:18

Se standardní direktivou absolute se proměnná deklaruje na absolutní adrese paměti.

Syntaxe
var identifikátor: typ absolute seg:ofs;

NEBO

var identifikátor: typ absolute proměnná;
Popis

První tvar přímo určuje adresu (segment a ofset) proměnné. Obě konstanty musí být v rozsahu $0000 až $FFFF (é až 65,535).

Druhý tvar deklaruje novou proměnnou, která leží na stejné adrese jako existující proměnná.

S klauzulí absolute může seznam deklarovaných proměnných obsahovat pouze jeden identifikátor.

Výstraha
  • První tvar klausule absolute používejte velmi opatrně. Když program ve Windows nebo v DOSu pracuje v chráněném módu, nemusí mít přístupová práva do oblastí paměti vně vašeho programu. Při pokusu o přístup do těchto oblastí paměti se program pravděpodobně zhroutí.

Tento druhý tvar klausule absolute je bezpečný v chráněném módu DOSu a Windows. Paměť, ke které potřebujete přístup, je v oblasti vašeho programu.

Příklad

type
   VectorTable = array[0..255] of pointer;
var
   IntVectors: VectorTable absolute 0:0;
   CrtMode: Byte absolute $0040:$0049;
   Str: string;
   StrLen: Byte absolute Str;