Автор
|
Тема: Виртуальный процессор. HELP
|
AndreyK |
опубликован 26-11-2001 19:27 MSK
Помогите кто может сделфть виртуальный прцессор. Условие: Разработать виртуальный процессор для арифметических операций над вещественными числами. Система команд- арифметические операции над содержимым регистров, ввод и вывод значений регистров.Длина команды - 3 байта, команда включает в себя код операции(один байт)и номера двух регистров(по одному байту), результат записывается вв первый из используемых регистров. Дать описание системы команд и программу для вычесления значений квадратного трёхчлена.
|
7in
|
опубликован 27-11-2001 23:58 MSK
Поясни, plz, неграмотному, что такое виртуальный процессор. Примерно понятно, но не до конца... :) |
AndreyK
|
опубликован 28-11-2001 18:33 MSK
виртуальный процессор эмулирует действия процессора |
7in
|
опубликован 28-11-2001 21:33 MSK
Мда... подробное описание... А теперь вопросы: - эти инструкции в файле записаны будут (отдельно или dump) или нужно на int 6/1/3 висеть, чтобы эти инструкии можно было прям внутрь кода проги запихнуть? - как на счёт проверки условий? jump'ы тоже нужны? - как ты планируешь 1 байтом записать вещественное число (если два дургих - команда и номер регистра)? - под регистром здесь понимается регистр ВИРТУАЛЬНОГО процессора? |
7in
|
опубликован 01-12-2001 23:56 MSK
Аууууу! Ты куда пропал??? |
AndreyK
|
опубликован 02-12-2001 18:58 MSK
...число можно считать с клавиатуры. ...инструкции в txt file записать ...под регистром понимается регистр ВИРТУАЛЬНОГО процессора. я сделал что вроде этого: program proc; uses crt; var R:array [1..255] of real; St,S:string; i:integer; ch:char; Begin clrscr; i:=1; s:='w1 w2 w3 w4 -55+54*54*51*24+52+53R5 {это как раз программа} E '; st:=s; while (length(S)-2) >= i do Begin Case s[i] of 'W' : readln((s[i+1])); 'R' : writeln(St[ord(s[i+1])]); '+' : St[i+1]:=chr(ord(s[i+1])+ord(s[i+2])); '-' : St[i+1]:=chr(ord(s[i+1])-ord(s[i+2])); '*' : St[i+1]:=chr(ord(s[i+1])*ord(s[i+2])); '/' : if s[i+2]='0' then writeln('divizion by zero') else St[i+1]:=chr (ord(s[i+1]) div ord(s[i+2])); 'E' : break; Else WriteLn('Bug! Invalid operation code.'); End; i:=i+3; End; end. только оно немножко не работает может вместо ST Сделать массив из реал
|
7in
|
опубликован 03-12-2001 23:00 MSK
Что-то у тебя тут вообще ничего не понятно, все типы перемешаны... Я тебе свой вариант сейчас пришлю. |
Valery Votintsev
|
опубликован 04-12-2001 10:31 MSK
Я так и не понял, что же именно человеку нужно... (старый совсем стал :). Ребята, учитесь задавать понятные вопросы - тогда сможете получить вразумительные ответы. На всякий случай - вот это не то? http://pascal.sources.ru/parsing/bpc-sec.htm |
AndreyK
|
опубликован 07-12-2001 17:57 MSK
Точто надо 7in |
7in
|
опубликован 08-12-2001 20:31 MSK
Я рад :) |
Valery Votintsev
|
опубликован 08-12-2001 22:07 MSK
to 7in: А чего тебе надо? И почему ты так рад? ;-))) |