asmcodegenerator.h

来自「一个完整的C语言编译器」· C头文件 代码 · 共 45 行

H
45
字号
#ifndef _ASMCODEGENERATOR_H_
#define _ASMCODEGENERATOR_H_

#include "Analyzer.h"

class CAsmCodeGenerator
{
public:
	CAsmCodeGenerator( CString& str );
	~CAsmCodeGenerator();

// Operation
public:
	void			GenerateAsmCode( LPCTSTR lpszPathName );

// help routines
private:
	void			emitComment( char* format, ... );
	void			emitLabel( char* format, ... );
	void			emitCode( char* format, ... );
	void			emitCode( CString& code );

	// 80x86 ASM routines
	void			_inline_readc();
	void			_readi();
	void			_writei();

	// code generation routines
	void			genPreSeg();
	void			genData( CTreeNode* p );
	void			genCodeSeg();
	void			genFunc( CTreeNode* pNode );
	void			genLocal( CTreeNode* pNode );
	void			genStmt( CTreeNode* pNode, int lab1 = 0, int lab2 = 0 );

	BOOL			isAddr( CTreeNode* pNode );

private:
	CAnalyzer*		m_pAnalyzer;

	CFile			m_file;
	int				label;// generator unique lable;
};

#endif // _ASMCODEGENERATOR_H_

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?