Mini Java编译器(四)
四、P代码指令说明
由于系统较简单,所以对底层硬件也做了简化:
- 没有寄存器,只有一个数据栈
- 只能对主存进行存、取操作
- 只支持主存间接寻址
- 可以查找符号表中符号,返回该符号地址
指令表(未完成)
助记符 | 格式 | 说明 |
---|---|---|
push | push <address> | 将<address>指向的内容压栈 |
pop | pop <address> | 将栈顶内容弹入<address>指向的位置 |
jmp | jmp <address> | 无条件跳转至<address>指向的代码 |
jt | jt <address>, <goal> | 如果<address>指向的内容为真则跳转至<goal>指向的代码 |
五、错误信息表
(定义在compiler.exception.ErrorMessage接口中)
ANALYZING_FAILURE | 文件无法分析 |
CLASS_DEFINED | 重复类定义 |
CLASS_NOT_DEFINED | 类未定义 |
IDENTIFIER_DEFINED | 重复标识符定义 |
IDENTIFIER_NOT_DEFINED | 标识符未定义 |
ILLEGAL_EXPRESSION | 非法表达式 |
ILLEGAL_GRAMMER | 语法错误 |
ILLEGAL_OPERATION | 非法操作 |
ILLEGAL_TOKEN | 标识符无法分析 |
METHOD_DEFINED | 重复方法定义 |
NOT_ALLOCATED | 内存未分配 |
OUT_OF_MEMORY | 内存已满 |
READ_FILE | 文件无法读取 |
TYPE_UNMATCHED | 类型不匹配 |