Среда, 15.01.2025, 12:42
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Разработка библиотеки mySimpleComputer. Оперативная память,
engineerklubДата: Среда, 22.03.2023, 17:58 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 29644
Репутация: 0
Статус: Offline
Разработка библиотеки mySimpleComputer. Оперативная память, регистр флагов, декодирование операций.

Тип работы: Работа Лабораторная
Сдано в учебном заведении: ДО СИБГУТИ

Описание:
Изучить принципы работы оперативной памяти. Познакомиться с разрядными операциями языка Си. Разработать библиотеку mySimpleComputer, включающую функции по декодированию команд, управлению регистрами и взаимодействию с оперативной памятью.
Задание на лабораторную работу
1. Прочитайте главу 4 практикума по курсу «Организация ЭВМ и систем». Изучите принципы работы разрядных операций в языке Си: как можно изменить значение указанного разряда целой переменной или получить его значение. Вспомните, как сохранять информацию в файл и считывать еѐ оттуда в бинарном виде.
2. Разработайте функции по взаимодействию с оперативной памятью, управлению регистром флагов и кодированию/декодированию команд:
a. int sc_memoryInit () – инициализирует оперативную память Simple Computer, за-давая всем еѐ ячейкам нулевые значения. В качестве «оперативной памяти» использу-ется массив целых чисел, определенный статически в рамках библиотеки. Размер мас-сива равен 100 элементам.
b. int sc_memorySet (int address, int value) – задает значение указанной ячейки памяти как value. Если адрес выходит за допустимые границы, то устанавлива-ется флаг «выход за границы памяти» и работа функции прекращается с ошибкой;
c. int sc_memoryGet (int address, int * value) – возвращает значение указан-ной ячейки памяти в value. Если адрес выходит за допустимые границы, то устанавли-вается флаг «выход за границы памяти» и работа функции прекращается с ошибкой. Значение value в этом случае не изменяется.
d. int sc_memorySave (char * filename) – сохраняет содержимое памяти в файл в бинарном виде (используя функцию write или fwrite);
e. int sc_memoryLoad (char * filename) – загружает из указанного файла содер-жимое оперативной памяти (используя функцию read или fread);
f. int sc_regInit (void) – инициализирует регистр флагов нулевым значением;
g. int sc_regSet (int register, int value) – устанавливает значение указанно-го регистра флагов. Для номеров регистров флагов должны использоваться маски, за-даваемые макросами (#define). Если указан недопустимый номер регистра или некор-ректное значение, то функция завершается с ошибкой.
h. int sc_regGet (int register, int * value) – возвращает значение указанного флага. Если указан недопустимый номер регистра, то функция завершается с ошибкой.
i. int sc_commandEncode (int command, int operand, int * value) – кодиру-ет команду с указанным номером и операндом и помещает результат в value. Если ука-заны неправильные значения для команды или операнда, то функция завершается с ошибкой. В этом случае значение value не изменяется.
j. int sc_commandDecode (int value, int * command, int * operand) – деко-дирует значение как команду Simple Computer. Если декодирование невозможно, то устанавливается флаг «ошибочная команда» и функция завершается с ошибкой.
3. Оформите разработанные функции как статическую библиотеку. Подготовьте заголовочный файл для неѐ.

СКАЧАТЬ
 
  • Страница 1 из 1
  • 1
Поиск:

Рейтинг@Mail.ru