-
Notifications
You must be signed in to change notification settings - Fork 0
/
virtual_machine.h
69 lines (57 loc) · 1.79 KB
/
virtual_machine.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef VIRTUAL_MACHINE_H
#define VIRTUAL_MACHINE_H
#define MAX_PROGRAM_SIZE 2000
#define MAX_ACTIVATION_RECORD_SIZE 100
typedef struct
{
int opCode;
int lex_level;
int m_address;
int line_number;
} instruction;
typedef struct
{
int base_pointer;
int stack_pointer;
} activation_record;
/**
* opCodeName(): This function takes one integer parameter denotating the operation code,
* and produces the appropriate 3 letter symbol associated with it.
*
*/
char *opCodeName(int operation);
/**
* operationName(): This function takes one integer parameter denotating the m address,
* and produces the appropriate 3 letter symbol associated with it.
*
*/
char *operationName(int operation);
/**
* findBaseLevel(): This function takes in two parameters: an integer denotating the base pointer and
* another denoting a level. The variables are then used to calculate the activation
* record base.
*/
int findBaseLevel(int bp, int level);
/**
* fetch(): The fetch function transfers the data within memory into the instruction register.
*
*/
void fetch();
/**
* execute(): The execute function performs the Virtual Machine instructions.
*
*/
void execute();
/**
* readELF(): This function takes as it parameter a string containing the name of a file
* that used to produce a file pointer. Within the function, the while loop goes
* through the file, scanning and storing each of the instrutions given.
*/
void readELF(char *fileName);
/**
* virtualMachine(): This function runs our virtual machine. After the instructions are stored in memory,
* this function is called to fetch, execute, and print the result of our operation.
*
*/
void virtualMachine();
#endif