Скачиваний:
11
Добавлен:
01.05.2014
Размер:
1.31 Кб
Скачать
// Purpose:     Генерация ассемблерного кода
//*****************************************************************************
#ifndef _COMPILER_GENASM_H_
#define _COMPILER_GENASM_H_
//-----------------------------------------------------------------------------
#include "Tetrads.h"
#include "NameTables.h"
#include <cstdio>
#include <string>
//-----------------------------------------------------------------------------

// Количество байт, необходимое для хранения одной переменной типа
#define SIZE_INT    2
#define SIZE_REAL   4
#define SIZE_CHAR   1
#define SIZE_BOOL   1
#define SIZE_STR    256

//-----------------------------------------------------------------------------

class CGenAsm
{
    FILE *m_pFile;
    unsigned m_NextLabel;

    //--------------------
    
    std::string NewLabel();

    void WriteAsmPrefix();
	void WriteSegmentStack();
    void WriteSegmentData(CNameTable& NameTable);
	void WriteSegmentCode(CTetradStream &Tetrads);

	void WriteTetrad(STetrad &tet);

    const char *GetConditionInstruction(TET_OPERATION op);

public:
    CGenAsm();

    void GenerateAsmFile(const char *FileName, CNameTable& NameTable, CTetradStream &Tetrads);

};


//-----------------------------------------------------------------------------
#endif
Соседние файлы в папке Курсовая работа2