Pull to refresh

Comments 20

Такое облегчение, что я, кажется, «пересидел» x86, и с красивой, стройной и логичной системы команд z80 можно перейти на такую же стройную систему команд ARM :)


(Хотя тут тоже MOV, вместо LD :)

У х86 тоже весьма неплохая система команд, на мой вкус, стройнее и логичнее ARM.
Z80, понятно, что отец родной.

Интересно, сколько лет должно пройти, чтобы начинающих программистов перестали учить программированию под прерывания BIOS, который сейчас и найти где-либо не в виде CSM проблематично.

Автор же пишет под старый добрый x86, а там UEFI даже рядом не пробегал. Так что использование BIOS вполне оправдано.

Я с этим совершенно не спорю. Я говорю лишь о том, что такие туториалы немного неактуальны, поэтому непонятно, на кого ориентировался изначальный автор.


На опытных системщиков? Так тут нет ничего нового, можно с тем же успехом в тысячный раз рассказать о A20 и тонкостях unreal mode, не сообщив при этом ни капли новой информации.


На начинающих системщиков? А как они смогут применить знания о программировании с использованием прерываний BIOS, если в современных платформах и BIOS-то нет?


Системщик, реализующий сейчас загрузчик для современной операционной системы, не столкнется ни с чем вышеописанным.

Вы слишком остро реагируете на то, чем автор по доброте душевной хотел просто поделиться

Рискую ошибиться, но есть достаточно много встроенных систем базирующихся на х86 а не RISC процессорах, и использующие BIOS на борту, так что думаю как минимум в ближайшую 10 летку, а то более такие знания будут совсем не лишними...

а вернуть первую часть в жизнь можно?
Для желающих поиграться с более современной низкоуровневой загрузкой, но не хотящих изучать кучу тонкостей EFI, рекомендую написать модуль к grub. Это не так сложно, как кажется, будет доступ к базовым железкам (диски, консоль, usb) и полная свобода действий в нулевом кольце защищенного режима. Более того, модуль может даже использовать графику.
Флоппики следует заменить на флешку — их поддержку даже в линуксе выкинули. В остальном статья норм.
Когда мы указываем 16-битный адрес, ЦПУ автоматически вычисляет начальный адрес соответствующего сегмента. Тем не менее именно программист должен указывать начальный адрес каждого сегмента, особенно при написании такой программы, как загрузчик.

На самом деле, немного не точное описание сегментации. Вся память линейна, а сегменты — лишь участки в ней. Значения сегментов хранятся в регистрах CS (код), DS (дата), SS (стек) и ES (спец-сегмент). Когда программист указывает адрес, например DS:ax, ЦПУ не вычисляет начальный адрес сегмента, а просто прибавляет к начальному адресу DS значение ax.
Давно это было, но поправьте, если ошибаюсь: разве прямо прибавляет? Не вычисляте 20-битный адрес, сдвигая сегмент влево на 4, а уже потом прибавляет смещение?
Нагуглил вот это. Если процессор находится в реальном режиме, то все так и есть. К сожалению, с этим режимом дел не имел, когда пользовался отладчиком в DOSBox-е, он работает в защищенном режиме.
UFO just landed and posted this here
Sign up to leave a comment.