|
9 / 9 / 5
Регистрация: 10.05.2012
Сообщений: 292
|
|
Виртуальная машина03.09.2012, 21:57. Показов 5598. Ответов 22
Метки нет (Все метки)
Просто задание на практику. В ходе разбора самого задания возникают некоторые вопросы, помогите пожалуйста разобраться.
Само задание всё как написано в варианте: PSW - 32 бита = 16+16 = IP + Flags Память - слова по 48 бит, размер адреса = 16 бит сумматор - 48 бит адресный регистр - 16 бит ТИпы данных: Целые знаковые - 48 бит Дробные - 48 бит: знак - 1 бит, порядок - 7 бит, мантисса - 40 бит; код прямой. Структура команды - 24бита: код операции - 7 бит, b - 1 бит b=0 -адрес(абсолютная адресация) b=1 - адрес + регистр (индексная или базовая) Адрес - 16 бит Две команды в слове Загрузка адресного регистра: b = 0 - адрес(константа) в команде (константа = адрес) b = 1 - регистр + константа в команде загрузка-сохранения сумматора арифметика дробная на сумматоре арифметика целая знаковая на сумматоре; реализация операций "вручную" переходы: Безусловный прямой: IP = адрес (константа в команде); бит b работает по схеме загрузки адресного регистра: b = 0 - адрес(константа) в команде (константа = адрес) b = 1 - регистр + константа в команде если адрес = 0, то это косвенный переход по адресному регистру условный - то же самое, проверяет флаги; вызов подпрограммы, адрес возврата сохраняется в адресном регистре возврат - безусловный переход прямой: b = 1, регистр + 0 Теперь вопросы: судя по заданию получается что у меня всего 1 регистр??? преподаватель объяснял, что сумматор используется в качестве ячейки памяти. т.е. получается все вычисления происходят с помозью одного регистра и сумматора? я поняла это так: одно значение загружается в регистр, второй в сумматор, для них вызывается операция и результат записывается в сумматор. поясните пожалуйста насколько поняли Добавлено через 6 минут и ещё не понятно зачем 2 команды в слове
0
|
|
| 03.09.2012, 21:57 | |
|
Ответы с готовыми решениями:
22
Сумматор - виртуальная машина Виртуальная функция Виртуальная функция |
|
9 / 9 / 5
Регистрация: 10.05.2012
Сообщений: 292
|
|
| 31.10.2012, 11:43 [ТС] | |
|
Спасибо большое за очень понятные и развёрнутые объяснения!
Добавлено через 10 часов 48 минут Возникла вот такая проблема. Мне нужно выполнять вычисления n раз. По сути нужно делать переходы на один и тот же фрагмент программы n раз. Соответственно нужно постоянно делать декремент и проверять не равно ли полученное значение нулю. Если равно - выходим из цикла. => Сделаем условный переход, который выполняется если flag не равен нулю. Вопрос - мне получается нужно сделать операцию загрузки значения в flag? и соответсвенно для данной задачи операцию декремента для флага? Есть и другая идея - просто загружать число n в память и по адресу этого числа делать декрмент до тех пор пока значение не станет равно нулю. т.е. сделать проверку в операции декремента - как только значения полученное декрементом <1 или равно 0 установить флаг в значение 0. Если так, то мне в принципе не нужно реализовывать операции загрузки в флаг значения и декремента значения в флаге. А нужно лишь сделать проверку в обычной операции декремента. Но отсюда вытекает и другой вопрос: т.к. у меня все операции реализуются через сумматор, то мне чтобы сделать декремент числа нужно загрузить его в сумматор, выполнить операцию декремента и выгрузить? Как быть?
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
| 31.10.2012, 22:06 | |
|
Да, арифметические действия сами и устанавливают соответствующие флаги. Иногда есть и отдельные команды для установки/сброса флагов, но они для своих целей, а не чтобы выполнять на арифметику её работу.
Если у вас только сумматор умеет складывать и это единственный регистр, то да, приведённый вами вариант — это единственный способ. Загрузить, сделать что-то, выгрузить. Естественно, выгрузка значения флаги не трогает, так что флаг будет доступен для перехода впоследствии. Обычно, правда, для циклов выделяется отдельный регистр, так как дёргать туда-сюда память дорого. Но если такой дефицит регистров, то что поделать.
1
|
|
|
9 / 9 / 5
Регистрация: 10.05.2012
Сообщений: 292
|
|
| 31.10.2012, 22:08 [ТС] | |
|
0
|
|
| 31.10.2012, 22:08 | |
|
Помогаю со студенческими работами здесь
23
Виртуальная неоднозначность виртуальная функция Виртуальная функция C++. Виртуальная модель Виртуальная функция Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|