Итак, для моего класса программирования у нас был проект создания виртуальной машины, включая блок памяти, процессор, вход, выход, регистр команд, счетчик программ, MAR, MDR и т. Д. Теперь нам нужно создать компилятор с использованием Java-кода, который возьмет файл .exe, написанный в каком-то редакторе txt, и преобразует его в java-байтовый код и запускает код. Код, который мы будем писать в EXE-файле машинный код по линиям:Java - Создание справки компилятора
IN X
IN Y
ADD X
STO Y
OUT Y
STOP
DC X 0
DC Y 0
Я просто новичок и только 2 дня, чтобы написать это, и я очень потерянным и не имеют ни малейшего представления, с чего начать ....Любая помощь будет высоко ценится. Спасибо
Хорошо, увидев, что никто действительно не понимает, я уточню ...... Я нахожусь в своем первом курсе программирования, и мой учитель заставил нас создать виртуальную машину, которую я сделал, и я отправлю код для процессора и компьютерные классы, но мой учитель очень неорганизован, и у нас закончилось время для последнего проекта, который является компилятором ..... Код выше - это всего лишь пример кода, который будет превращен в байтовый код ... здесь код для процессора и компьютера в моей виртуальной машине пакет ...
class Cpu{
private MemEl acc;
private InstReg ir;
private ProgCount pc;
private Input in;
private OutPut out;
private MemEl mdr;
private MemEl mar;
public Cpu()
{
pc = new ProgCount();
ir = new InstReg();
acc = new MemEl();
}
public Boolean stop()
{
return ir.getOpcode() == 0;
}
public int getMAR()
{
return ir.getOpcode();
}
public int getMDR()
{
return mdr.read();
}
public void setMDR(int n)
{
mdr.write(n);
}
public boolean OutFlag()
{
return ir.getOpcode() == 8;
}
public boolean InFlag()
{
return ir.getOpcode() == 7;
}
public boolean StoreFlag()
{
return ir.getOpcode() == 2;
}
public void fetch()
{
mar.write(pc.getValue());
pc.plus();
}
public void reset()
{
mar.write(0);
pc.write(0);
pc.write(1);
}
public void fetch2()
{
ir.write(mdr.read());
}
public void decode()
{
mar.write(ir.getOperand());
mdr.write(acc.read());
}
public void execute()
{
switch(ir.getOpcode()){
case 0:
System.out.println("Complete");
break;
case 1:
acc.write(mdr.read());
break;
case 2:
acc.write(ir.getOperand());
break;
case 3:
acc.write(acc.read() + mdr.read());
break;
case 4:
acc.write(acc.read() - mdr.read());
break;
case 5:
acc.write(acc.read() * mdr.read());
break;
case 6:
acc.write(acc.read()/mdr.read());
break;
case 7:
mar.write(ir.getOperand());
break;
case 8:
System.out.println(getMDR());
break;
case 9:
pc.write(getMDR());
break;
case 10:
if(0 == acc.read())
pc.write(getMDR());
else
fetch();
break;
case 11:
if(0 < acc.read())
pc.write(getMDR());
else
fetch();
break;
}
}
Вот мой компьютерный класс
import java.io.*;
class Computer{
private Cpu cpu;
private Input in;
private OutPut out;
private Memory mem;
public Computer() throws IOException
{
Memory mem = new Memory(100);
Input in = new Input();
OutPut out = new OutPut();
Cpu cpu = new Cpu();
System.out.println(in.getInt());
}
public void run() throws IOException
{
cpu.reset();
cpu.setMDR(mem.read(cpu.getMAR()));
cpu.fetch2();
while (!cpu.stop())
{
cpu.decode();
if (cpu.OutFlag())
OutPut.display(mem.read(cpu.getMAR()));
if (cpu.InFlag())
mem.write(cpu.getMDR(),in.getInt());
if (cpu.StoreFlag())
{
mem.write(cpu.getMAR(),in.getInt());
cpu.getMDR();
}
else
{
cpu.setMDR(mem.read(cpu.getMAR()));
cpu.execute();
cpu.fetch();
cpu.setMDR(mem.read(cpu.getMAR()));
cpu.fetch2();
}
}
}
public void load()
{
mem.write(0,799);
mem.write(1,199);
mem.write(2,1009);
mem.write(3,398);
mem.write(4,298);
mem.write(5,199);
mem.write(6,497);
mem.write(7,299);
mem.write(8,902);
mem.write(9,898);
mem.write(97,0);
mem.write(98,0);
mem.write(99,1);
}
}
Метод Load - это всего лишь временный метод, просто чтобы убедиться, что машина работает ... то, что она будет загружать, - это байт-код, сформированный компилятором.
'.exe' является * слегка * запутанным расширением для такого файла. – Thomas
Вы уверены, что находитесь в правильном классе программирования? Вы действительно занимались проектом виртуальной машины или, по крайней мере, серьезно участвовали в нем, если это был групповой проект?Это назначение, которое вы не поняли в любом случае, выглядит намного проще, чем виртуальная машина. Я бы предположил, что вы только пытаетесь взять и пройти курсы, когда сможете учиться и применять материал. –
Не понимаю. Как файл '.exe' должен быть написан в текстовом редакторе? Или вы имеете в виду, что инструкции будут записаны в файле с расширением '.exe'? Не лучший выбор! –