Перейти к основному содержанию
EDU-MMCS
Вы используете гостевой доступ (Вход)

CS221. Архитектура компьютера и операционные системы

  1. В начало
  2. Курсы
  3. Осенний семестр
  4. Фундаментальная информатика и ИТ
  5. CS221 CA&OS
  6. Материалы лабораторных работ
  7. Лаб. Занятие 7.2. Обязательные задания для решения...

Лаб. Занятие 7.2. Обязательные задания для решения в классе

Требуемые условия завершения
Открыто с: понедельник, 21 октября 2024, 08:00
Срок сдачи: пятница, 25 октября 2024, 13:30

Лаб. Занятие 7.  Часть 2. Обязательная задача [4 балла]

Следует разместить в Moodle решение одной из перечисленных ниже задач (по выбору преподавателя)

Во всех заданиях следует отправлять на проверку:
1) реализацию заданной инструкции на микропрограммном уровне (только фрагмент с короткой микропрограммой на языке  микроассемблера MAL, который Вы добавляете в файл mic1mmv-mmcs.mal);
2) JAS file, в котором Вы вызываете созданную Вами новую инструкцию. 

Измененный файл ijvm-mmcs.conf, который Вам нужен для проверки работоспособности Вашей микропрограммы отправлять не надо.

IJVM Assembly Language Specification

  1. [ v71] Реализуйте инструкцию DUP_X2, описанную на стр. 135, A. Appendix в Справочнике ассемблерных инструкций Java-машины.    Код для инструкции подберите самостоятельно. Инструкция должна менять содержимое стека следующим образом: значение, размещенное на вершине стека должно продублироваться  в третью по глубине ячейку стека, сдвинув остальные. Т. е. если до инструкции стек имел вид ....s , v1, v2, v3  (v3- значение, лежащее на вершине стека) то после выполнения  DUP_X2 стек должен иметь вид ...s, v3, v1, v2, v3. 
  2. [ v72] Реализуйте инструкцию DUP2_X1, описанную на стр. 135, A. Appendix в Справочнике ассемблерных инструкций Java-машины.    Код для инструкции подберите самостоятельно. Инструкция должна менять содержимое стека следующим образом: пара значений, размещенных на вершине стека и в предыдущей ячейке должна продублироваться  в глубину стека, сдвинув остальные значения. Т. е. если до инструкции стек имел вид ....s , v1, v2, v3  (v3- значение, лежащее на вершине стека) то после выполнения  DUP2_X1 стек должен иметь вид ...s, v2, v3, v1, v2, v3
  3. [ v73] Разработайте микропрограмму для реализации  инструкции IALOAD для работы с массивами, описанной на стр. 135, A. Appendix в Справочнике ассемблерных инструкций Java-машины. Код для инструкции подберите самостоятельно. Инструкция должна для лежащих на стеке адреса начала массива и смещения в массиве, размещать на вершине стека значение соответствующего элемента массива. Т. е. если до выполнения инструкции на стеке лежали значения ...s,o,i (o- адрес начала массива, i - смещение в массиве), то после выполнения  IALOAD стек должен иметь вид ...s, o[i]. Для того, чтобы узнать адрес начала массива, в mal-файле нужно разместить функцию
    aload1	H = LV		                        // MBR contains index; Copy LV to H
    aload2	MDR = TOS =  MBRU + H			// Copy LV + index to H
    aload3	PC = PC + 1; fetch			
    aload4  MAR = SP = SP + 1; wr; goto Main1	 // Push var address onto stack
    
  4. [ v74]  Разработайте микропрограмму для реализации  инструкции IREM, описанной на стр. 136, A. Appendix в Справочнике ассемблерных инструкций Java-машины.    Код для инструкции подберите самостоятельно. Инструкция должна вместо лежащих на стеке значений a, b размещать на вершине стека остаток целочисленного деления a%b. Для упрощения считайте, что оба числа положительные. 
  5. [ v75]  Разработайте микропрограмму для реализации  инструкции LCMP, описанной на стр. 136, A. Appendix в Справочнике ассемблерных инструкций Java-машины.   Код для инструкции подберите самостоятельно.  Вместо лежащих на стеке значений ... , a , b на вершине стека должен быть 0, если a==b, -1, если a<b, и 1 в противном случае (... , a == b ? 0 : (a < b ? -1 : 1)). 
  6. [ v76] Разработайте микропрограмму для реализации  инструкции INEG, описанной на стр. 135, A. Appendix в Справочнике ассемблерных инструкций Java-машины.    Код для инструкции подберите самостоятельно.  
  7. [ v77] Разработайте микропрограмму для реализации  инструкции IDIV, описанной на стр. 135, A. Appendix в Справочнике ассемблерных инструкций Java-машины.    Код для инструкции подберите самостоятельно. Инструкция должна размещать на вершине стека результат целочисленного деления. Для упрощения считайте, что оба числа положительные. 
  8. [ v78] Разработайте микропрограмму для реализации  инструкции IASTORE для работы с массивами, описанной на стр. 137, A. Appendix в Справочнике ассемблерных инструкций Java-машины.    Код для инструкции подберите самостоятельно. Инструкция должна для размещенных на стеке адреса начала массива, смещения в массиве и некоторого значения а, записать в указанный элемент массива значение а. Если до инструкции стек имел вид ....s, o,i,a  (a - значение, лежащее на вершине стека) то после выполнения  IASTORE cтек должен иметь вид ...s. Для того, чтобы узнать адрес начала массива, в mal-файле нужно разместить функцию 
    aload1	H = LV		                        // MBR contains index; Copy LV to H
    aload2	MDR = TOS =  MBRU + H			// Copy LV + index to H
    aload3	PC = PC + 1; fetch			
    aload4  MAR = SP = SP + 1; wr; goto Main1	 // Push var address onto stack
  9. [v79]  Разработайте микропрограмму для реализации  инструкции MAXAB.  Код для инструкции подберите самостоятельно.  Вместо лежащих на стеке значений ... , a , b на вершине стека должен быть b, если a<b, и a в противном случае (... , a < b ? b : a). 

