Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  program1
Language: C/C++
Code:
#include <iostream>
#include <stdio.h>
using namespace std;
class Processor
{
public:
unsigned int *memory;
unsigned char a;
unsigned char b;
unsigned char c;
unsigned char d;
unsigned short int bit16[12];
unsigned long int dv_a;
unsigned long int dv_b;
Processor()
{
memory = new unsigned int [8192];
a=0;
b=0;
c=0;
d=0;
for (int t=0; t<12; ++t) bit16[t]= t+2;
};
void mov (unsigned char *reg, unsigned char num)
{
*reg=num;
};
void mov (unsigned char *op1, unsigned char *op2)
{
*op1=*op2;
};
void mov (unsigned char *register1, unsigned char *register2, unsigned char adres)
{
char n= *register2 + adres; 
};
void add (unsigned char *op1, unsigned char *op2)
{
*op1=*op1+*op2;
};
void add (unsigned char *op1,unsigned char num)
{
*op1=*op1+num;
};
void ls (unsigned char *op1, unsigned char num)
{
*op1=*op1<<num;
};
void rs (unsigned char *op1, unsigned char num)
{
*op1=*op1>>num;
};
void neg (unsigned char *op1)
{
*op1=~*op1;
}
void div (unsigned char *op1, unsigned char *op2)
{
int num=0;
while (*op2>1)
{
*op2=*op2/2;
num++;
};
*op1=*op1>>num;
};
};
class Processor2
{
public:
//конвеер
int mem[32];
int buff;
int PC; 
int opertype;
int buffop1; 
int buffop2; 
int stop;
Processor2()
{
PC=32;
opertype=0;
buff=0;
buffop1=0;
buffop2=0;
stop = 13;
};
void Bloc1 ()
{
if (PC>stop)
{
buff=mem[PC]; 
PC=PC-3; 

Bloc2();
}
else
{
opertype = 3;
Bloc4();
}
};
void Bloc2()
{
if (buff==1) {opertype=1;} else {opertype=2;}
Bloc3();
};
void Bloc3()
{
buffop1 = mem[mem[PC-1]]; 
buffop2 = mem[mem[PC-2]]; 
Bloc4();
};
void Bloc4()
{
switch(opertype)
{
case 1: buffop1 = buffop2;
break;
case 2: buffop1 = buffop1 + buffop2; 
break;
default:
Bloc1();
break;
}
Bloc5 ();
};
void Bloc5()
{
mem[mem[PC-1]]=buffop1;
Bloc1();
};
};
int main ()
{
Processor proc1;
Processor2 proc2;
unsigned char *rega=&proc1.a;
unsigned char *regb=&proc1.b;
unsigned char *regc=&proc1.c;
unsigned char *regd=&proc1.d;
proc1.mov(rega,8);
proc1.mov(regb,2);
proc1.mov(regc,32);
proc1.mov(regd,rega);
proc1.add(rega,regb);
proc1.ls(regb,3);
printf("ADD rega %d \n", *rega);
printf("LS regb %d \n", *regb);
proc1.div(regc,regd);
printf("\nDIV c/d: %d \n", *regc);
cout << "\nPremier array\n";
for (int t=0; t<12;++t)
cout << proc1.bit16[t]<<" ";
cout << "\n";
proc2.mem[1]=1; proc2.mem[2]=2; proc2.mem[5]=5; proc2.mem[6]=6;
proc2.mem[7]=7; proc2.mem[8]=5; proc2.mem[9]=4; proc2.mem[10]=7;
proc2.mem[31]=1; proc2.mem[30]=5; proc2.mem[29]=8;
proc2.mem[28]=1; proc2.mem[27]=6; proc2.mem[26]=9;
proc2.mem[25]=1; proc2.mem[24]=7; proc2.mem[23]=10;
proc2.mem[22]=2; proc2.mem[21]=5; proc2.mem[20]=6;
proc2.mem[19]=2; proc2.mem[18]=6; proc2.mem[17]=7;
proc2.mem[16]=2; proc2.mem[15]=5; proc2.mem[14]=6;
proc2.Bloc1();
system ("pause");
return (0);
}
Comments: