разработка виртуального процессора, помогите разработать виртуальный процессор |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
разработка виртуального процессора, помогите разработать виртуальный процессор |
blackhard |
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: 0 |
помогите сделать задание задача такая:Разработать виртуальный процессор для арифметических операций над целыми числами.
Система команд-арифметические операции над содержимым регистров ввод и вывод значений регистров,условный и безусловный переход к команде заданного номера.длинна команды 3 байта включает в себя код операции (6бит) и номер 3х регистров (по 6 бит),в первых 2Х содержаться операнды, в 3й заносится результат операции. дать описание системы команд и программу для вычисления суммы квадратов первых n натуральных чисел.препод вообще ниче не обьяснил по этой теме и я блин даже не представляю как это сделать в паскале.мнеб хотяб понять как это делать |
blackhard |
Сообщение
#2
|
Бывалый Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: 0 |
опять проблема и опять с условием: если на ассемблере у меня условие выглядело так
case 1=2 add 1 2 3 если число в регистре 1 = число в регистре 2 то складываем их и помещаем в регистр 3 в машинных кодах это будет выглядеть както длинно и не по заданию поэтому я хочу сделать так case 1=2 001001 000001 000010 000000 add 1 2 3 в машинных кодах примерно так 000011 000001 000010 000100 но вот какая проблема у меня возникла получается что add 1 2 3 выполняется 2 раза если 1=2 и выполняется даже если они не равны подскажите как этого можно избежать я выделю строки которые отвечают за это Program processor; |
Malice |
Сообщение
#3
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
У тебя при выполнении условия должен выполнятся переход к команде с номером обозначенном в 3-ем регистре.. Т.е должна измениться пременнная k в процедуре ras. И еще я не понял - у тебя же по условию 3 байта на команду, а ты работаешь со строками. Это для отладки, а потом переделаешь ? Мне кажется проще делать сразу правильно.
|
blackhard |
Сообщение
#4
|
Бывалый Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: 0 |
У тебя при выполнении условия должен выполнятся переход к команде с номером обозначенном в 3-ем регистре.. Т.е должна измениться пременнная k в процедуре ras. И еще я не понял - у тебя же по условию 3 байта на команду, а ты работаешь со строками. Это для отладки, а потом переделаешь ? Мне кажется проще делать сразу правильно. да по поводу строк я ж преподу отправлял программу которая работала с ассемблерными командами и там работа была тоже со строками он мне написал что прога работает правильно токо нужно переделать с ассемблерных команд на машинный код так что я думаю так тоже правильно. но если в 3ем регистре будет хранится номер команды то где хранить параметры этой команды? Сообщение отредактировано: blackhard - |
Malice |
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
но если в 3ем регистре будет хранится номер команды то где хранить параметры этой команды? Не понимаю в чем сложность. Эмулируется по сути такая команда: если А>Б тогда переход 5; ( или if a>b then goto 5;) И выглядит это так: 0000111 000001 000010 000101 (если 7 - это проверка на больше например) |
blackhard |
Сообщение
#6
|
Бывалый Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: 0 |
Не понимаю в чем сложность. Эмулируется по сути такая команда: если А>Б тогда переход 5; ( или if a>b then goto 5;) И выглядит это так: 0000111 000001 000010 000101 (если 7 - это проверка на больше например) if a>b then goto 5 ну для такого условия проблем никаких а если if a>b then c:=a+b? |
Malice |
Сообщение
#7
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
|
Текстовая версия | 28.03.2024 21:46 |