?? code.h
字號:
/****************************************************/
/* 文件 code.h */
/* 說明 TINY編譯器代碼生成功能頭文件和TM機界面 */
/* 主題 編譯器結(jié)構(gòu):原理和實例 */
/****************************************************/
/* 判斷聯(lián)入標志,如已聯(lián)入該文件則不再聯(lián)入 */
#ifndef _CODE_H_
#define _CODE_H_
/* 程序指令指示器pc為7,指向當前指令存儲位置 *
* 程序指示器將使用寄存器數(shù)組中的第8個寄存器 */
#define pc 7
/* 過程活動記錄頭指針指示器sp指向過程活動記錄的頭地址指針 */
#define sp 6
/* 過程活動記錄尾指針指示器top指向過程活動記錄的尾地址指針 */
#define top 5
/* 過程活動記錄sp到display表距離指示器displayOff */
#define displayOff 4
/* 存儲指示器mp指向用于臨時變量存儲的數(shù)據(jù)存儲器頂端 */
#define mp 3
#define ac2 2 /* 第三累加器 */
#define ac1 1 /* 第二累加器 */
#define ac 0 /* 第一累加器 */
/**************** 代碼產(chǎn)生功能函數(shù) *******************/
/* 該函數(shù)在代碼文件code中寫入指令的注釋行,注釋內(nèi)容由c指定 */
void emitComment( char * c );
/************************************************************
* 該函數(shù)產(chǎn)生一條只用寄存器操作數(shù)的TM指令,寄存器地址模式 *
* op 為操作碼 *
* r 為目標寄存器 *
* s 為第一寄存器 *
* t 為第二寄存器 *
* c 為要寫入代碼文件code的注釋內(nèi)容, *
* 當代碼生成追蹤標志TraceCode為TRUE時寫入目標代碼文件 *
************************************************************/
void emitRO( char *op, int r, int s, int t, char *c);
/************************************************************
* 該函數(shù)產(chǎn)生一條寄存器-內(nèi)存操作數(shù)的TM指令 *
* op 為操作碼 *
* r 為目標寄存器 *
* d 為偏移值 *
* s 為基地址寄存器 *
* c 為要寫入代碼文件code的注釋內(nèi)容, *
* 當代碼生成追蹤標志TraceCode為TRUE時寫入目標代碼文件 *
************************************************************/
void emitRM( char * op, int r, int d, int s, char *c);
/* 該函數(shù)略過參數(shù)howMany指定數(shù)量代碼指令行,函數(shù)返回當前代碼指令寫入地址 */
int emitSkip( int howMany);
/* 該函數(shù)退回到由參數(shù)loc指明的上一個已經(jīng)略過的代碼指令寫入地址 */
void emitBackup( int loc);
/* 該函數(shù)把當前代碼寫入地址恢復為當前未寫入代碼指令的最高地址 */
void emitRestore(void);
/************************************************************
* 該函數(shù)在產(chǎn)生一條寄存器-內(nèi)存操作數(shù)TM指令時, *
* 將一個絕對地址參數(shù)轉(zhuǎn)換為pc相對地址參數(shù) *
* op 為操作碼 *
* r 為目標寄存器 *
* a 為絕對存儲器地址 *
* c 為要寫入代碼文件code的注釋內(nèi)容, *
* 當追蹤標志TraceCode為TRUE時寫入 *
************************************************************/
void emitRM_Abs( char *op, int r, int a, char * c);
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -