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

Форум в поддержку курса.

Ссылка на курс в Мудле.

1 лайк

Вот пара ссылок по теме последней лекции.

Вопрос: в “Занятии 3. Интерфейс системных вызовов. Простейшие подпрограммы” в доп. задании 2 необходимо написать программу печати массива, длина которого передается в “словах”. Что значит “словах”? Строка? Или кол-во байт типа WORD? Или просто кол-во элементов?

Количество элементов. Память под элементы выделяется командой .WORD (англ. «слово»), и по ширине они совпадают с машинным словом процессора Intel 8088 (16 бит) — об этом всё время говорится на лекциях. Видимо, зря :frowning:

1 лайк

Не зря! Просто не ожидал увидеть “слово” тут… Спасибо за разъяснения!

P.S. это нормально, что у нас 2 “Домашних задания 2”?

Спасибо за указание — поправил.

Опубликовано ДЗ №7 по лекциям. ДЗ по практике тоже должно открыться, у кого следует.

Напоминаю, что на грядущей неделе проходит контрольная по лекциям: на ПМИ в среду утром, на ФИИТ — в субботу утром. Прошу старост напомнить об этом одногруппникам.

А у кого следует?) У меня вот не открылось… Или для этого нужно что-то сделать?

О, спасибо. Теперь должно.

И Вам спасибо) У меня вопрос. Можно ли портить регистры (и какие?) при использовании pascal calling convention? В Википедии и по первым ссылкам Гугла про это ничего не написано)

Если ничего не сказано дополнительно, можно считать, что сохраняются только BP, SI, DI.

All calling conventions in the 16-bit world preserve registers BP, SI, DI (others scratch) and put the return value in DX:AX or AX, as appropriate for size.

Почему мы тогда на лабораторной сохраняли BX?) Или это следствие

non-uniformity of the x86 instruction set

?

Там имеется ввиду минимум. Отдельные CC добавляют сохраняемые регистры… Хотя при составлении я ориентировался на cdecl современный, то есть 32-битный.

Нужно понимать, что не так важно конкретное определение CC, как безоговорочная её реализация в вызывающем и вызываемом коде.

Хорошо, я понял)

Это тоже понятно) Просто когда на первом курсе запрещают использовать break и goto, а на втором - писать два умножения вместо одного, начинаешь сомневаться в том, что что-то не важно :grinning:

Спасибо)

Неутешительные (особенно для ФИИТ) результаты первой контрольной. Надеюсь, будут сделаны выводы ко второй контрольной, которая пройдёт в конце мая.

ПМИ:

ФИИТ:

Апелляции приветствуются и принимаются в течение двух недель.

Я понимаю, что “набор инструкций”, ISA или что-то подобное было бы уместнее, но почему такой вариант не засчитывается? Ведь он тоже был в лекциях.

Артем Михайлович, можно узнать ответ на вопрос с заочной олимпиады для поступления в магистратуру?

При косвенном обращении к памяти с помощью регистра (E)BX в качестве сегментной части адреса берётся значение

a. Сегмента данных.

b. Сегмента стека.

c. Дополнительного сегмента.

d. Сегмента кода.

Я тоже ответил машинный код. В тесте(если навести на само поле ответа) указанный верный ответ-“Операционной системы”. Возможно он был бы точнее. Хотя машинный код кажется самым очевидным и верным, на мой взгляд.

Без проблем: сегмента данных. Ответ на это есть в книжке Зубкова по ассемблеру (пункт 2.2.4).

Для этого и нужен процесс апелляции. Я верну этот балл.

Там несколько вариантов принималось. ОС добавлена потому, что так сказано у Таненбаума. На лекциях мы стараемся не учитывать ОС по понятным причинам…

2 лайка

Спасибо за разъяснения)