home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 February / Chip_2000-02_cd.bin / zkuste / Delphi / navody / tt / objvm.exe / UNITS / uExecution.pas < prev    next >
Pascal/Delphi Source File  |  1999-05-29  |  2KB  |  63 lines

  1. unit uExecution;
  2.  
  3. interface
  4. uses
  5.      Code,LangValue,Forms,RootValue,ConstValues;
  6. { IExecution provides interface for task.             }
  7. { It is similar to task or thread in operation systems}
  8. type IExecution=class
  9.      protected
  10.      public
  11.          {Root - root value}
  12.        Root:TRootValue;
  13.          {Constants - execution depended}
  14.        Consts:TConstValues;
  15.          {Code - currently executing code}
  16.        Code:TCode;
  17.          {IP - Instruction pointer - address of currently}
  18.          {executing instruction}
  19.        IP:integer;
  20.          {IsEnd - determines when execution must be stopped}
  21.        IsEnd:boolean;
  22.          {Source - source of Code (Reserved for debug purporses)}
  23.        Source:TObject;
  24.          {Line, Pos - line and position of source code (Reserved)}
  25.        Line,Pos:Integer;
  26.          {Data is a stack for storing operation arguments (Reserved for debug purporses)}
  27.        Data,
  28.          {Return is a stack for storing some execution-flow information}
  29.          {such as return addresses (not implemented) and FOR loop variables}
  30.        Return:IValStack;
  31.          {BeginExec - see TExecution reference}
  32.        procedure BeginExec;virtual;
  33.          {Step - see TExecution reference}
  34.        procedure Step;virtual;abstract;
  35.          {EndExec - see TExecution reference}
  36.        procedure EndExec;virtual;abstract;
  37.          {Run - run execution until IsEnd value is setted to True}
  38.        procedure Run;virtual;
  39.          {Halt - stop execution}
  40.        procedure Halt;virtual;
  41.      end;
  42. implementation
  43. procedure IExecution.BeginExec;
  44.           begin
  45.             IP:=0;
  46.             IsEnd:=false;
  47.           end;
  48. procedure IExecution.Run;
  49.           begin
  50.             While not IsEnd do
  51.             begin
  52.               Step;
  53.               Application.ProcessMessages;
  54.             end;
  55.           end;
  56.          {Halt - stop execution}
  57. procedure IExecution.Halt;
  58.           begin
  59.             IsEnd:=true;
  60.           end;
  61.  
  62. end.
  63.