![]() |
Contur 2
Educational OS kernel simulator
|
Bytecode interpreter execution engine. More...
#include <interpreter_engine.h>
Public Member Functions | |
| InterpreterEngine (ICPU &cpu, IMemory &memory) | |
| Constructs an InterpreterEngine. | |
| ~InterpreterEngine () override | |
| Destroys interpreter engine. | |
| InterpreterEngine (const InterpreterEngine &)=delete | |
| InterpreterEngine & | operator= (const InterpreterEngine &)=delete |
| InterpreterEngine (InterpreterEngine &&) noexcept | |
| Move-constructs interpreter engine state. | |
| InterpreterEngine & | operator= (InterpreterEngine &&) noexcept |
| Move-assigns interpreter engine state. | |
| ExecutionResult | execute (ProcessImage &process, std::size_t tickBudget) override |
Executes the given process for up to tickBudget ticks. | |
| void | halt (ProcessId pid) override |
| Forcibly halts execution of the given process. | |
| std::string_view | name () const noexcept override |
| Returns the human-readable name of this engine. | |
| Public Member Functions inherited from contur::IExecutionEngine | |
| virtual | ~IExecutionEngine ()=default |
Private Attributes | |
| std::unique_ptr< Impl > | impl_ |
Additional Inherited Members | |
| Protected Member Functions inherited from contur::IExecutionEngine | |
| IExecutionEngine ()=default | |
| IExecutionEngine (const IExecutionEngine &)=default | |
| IExecutionEngine & | operator= (const IExecutionEngine &)=default |
| IExecutionEngine (IExecutionEngine &&)=default | |
| IExecutionEngine & | operator= (IExecutionEngine &&)=default |
Bytecode interpreter execution engine.
Wraps an ICPU and IMemory, loads the process's code segment into memory before each execution burst, and steps instruction-by-instruction up to the given tick budget. Reports results via ExecutionResult.
Usage:
Definition at line 35 of file interpreter_engine.h.
Constructs an InterpreterEngine.
| cpu | Reference to the CPU (must outlive the engine). |
| memory | Reference to the memory subsystem (must outlive the engine). |
Referenced by InterpreterEngine(), InterpreterEngine(), operator=(), and operator=().
|
override |
Destroys interpreter engine.
|
delete |
References InterpreterEngine().
|
noexcept |
Move-constructs interpreter engine state.
References InterpreterEngine().
|
nodiscardoverridevirtual |
Executes the given process for up to tickBudget ticks.
The engine runs the process until one of:
| process | The process image to execute (registers + code). |
| tickBudget | Maximum number of ticks (instructions) to execute. |
Implements contur::IExecutionEngine.
References execute().
Referenced by execute().
|
overridevirtual |
Forcibly halts execution of the given process.
| pid | The process ID to halt. |
Implements contur::IExecutionEngine.
References halt().
Referenced by halt().
|
nodiscardoverridevirtualnoexcept |
Returns the human-readable name of this engine.
Implements contur::IExecutionEngine.
References name().
Referenced by name().
|
delete |
References InterpreterEngine().
|
noexcept |
Move-assigns interpreter engine state.
References InterpreterEngine().
|
private |
Definition at line 66 of file interpreter_engine.h.