Пример по машинной модели
//Testing Managed C++.cpp: main project file
#include "stdafx.h"
#include <vector>
#include <vcclr.h>
using namespace System;
using namespace std;
enum reg_type {I, F, AR, PR, BR};
enum reg_rot {STATIC, ROTATED};
enum Reg{
R0 = 0,
R1 = 1,
R2 = 2,
R127 = 127,
F0 = 128
F1 = 129
F2 = 130,
};
enum reg_access {READ_ONLY, WRITE_ONLY, READ_WRITE,};
enum Opcode {add, adds, add_i, add_m, ld, st};
enum Latency {
NA = -10,
D = -9,
C = -8,
M = -1,
L0 = 0,
L1 = 1,
L2 = 2,
max = 900,
};
ref class Register{
reg_type type;
reg_rot rot;
reg_access access;
public:
Register(reg_type _type, reg_rot _rot, reg_access _access){
type = _type;
rot = _rot;
access = _access;
}
reg_type get_type(){return type};
reg_rot get_rot(){return rot};
reg_access get_access(){return access};
};
int main(array<System::String ^> ^args)
{
array<Register ^>^ Regitesters = gcnew array<Register ^>(1000);
//Register array with register properties
Registers[R0] = gcnew Register(I, STATIC, READ_ONLY ) ;//R0 properties
Registers[R1] = gcnew Register(I, STATIC, READ_WRITE) ;//R1 properties
Registers[R2] = gcnew Register(I, STATIC, READ_WRITE) ;//R2 properties
Registers[F0] = gcnew Register(F, STATIC, READ_ONLY ) ;//F0 properties
Registers[F1] = gcnew Register(F, STATIC, READ_ONLY ) ;//F1 properties
Registers[F2] = gcnew Register(F, STATIC, READ_WRITE) ;//F2 properties
array<Latency, 2>^ Latencies = gcnew array<Latency, 2>{
//Producer\Consumer ALU Branch Load
{ L1 , NA , L1 },
{ M , NA , M },
{ L1 , L0 , L1 },
};
return 0;
}
page revision: 2, last edited: 09 Dec 2006 15:43