Search
Write a publication
Pull to refresh
9
26
Алексей Толстопятов @art2021

student 21 y.0

Send message

Приветствую! Спасибо за замечания. Скоро обновлю статью. Заодно комментари и в коде поставлю. (внезапно пропали при переносе сюда)

Да, они намеренно там есть. Просто хотел поделиться…

Спасибо большое! Теперь к делу:

Что это такое?

Согласно описанию разметки ОЗУ в документах, у MS-DOS есть несколько разделов в ОЗУ

взял из своей первой статьи

Ещё раз спасибо за такую справку. Готовлю исправленную статью

Я помню, что в исходниках какого-то Win16 приложения был комментарий про это. Дословно не передам, но мысль была такова:

ZM is very old DOS 1.0 sign

Я не стал освещать этот момент, потому что, уж об этом нюансе точно ничего нормального не найдешь.

Доброго времени суток! Благодарю за отзыв. Я пересмотрю всё и исправлюсь. Про OS/360 однозначно буду читать сегодня.

Это не ABI, это API. API -- набор системных сервисов, которые ОС предоставляет прикладным программам, откуда и его название. ABI же -- это, по сути, соглашения о связях между подпрограммами (через какие регистры передаются параметры и всё такое).

Я сколько понимаю, (почему я писал именно про binary interface, а не API):
Дело приходится иметь с уже собранными компонентами системы или внешними модулями, соответственно и вызов функции (или прыжок на метку, как это раньше было?) подразумевает под собой двоичный контекст.

API это условно список функций или служб, которые предоставляет программа для публичного использования.

После компоновки и сборки, программа содержит этот самый список функций, но чтобы его обозначить, надо явно говорить компилятору, что функции будут использоваться во-вне. Итого, как я понимаю, все-таки используется ABI компонента, поскольку это те самые явно отмеченные функции.

Так же сколько я понимаю, Соглашения о вызовах говорят "Что надо делать" до/после вызова функции, поэтому. Но используют их вроде бы уже в модуле, который импортирует что-то извне? Приношу извинения, если я не прав - помогите.

Точка входа в COM-программу -- не "везде", а строго фиксированная -- её первый же байт. Максимальный размер COM-программы -- не 64 Кбайта, а 64 Кбайта минус 256 байт (для PSP). И, кстати, это не "команда", это именно COM-файл или COM-программа.
А вот у EXE-программы точка входа как раз не фиксированная, а может находиться в произвольном месте, поскольку её положение указывается в заголовке файла или в иной структуре, уж не помню точно.

Я на эту тему находил много интересных разногласий, и сам не до конца понимаю мысль.
Есть материалы, где говорится, что программа-COM может загружаться с любого места.
(например https://habr.com/ru/companies/timeweb/articles/880586/)

Вполне уверен, что я мог ошибиться

Вообще-то, эти указатели называются ближними, а не "недалёкими". А far pointers -- дальние указатели.

Я исправлю моменты в статье, чтобы не отлынивать от терминологии, спасибо.

Так-то весь интерес правда с NTVDM появился. Я просто об этом в статье ничего не указал, и в конце лучше бы не писал про это

Спасибо! Постараюсь в следующий раз при вычитке замечать такое

Спасибо, буду разбираться дальше. Про оверлеи в следующий раз будет написано однозначно.

очень рад видеть такие комментарии. Это не является духотой. Я учту это и буду разбираться дальше

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Developer, Backend Developer
C#
WPF
.NET Core
OOP
.NET
Rust
C
System Programming
Reverse development