[compiler]hw7 參考資料
作業規定
操作測試流程
java Yuhina < test.yu ( 產生 test.j)
java -jar jasim123.jar < test.j
java test
要可以執行成功
實作方法
1. 紀錄使用的register跟變數的對應關係
2.做好IR 跟jasmincode 的對應
3. 根據AST利用 IR表示轉成jasmin code
參考資料
0. intermediate code
OP( e1 , e2 ) => string op(string operator , string e1, string e2);
=>OP:= ADD | SUB | MUL | DIV | MOD //arithmetic
| AND | OR //bit logic
| EQ | NEQ | LT | GT | LE | GE //comparisons
NAME(n) =>string name(string n ); //return register number or labol
ESEQ(s,e)=> strimg eseq(string s,string e); //return e
CODE(i) => string code(string i );//constant integer
MEM(e) => load e register
CALL(ef , e0 , e1 , e2,... )=> function call string call( string fName,string[] args)
MOVE(dest , e) => string move(string dest,string e )
=> move(dese,e):=dest = TEMP(t) //assign to temporary t
| dest = MEM(e) // assign to location e
EXP(e) => string exp(e) 執行e 忽略結果
SEQ(s1,s2 , ... ,sn) => string seq(string [] s) 依序執行s1~sn
JUMP(e)=> jump to address(label) e
CJUMP(e,l1,l2)=>依照e執行的結果jump到 l1 or l2
LABEL(n)=> string label(string n)輸入名稱回傳位置
TEMP(t)=>
1. java File IO
讀寫檔案
FileReader rdFile = new FileReader("e:/in.txt");
BufferedReader brdFile = new BufferedReader(rdFile);
操作測試流程
java Yuhina < test.yu ( 產生 test.j)
java -jar jasim123.jar < test.j
java test
要可以執行成功
實作方法
1. 紀錄使用的register跟變數的對應關係
2.做好IR 跟jasmincode 的對應
3. 根據AST利用 IR表示轉成jasmin code
參考資料
0. intermediate code
OP( e1 , e2 ) => string op(string operator , string e1, string e2);
=>OP:= ADD | SUB | MUL | DIV | MOD //arithmetic
| AND | OR //bit logic
| EQ | NEQ | LT | GT | LE | GE //comparisons
NAME(n) =>string name(string n ); //return register number or labol
ESEQ(s,e)=> strimg eseq(string s,string e); //return e
CODE(i) => string code(string i );//constant integer
MEM(e) => load e register
CALL(ef , e0 , e1 , e2,... )=> function call string call( string fName,string[] args)
MOVE(dest , e) => string move(string dest,string e )
=> move(dese,e):=dest = TEMP(t) //assign to temporary t
| dest = MEM(e) // assign to location e
EXP(e) => string exp(e) 執行e 忽略結果
SEQ(s1,s2 , ... ,sn) => string seq(string [] s) 依序執行s1~sn
JUMP(e)=> jump to address(label) e
CJUMP(e,l1,l2)=>依照e執行的結果jump到 l1 or l2
LABEL(n)=> string label(string n)輸入名稱回傳位置
TEMP(t)=>
1. java File IO
讀寫檔案
FileReader rdFile = new FileReader("e:/in.txt");
BufferedReader brdFile = new BufferedReader(rdFile);
FileWriter wrFile = new FileWriter("e:/out.txt");
BufferedWriter bwrFile = new BufferedWriter(wrFile);
留言
張貼留言