IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> разработка виртуального процессора, помогите разработать виртуальный процессор
blackhard
сообщение 19.11.2007 17:15
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


помогите сделать задание smile.gif задача такая:Разработать виртуальный процессор для арифметических операций над целыми числами.
Система команд-арифметические операции над содержимым регистров ввод и вывод значений регистров,условный и безусловный переход к команде заданного номера.длинна команды 3 байта включает в себя код операции (6бит) и номер 3х регистров (по 6 бит),в первых 2Х содержаться операнды, в 3й заносится результат операции. дать описание системы команд и программу для вычисления суммы квадратов первых n натуральных чисел.препод вообще ниче не обьяснил по этой теме и я блин даже не представляю как это сделать в паскале.мнеб хотяб понять как это делать smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
blackhard
сообщение 1.12.2007 17:44
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


вот начал переделывать прогу для работы с машинным кодом сделал вначале только для 2х команд ввод и вывод
Program processor;
Uses CRT;
type treg=record
obozn:char;
chislo:integer;
end;
var a:array[1..20] of string;
st:string;ch:char;
n,m,k:byte;
reg:array[1..26] of treg;
f:text;
s:string;
procedure fail;
begin
writeln('ўл § Јаг§Ё«Ё Є®¤:');
assign(f,'2.txt');
reset(f);
n:=1;
while not eof(f) do
begin
readln(f,a[n]);
writeln(a[n]);
n:=n+1;
end;
end;
function ToDec(n:string; radix:longint):longint;
var
m, i: longint;
const
digit: string[16]='0123456789ABCDEF';
begin
m:=0;
while (n[1]='0') and (length(n) > 1) do delete(n,1,1);
for i:=1 to length(n) do m:=m*radix+pos(n[i],digit)-1;
ToDec:=m;
end;
procedure Input;
var i,j:1..10;
s,r,c:string;
k,Iv,n:integer;
begin
s:='';
r:='';
c:='';
str(todec(st[8+m]+st[9+m]+st[10+m]+st[11+m]+st[12+m]+st[13+m],2),r);
for i:=1 to 10 do
if reg[i].obozn=r then
if st[14+m]<>' ' then
begin
writeln('ўўҐ¤ЁвҐ зЁб«® ў ॣЁбва ',r);
readln(reg[i].chislo);
end
else
begin
k:=todec(st[29+m]+st[30+m]+st[31+m]+st[32+m]+st[33+m]+st[34+m],2);
reg[i].chislo:=k;
end;
end;
procedure Output;
var i:1..10;
n:integer;
r:string;
begin
r:='';
str(todec(st[8+m]+st[9+m]+st[10+m]+st[11+m]+st[12+m]+st[13+m],2),r);
for i:=1 to 10 do
if reg[i].obozn=r then
begin
writeln('зЁб«® ў ॣЁбвॠ',r,' =',reg[i].chislo);
end;
end;

procedure ras;
begin
k:=1;
while k<>n do
begin
st:=a[k];
if ord(st[1])<58 then
begin
m:=0{1};
case ToDec(st[1]+st[2]+st[3]+st[4]+st[5]+st[6],2) of
1:Input;
2:Output;
end;
end;
k:=k+1;
end;
end;
procedure registr;
var i:integer;
begin
for i:=48 to 58 do
reg[i-47].obozn:=chr(i)
end;
BEGIN
clrscr;
registr;
fail;
ras;
readln;
end.
может конечно не рационально но я другого способа не знаю.
000001 000001 000000 000000 000011
000010 000001 000000 000000
сдесь я в регистр 1 ввожу число 3 и вывожу егог на экран кстати по заданию даже если команда использует 1 регистр номера других должны быть просто нулями
так вот помогите переделать команду условия темже способом вот она
procedure Uslov;
var a,b:integer;
i:1..26;
f:boolean;
begin
f:=false;
for i:=1 to 26 do
begin
if st[6]=reg[i].obozn then
a:=reg[i].chislo;
if st[8]=reg[i].obozn then
b:=reg[i].chislo;
end;
case st[7] of
'=':if a=b then f:=true;
'>':if a>b then f:=true;
'<':if a<b then f:=true;
end;
if f=true then
begin
m:=9;
case st[10]of
'I':Input;
'A':Add;
'S':Sub;
'M':Mult;
'D':Divis;
'C':Uslov;
'O':Output;
'T':Wentto;
end;
end;
end;
а то я чето не врубаюсь че делать со знаками условия
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Mlc
сообщение 1.12.2007 18:24
Сообщение #3


Гость






У тебя на код команды отводится 6 бит, а команд на самом деле меньше. Надо на каждый вид условия (если равно то, если > то, если меньше то, и т.д.) выделить отдельный код команды. Тогда в 1 и 2 операндах будут регистры, а в 3-ем адрес перехода при верном условии.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
blackhard   разработка виртуального процессора   19.11.2007 17:15
volvo   Понять, говоришь? Ну, попробуй: Виртуальный процес...   19.11.2007 17:24
blackhard   аможно в 2х словах обьяснить как в паскале вообще ...   19.11.2007 18:23
blackhard   короче у меня такой вопрос:$80000000 вот это ...   22.11.2007 20:07
Malice   короче у меня такой вопрос:$80000000 вот это...   22.11.2007 20:51
blackhard   уф я понял как написать прогу :) токо я так и не ...   22.11.2007 21:46
Malice   длинна команды 3 байта включает в себя код операц...   22.11.2007 22:33
blackhard   Преобразовать команды и номера регистров в 3 байт...   26.11.2007 21:23
Malice   а можно небольшой комментарий я не знаком с опера...   26.11.2007 22:01
blackhard   Program processor; Uses CRT; type treg=record ob...   23.11.2007 21:25
blackhard   ну че никто мне не поможет?помогите очень прошу :)   26.11.2007 19:00
Malice   ну че никто мне не поможет?помогите очень прошу :...   26.11.2007 20:56
blackhard   а сколько бит в паскале занимает один символ напри...   27.11.2007 19:26
Malice   1 символ занимает 1 байт, а байт это: http://ru.wi...   27.11.2007 19:51
blackhard   а как сделать чтобы все элементы reg[i].obozn мас...   28.11.2007 16:09
blackhard   вобщем опять нужна помощь.доделал прогу и отправил...   30.11.2007 23:30
Lapp   если я напишу такую команду прога попросит ввести...   1.12.2007 9:51
blackhard   Нет, так процессоры не работают. Они вообще ниче...   1.12.2007 12:35
blackhard   вот начал переделывать прогу для работы с машинным...   1.12.2007 17:44
Mlc   У тебя на код команды отводится 6 бит, а команд на...   1.12.2007 18:24
blackhard   опять проблема и опять с условием: если на ассембл...   1.12.2007 21:27
Malice   У тебя при выполнении условия должен выполнятся пе...   1.12.2007 21:51
blackhard   У тебя при выполнении условия должен выполнятся п...   1.12.2007 22:17
Malice   но если в 3ем регистре будет хранится номер коман...   1.12.2007 22:32
blackhard   Не понимаю в чем сложность. Эмулируется по сути т...   1.12.2007 22:40
Malice   if a>b then goto 5 ну для такого условия пробл...   1.12.2007 22:45
blackhard   Легко ! или блин действительно легко спасиб...   1.12.2007 22:52


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 17:21
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"