Inline: Porovnání verzí

Z Delphi & Pascal (česká wiki)
Skočit na navigaci Skočit na vyhledávání
(Vytvorená stránka „Příkaz a direktiva inline dovoluje vkládat instrukce strojového kódu přímo do kódu jednotky nebo programu. ;Syntaxe inline ( data / data / ... data ) ;Popis...“)
 
 
Řádek 16: Řádek 16:
 
*Je-li konstanta v rozsahu 0..255, prvek inline generuje 1 bajt, jinak generuje slovo (word).
 
*Je-li konstanta v rozsahu 0..255, prvek inline generuje 1 bajt, jinak generuje slovo (word).
 
*Operátory < a > lze použít pro řízení velikosti kódu (překrývá se automatické generování).
 
*Operátory < a > lze použít pro řízení velikosti kódu (překrývá se automatické generování).
< znamená, vždy generuj bajt
+
** < znamená, vždy generuj bajt
 
+
** > znamená, vždy generuj slovo (word)
> znamená, vždy generuj slovo (word)
 
  
  

Aktuální verze z 29. 9. 2012, 22:26

Příkaz a direktiva inline dovoluje vkládat instrukce strojového kódu přímo do kódu jednotky nebo programu.


Syntaxe
inline ( data / data / ... data )


Popis
Když je použit jako příkaz, data za slovem inline jsou přímo vloženy do kódu.


Když je použita jako direktiva v záhlaví procedury nebo funkce, data za slovem inline jsou přímo vložena do kódu při každém volání procedury nebo funkce.

  • Data sestávají z identifikátoru konstanty nebo proměnné, s volitelným prefixovým operátorem explicitní specifikace délky < nebo >.
  • Identifikátor proměnné může být následován znakem plus (+) nebo mínus (-) a konstantou, která určuje ofset z adresy proměnné.
  • Je-li konstanta v rozsahu 0..255, prvek inline generuje 1 bajt, jinak generuje slovo (word).
  • Operátory < a > lze použít pro řízení velikosti kódu (překrývá se automatické generování).
    • < znamená, vždy generuj bajt
    • > znamená, vždy generuj slovo (word)


Příklad

(* příkaz "inline" *)
procedure FillWord(var Dest; Count: Word; Data: Word);
begin
  inline(
    $C4/$7E/<Dest/    (* LES   DI,Dest[BP] *)
    $8B/$4E/<Count/   (* MOV   CX,Count[BP]*)
    $8B/$46/<Data/    (* MOV   AX,Data[BP] *)
    $FC/              (* CLD               *)
    $F3/$AB);         (* REP   STOSW       *)
end;
Viz také

Integrovaný assembler