◄ Лаб. Занятие 7.1. Обязательные задания для решения в классе.
Лаб. Занятие 8. Обязательные задания для решения в классе ►
Пропустить Навигация
Навигация
  • В начало

    • Страницы сайта

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

      • Осенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

          • Compiler Development

          • CMVSM

          • АЗПК

          • Frontend

          • ТеорЯП

          • Ruby Eng

          • EngCA&OS

          • CS201e

          • Компиляторы - лекции

          • CS202

          • CS211 C++ ENG

          • CS221 CA&OS

            • Общая информация

            • Материалы лабораторных работ

              • ЗаданиеЛаб. Занятие 1. Введение. Арифметика. Циклы LOOP

              • ЗаданиеЛаб. Занятие 2. Подготовка. Массивы. Условные и бе...

              • ЗаданиеЛаб. Занятие 2. Обязательные задания для решения в...

              • ЗаданиеЛаб. Занятие 3. Подготовка. Интерфейс системных вы...

              • ЗаданиеЛаб. Занятие 3. Обязательные задания для решения в...

              • СтраницаЛаб. Занятие 4. Подготовка. Подпрограммы (продолже...

              • ЗаданиеЛаб. Занятие 4. Обязательные задания для решения в...

              • ЗаданиеЛаб. Занятие 5. Подготовка. Работа с файлами

              • ЗаданиеЛаб. Занятие 5. Обязательные задания для решения в...

              • СтраницаЛаб. Занятие 6. Подготовка. Цепочечные инструкции

              • ЗаданиеЛаб. Занятие 6. Обязательные задания для решения в...

              • СтраницаЛаб. Занятие 7. Подготовка. Микропрограммирование

              • ФайлIJVM Assembly Language Specification

              • ФайлСправочник ассемблерных инструкций Java-машины

              • ЗаданиеЛаб. Занятие 7.1. Обязательные задания для решения...

              • ЗаданиеЛаб. Занятие 7.2. Обязательные задания для решения...

              • СтраницаЛаб. Занятие 8. Подготовка. Основы работы в UNIX-п...

              • ЗаданиеЛаб. Занятие 8. Обязательные задания для решения в...

              • СтраницаЛаб. Занятие 9. Подготовка. Написание сценариев

              • ЗаданиеЛаб. Занятие 9. Обязательные задания для решения в...

              • СтраницаЛаб. Занятие 10. Подготовка. Многопоточность

              • ЗаданиеЛаб. Занятие 10. Обязательные задания для решения ...

              • СтраницаЛаб. Занятие 11. Подготовка. Разделяемая память

              • ЗаданиеЛаб. Занятие 11. Обязательные задания для решения ...

              • СтраницаЛаб. Занятие 12. Подготовка. Работа с каналами

              • ЗаданиеЛаб. Занятие 12. Обязательные задания для решения ...

              • СтраницаЛаб. Занятие 13. Подготовка. Синхронизация потоков

              • ЗаданиеЛаб. Занятие 13. Обязательные задания для решения ...

              • ЗаданиеЛаб. Занятие 14. Обязательные задания для решения ...

            • Тестирование

            • Дистрибутивы и справочная информация

            • Доборы

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Весенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Воскресная компьютерная школа

        • Пользователь компьютера плюс

        • Пользователь прикладных программ

        • Программирование I ступень

        • Программирование II ступень

        • Программирование III ступень

        • Архив

      • Воскресная математическая школа

        • Открытое тестирование РНОМЦ и мехмата ЮФУ - 2025

        • Олимпиадная математическая школа

        • Повышение квалификации

        • Доступная математика

        • Лаборатория математического онлайн-образования мех...

        • Осенняя универсиада

        • Научно-практическая конференция

        • ВМШ

          • ВМШ - 24

        • Летняя олимпиадная математическая школа РНОМЦ и ме...

      • Государственная итоговая аттестация

      • Дополнительное образование

      • Олимпиады

      • Видеолекции

      • Разное

      • Архив курсов

      • Заочная школа мехмата ЮФУ

Служба поддержки сайта
Вы используете гостевой доступ (Вход)
CS221 CA&OS
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика