Пример по машинной модели
//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;
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.