Java编译器(四)
四、P代码指令说明
由于系统较简单,所以对底层硬件也做了简化:
1、没有寄存器,只有一个数据栈
2、只能对主存进行存、取操作
3、只支持主存间接寻址
4、可以查找符号表中符号,返回该符号地址
指令表(未完成)
助记符
格式
说明
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
类型不匹配
四、P代码指令说明
由于系统较简单,所以对底层硬件也做了简化:
1、没有寄存器,只有一个数据栈
2、只能对主存进行存、取操作
3、只支持主存间接寻址
4、可以查找符号表中符号,返回该符号地址
指令表(未完成)
助记符
格式
说明
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
类型不匹配