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

Да, не запускается с ошибкой “AMD-V is disabled in the BIOS (or by the host OS) (VERR_SVM_DISABLED).” Программа SecurAble пишет “Hardware Virtualization - Yes”. Принесу ноутбук тогда на практику

1 лайк

Сегодня, на лекции я обещала дать ссылку на научно-популярные материалы по тому, как была устроена немецкая шифровальная машина Энигма. Вот - часть первая с русскими субтитрами. Поскольку эта часть стала невероятно популярной (более 3 млн. просмотров), сотрудники Кембриджского университета опубликовали вторую часть фильма. Она пересекается с первой, но содержит и новые материалы, в частности, о том, как был “взломан” код Энигмы. Русских субтитров во второй части нет, так что есть повод “подтянуть” английский. А заодно полезно будет посмотреть упомянутый художественный фильм “Игра в имитацию” (трейлер)

И раз уж обещала, то в твиттере https://twitter.com/svalazar

Второй добор для студентов бывшего 2-го курса направления ПМИ по части «Архитектура компьютера» дисциплины “Архитектура компьютера и парадигмы программирования” будет проходить 14-ого сентября 2018 года, в пятницу, с 8:00 до 9:45, в компьютерном классе 118 в здании мехмата. На добор могут прийти те, кто набрал 31 балл и больше. У них есть шанс получить зачет (60 баллов). Те, кто в семестре набрал меньше 31-го балла, если строго следовать Положению о БРС, должны повторно послушать курс. На любой из процедур добора можно будет написать 1 контрольную работу по теории (лекции двух модулей вместе). В качестве вопросов будут также задания по темам, относящимся к лабораторным занятия. Максимальная оценка за контрольную - 29 баллов. Время ограничено - не более 100 мин и не позднее 9:45 14-го сентября. В связи с ограничением времени задачи на сложные, продолжительные по времени, вычисления из теста будут удалены.

Ответ на вопрос, возникший на сегодняшней лекции, есть в файле, фрагмент которого был приведён на слайде. Число в круглых скобках в таблице CORE INSTRUCTION SET - это сноска, расшифровка сносок приведена ниже, над таблицей BASIC INSTRUCTION FORMATS. Как я и говорила на лекции у всех регистровых инструкций OPCODE равен 0 и собственно выполняемое действие описывается полем FUNCT. У I и J инструкций выполняемое действие определяется через OPCODE. Он и приведён в таблице CORE INSTRUCTION SET. Если вам не нравится английский вариант таблицы, то русский её аналог смотрите в Приложении B в книге “Цифровая схемотехника и архитектура компьютера”

При работе с файлами возникает следующая проблема: при записи содержимое не отображается в ожидаемом виде. Буквально пишу банальный код и получаю это! PUSH 2 PUSH buf PUSH CX PUSH _WRITE %D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9 … даже обидно как-то.

А пришлите-ка мне полный текст Вашей программы.

@yuri, главное как можно быстрее. Пока я ещё за компьютером :sunglasses:

test2.s (914 Байты)

Код

	PUSH	2
	PUSH	buf
	PUSH	CX
	PUSH	_WRITE
	SYS

означает: запиши два байта взятых по адресу buf в файл. По адресу buf у вас лежит слово 2, что в байтах выглядит как 20 (little-endian). Соответственно, в файл попадает 20. Что же тут неожиданного…

2 лайка

@Ulysses, спасибо. Думаю @yuri это помогло на сегодняшнем лабораторном занятии. Никак не могу привыкнуть, что студенты готовятся к занятиям по ночам :man_technologist:

1 лайк

Все, разобрался! Думал, что такое представление связано с ошибкой записи. Ожидал получить что -то типа:

%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B91

А использовать $ hexdump для проверки - подумал что это для слабаков. Спасибо, огромное))

2 лайка

Для текстовой двоечки нужно, чтобы buf содержал строковые данные (buf: .ASCIZ "2")… ну и достаточно скопировать всего один байт (PUSH 1 вместо PUSH 2).

1 лайк

Для выполнения лабораторной работы по микропрограммированию нужен образ виртуальной машины с Java-машиной. Я подготовила Вам такой образ и добавила раздел с описанием того, как его установить. Читайте “Образ виртуальной машины с Java

Такой вопрос, как добавить символ новой строки в строковую переменную? Нашел кучу ответов на stackoverflow, но ни один из них не работает. https://stackoverflow.com/questions/9402961/adding-newline-characters-to-unix-shell-variables

Может это особенность нашей версии Lubuntu :thinking:

Пример: cценарий, удаляющий пустые строки из указанного файла.

script.sh (230 Байты)

Заранее благодарю за ответ.

@yuri, действительно, прочитала об отличиях версий bash. В частности, они относятся и к строкам. В Вашем скрипте я чуточку подправила текст. В моей версии bash так всё работает. script.sh (258 Байты)

Работает :scream:

Почти потерял надежду, думал, что через конвейеры нужно делать. Надо символ $"\n" в рамку поставить. Спасибо.

1 лайк

@yuri, но там ведь ещё надо убрать последний “перевод строки”. Он лишний! Заметили?

Ну тогда так:

script.sh (270 Байты)

1 лайк

@yuri, вот теперь всё в точности по заданию! Молодец!