C# Class Abraham.DLXChecker

Datei anzeigen Open project: YuhangGe/DLX-System

Public Methods

Method Description
Check ( string source ) : CheckResult
char_to_int ( char c ) : int

把4个8位char合并成一个32位int

int_to_bytes ( int num ) : byte[]

辅助函数,把32位int转为4个8位byte

uint_to_bytes ( uint num ) : byte[]

辅助函数,把32位int转为4个8位byte

Private Methods

Method Description
AppendContent ( ) : void
AppendSpace ( string label = null, int snum = SPACENUM1 ) : string
C ( ) : void
DFirst ( ) : void
DP ( ) : void
Data ( ) : void
Debug ( string msg ) : void
I ( ) : void

instruction include comment

I_ALI ( string cmd ) : void

I-类型算术/逻辑运算,格式为Addi r1,r2,#100或addi r1,r2,lable_1或addi r1,r2,str[2]

I_ALR ( string cmd ) : void

R-类型算术/逻辑运算,格式为Add r1,r2,r3

I_CB ( string cmd ) : void

条件分支指令,包括BEQZ和BNEZ,格式为beqz r2,label_1

I_JMPI ( string cmd ) : void

使用立即数的跳,包括J和JAL

I_JMPR ( string cmd ) : void

使用寄存器的跳,包括JR和JALR

I_LHI ( string cmd ) : void

LHI指令,格式为lhi r0,#100或lhi r0, label_1 或lhi r1,str[#2]

I_LOAD ( string cmd ) : void

数据传送加载指令,包括lb和 lw ,格式为lw r1, #100(r2)或lw r1,num(r2)或lw r3,num[ #2](r0)

I_RET ( string cmd ) : void

从跳转(函数)返回 ,等价于JR R31

I_RFE ( string cmd ) : void

从异常返回

I_STORE ( string cmd ) : void

数据传送储存指令,包括sb, sw ,格式为sw #100(r2),r1或sw num(r2),r1或sw num[ #2](r0),r3

I_TRAP ( string cmd ) : void

TRAP指令

PAlign ( ) : void
PAscii ( bool add_zero = false ) : void
PAsciiEach ( ) : string
PAsciiz ( ) : void
PByte ( ) : void
PExtern ( ) : void
PGlobal ( ) : void
PSpace ( ) : void
PText ( ) : void
PWord ( ) : void
R ( ) : int
TContent ( ) : void
TExtern ( ) : void
TGlobal ( ) : void
TI ( ) : void
TPseudo ( ) : void
Text ( ) : void
add_to_wait ( string word, int row, int colum ) : void
back_src_token ( ) : void

回退一个字符

check_symbol ( string word, int index ) : bool

查找标记是否已经声明

check_text_symbol ( string word ) : bool

只在text段中查找标记是否已经声明 用于跳转指令,这些指令后面跟的标记只能是程序段中声明的标记

delete_last_error ( ) : void
error ( string msg ) : void
error ( string msg, int row, int colum ) : void
get_number_word ( ) : string

获取数字格式的字符串, 字符串格式为#或x或b开头,分别代表十进制,十六进制和二进制 也可以直接数字,代表十进制

get_src_token ( ) : char

读取下一个字符

get_word ( ) : string

得到一个字符串,可能是指令操作码(Add,Lw等),也可能是label, 但不能以字母开头

get_word_index ( string word ) : int

得到符号在操作符表中的位置

get_word_type ( string src_word ) : WORDTYPE
is_validate_token ( char ch ) : bool

是否是合法的字符 合法字符包括字母、数字、_和$

jump_to_next_line ( ) : void

出现错误时跳转到下一行语句

parse_number_16 ( string num_word ) : int

将字符串转换为16位整数 字符串格式为#或x或b开头,分别代表十进制,十六进制和二进制 也可以直接数字,代表十进制 字符串格式的正确由获取该字符串的函数 get_number_word保证

parse_number_32 ( string num_word ) : int

将字符串转换为32位整数 字符串格式为#或x或b开头,分别代表十进制,十六进制和二进制 也可以直接数字,代表十进制 字符串格式的正确由获取该字符串的函数 get_number_word保证

parse_number_byte ( string num_word ) : byte
remove_from_wait ( string word ) : void
skip_space ( ) : void

跳过空白符,包括空格和制表符

Method Details

Check() public method

public Check ( string source ) : CheckResult
source string
return CheckResult

char_to_int() public static method

把4个8位char合并成一个32位int
public static char_to_int ( char c ) : int
c char
return int

int_to_bytes() public static method

辅助函数,把32位int转为4个8位byte
public static int_to_bytes ( int num ) : byte[]
num int
return byte[]

uint_to_bytes() public static method

辅助函数,把32位int转为4个8位byte
public static uint_to_bytes ( uint num ) : byte[]
num uint
return byte[]