Реверс-инжиниринг микропроцессора Intel 8086

Автор оригинала: Ken Shirriff
  • Перевод
В июне 1978 года был представлен один из самых влиятельных чипов в полупроводниковой индустрии – Intel 8086. Он положил начало архитектуре х86, которая до сих пор доминирует сегодня в настольных и серверных вычислениях. Давайте заглянем вглубь чипа и разберём внутреннее строение и архитектурные особенности этого микропроцессора.

image

На фото ниже изображён кристалл процессора Intel 8086. На фото виден металлический слой чипа, скрывающий кремний под ним. По краям матрицы расположены тонкие провода, обеспечивающие соединение между площадками на чипе и внешними контактами. Силовые и заземляющие площадки имеют по два соединительных провода для поддержания более высокого тока. Микросхема была очень сложной для своего времени и содержала 29 тысяч транзисторов. Обратите внимание на маркировку кристалла в самом низу – на ней указан логотип Intel, модель процессора и год изготовления микросхемы.

image
Кристалл процессора Intel 8086

image

Для исследования кристалла необходимо аккуратно препарировать процессор. Большинство интегральных схем упакованы в эпоксидную смолу, поэтому для растворения корпуса необходимы опасные кислоты. Чтобы избежать повреждения кристалла был использован 8086 с керамическим корпусом, крышка которого легко открывается, обнажая бесстыдную красоту всех его внутренностей.

image

На фотографии видна кремниевая матрица, расположенная в центре. Матрица подключена к металлическим контактами микросхемы с помощью крошечных соединительных проводов. Это 40-контактный DIP-корпус, стандартный форм-фактор для микропроцессоров того времени. Обратите внимание, что сама кремниевая матрица занимает небольшую часть размера корпуса.
С помощью металлургического микроскопа были сделаны десятки фотографий матрицы чипа, сшитые в одно изображение высокого разрешения с помощью программы Hugin.

Ниже показана фотография кристалла, на которой были удалены слои металла и поликремния, обнажая лежащий под ними кремний с его 29 000 транзисторов. На чипе обозначены основные функциональные блоки, основанные на реверс-инжиниринге Кена Ширриффа. Левая сторона чипа содержит 16-битный канал передачи данных: регистры чипа и арифметические схемы. Сумматор и верхние регистры образуют модуль интерфейса шины, который взаимодействует с внешней памятью, в то время как нижние регистры и АЛУ образуют исполнительный блок, который обрабатывает данные. Правая сторона чипа имеет схему управления и декодирования команд, а также микрокод ROM, который управляет каждой инструкцией.

image
Основные функциональные блоки 8086

Одной из особенностей 8086 была предварительная выборка инструкций, которая улучшает производительность, извлекая инструкции из памяти до того, как они будут использованы. Это было реализовано блоком интерфейса шины в левом верхнем углу, который обращался к внешней памяти. Верхние регистры включают в себя сегментные регистры 8086, которые обеспечивают доступ к бОльшему адресному пространству, чем 64 килобайта, разрешенные 16-битным адресом. Для каждого доступа к памяти были добавлены сегментный регистр и смещение памяти, чтобы сформировать конечный адрес памяти. 8086 вместо АЛУ использовал отдельный сумматор для вычисления адресов памяти, что повышало его производительность. Верхние регистры также включают шесть байт буфера предварительной выборки команд и счётчик команд.

В левом нижнем углу микросхемы находится исполнительный блок, который выполняет операции с данными. Нижние регистры включают в себя регистры общего назначения и индексные регистры, такие как указатель стека. 16-разрядный АЛУ выполняет арифметические операции (сложение и вычитание), булевы логические операции и сдвиги. АЛУ не осуществляет умножение или деление; эти операции выполняются через последовательность сдвигов и сложения/вычитания, поэтому они относительно медленны.

Микрокод


Одной из самых сложных частей компьютерного проектирования является создание управляющей логики, которая диктует каждой части процессора что делать, чтобы выполнить определенную команду. В 1951 году Морису Уилксу пришла в голову идея микрокода: вместо построения управляющей логики из сложных схем логических элементов, управляющая логика может быть заменена специальным кодом – микрокодом. Чтобы выполнить инструкцию, компьютер выполняет несколько простых микроинструкций, которые задаются микрокодом. С помощью микрокода построение управляющей логики процессора становится задачей программирования, а не задачей логического проектирования.

Микрокод был обычным явлением в мэйнфреймах 60-х годов, но ранние микропроцессоры, такие как 6502 и Z-80, не использовали микрокод, поскольку не имели места для его хранения. Однако в более поздних процессорах, таких как 8086 и 68000, применяли микрокод, используя преимущество увеличения плотности чипов. Это позволило 8086 реализовать сложные инструкции (такие как умножение и копирование строк), без усложнения схемы. Недостатком было то, что микрокод занимал бОльшую часть площади кристалла: схема микрокода показана в правом нижнем углу фотографии матрицы.

image

На фотографии выше показана часть микрокода ПЗУ. Под микроскопом видно содержимое микрокода; биты могут быть считаны в зависимости от наличия или отсутствия транзисторов в каждой позиции. ПЗУ состоит из 512 микроинструкций, каждая шириной в 21 бит. Каждая микроинструкция определяет перемещение данных между источником и получателем. Она также определяет микрооперацию, которая может быть командой перехода, операцией АЛУ, операцией с памятью, вызовом подпрограммы микрокода или его учётом. Микрокод довольно эффективен; простые инструкции, такие как инкреме́нт или декреме́нт (увеличивающие или уменьшающие переменные соответственно), состоят из двух микроинструкций, в то время как более сложная команда копирования строки реализована при помощи восьми микроинструкций.

История


Путь к 8086-му был не таким прямым и спланированным как можно было ожидать. Его самым ранним предком был Datapoint 2200, настольный компьютер/терминал, выпущенный в июне 1970 года. Он появился до того, как термин «микропроцессор» вошёл в обиход и в его основе лежала 8-битная плата, полная отдельных интегральных ТТЛ-схем. Параллельно Datapoint вёл переговоры с компаниями Intel и Texas Instruments о замене платы едиными чипом, включающим в себя все компоненты. Копируя архитектуру Datapoint 2200, Texas Instruments создала процессор TMX 1795 (в 1971-м), а Intel – процессор 8008 (в 1972-м).

image

Однако Datapoint отклонила эти процессоры, что стало роковым решением. Хотя TI не смогла найти покупателя на TMX 1795 и отказалась от него, Intel решила вывести 8008 на массовый рынок и следом за 8008 последовали 8080 и 8085.

image
Datapoint 2200

В 1975 году следующим крупным планом Intel стал процессор 8800, который должен был стать главной архитектурой компании в 80-х годах. Этот процессор был назван «микромейнфреймом» из-за его планируемой высокой производительности. Он должен был иметь совершенно новый набор инструкций, предназначенный для языков программирования высокого уровня, таких как Ада и поддерживать объектно-ориентированное программирование и «сборку мусора» на аппаратном уровне. К сожалению, а может и к счастью, этот чип был слишком амбициозным для того времени и сильно отставал от графика. В конечно итоге он был выпущен в 1981 году как iAPX 432 с разочаровывающими показателями и коммерчески провалился.

Поскольку iAPX 432 отставал от графика, Intel решила в 1975 году, что им нужен простой процессор-затычка для продажи, пока iAPX 432 не будет готов. Intel быстро разработала 16-разрядный 8086-ой, совместимый с 8080-м, выпустив его в 1978 году. У 8086 был большой успех из-за появления IBM PC в 1981-м. К 1983-му году IBM PC был самым продаваемым компьютером и стал стандартом для персональных компьютеров. В IBM PC использовался удешевленный вариант 8086 – 8088 с 8-битной шиной данных. Успех IBM PC сделал архитектуру 8086 стандартом в отрасли, который всё ещё сохраняется 42 года спустя.

IBM PC AT 1984-го года обновился до совместимого, но более мощного процессора 80286. В 1985 году с выходом 80386 линейка х86 перешла на 32-битные вычисления, а затем на 64-битные в 2003 году с выходом AMD64 и первых процессоров Athlon 64. Архитектура х86 до сих пор расширяется множеством дополнительных инструкций, таких как AVX-512, но даже несмотря на все эти изменения, х86 сохраняет совместимость с оригинальным 8086.

Транзисторы


Чип 8086 был построен с использованием транзисторов типа N-МОП. Транзистор можно рассматривать в качестве переключателя, управляющим током между двумя областями, называемыми стоком и истоком. Эти транзисторы построены путём легирования областей кремниевой подложки примесями для создания «диффузионных» областей, обладающих различными электрическими свойствами. Транзистор активируется затвором, изготовленным из особого типа кремния, называемого поликремнием, расположенным над кремниевой подложкой. Транзисторы соединены между собой металлическим слоем сверху, образуя цельную интегральную схему. Современные процессоры могут иметь более десятка металлических слоёв, в то время как 8086 имел всего один.

image
Структура МОП-транзистора

На фотографии кремния ниже крупным планом показаны некоторые транзисторы из АЛУ. Легированный проводящий кремний имеет тёмно-фиолетовый цвет. Белые полосы – это те места, где поликремниевые линии пересекают кремний, образуя затвор транзистора. Можно насчитать 23 транзистора, образующих 7 вентилей. Транзисторы имеют сложную форму для более эффективного использования. Кроме того, транзисторы имеют разные размеры для обеспечения высокой мощности там, где это необходимо. Обратите внимание, что транзисторы, расположенные рядом друг с другом, могут совместно использовать сток или исток. Круги – это соединения между слоем кремния и металлом, в то время как маленькие квадраты – это соединения между слоем кремния и поликремнием.

image
Фото некоторых транзисторов 8086. На снимке были удалены слои металла и поликремния

Заключение


8086 был изначально задуман как процессор-затычка во время, пока Intel не выпустит свой флагманский чип iAPX 432, и был потомком процессора, построенного из платы, полной ТТЛ-микросхем. Но с этого скромного начала архитектура х86 неожиданно оказалась доминирующей в настольных и серверных вычислениях до настоящего времени.

Комментарии 185

    0
    Глядя на размеры области АЛУ и регистров нельзя не задуматься о том, что для тього, чтобы сделать этот процессор 32-разрядным потребовалость бы увеличить площадь кристалла всего на 15..20%. И тогда история архитектуры 8086 была бы другой, без ограничения в 640кБайт памяти, и многого другого.
      +4
      Вы ошибаетесь. Даже у 8086 не было шансов без его варианта 8088 с 8 битной шиной, для удешевления. IBM выбрал 8088 за дешевизну дизайна 8 битной платы.
      Так что если бы не 8088, то скорее выбрали бы для IBM-ПК 16 битную Моторолу 68000.
        –1
        Ничто не мешало сделать и вариант 32-разрядного процессора с 8-битной шиной памяти, и с 16-битной. Преимущество 8088 — в использовании более дешевой уже массово выпускаемой на тот момент 8-битной периферии. А Motorolla 68000 — это как раз 32-разрядный процессор с 16-битной внешней шиной. Преимущество 8086 перед 68000 — обратную совместимостб с 8080 (с использованием транслятора машинного кода) — можно было сохранить и в 32-разрядной версии.
          0
          32 битные процессоры проигрывают 8 и 16 битным по плотности кода.
          Почитайте дальше комментарии по поводу стоимости памяти. Первые IBM PC
          стоили около 1000 юсд (около 4000 сегодня) что было на грани возможности среднего класса.
          Так что у IBM были веские причины выбрать именно 8088. Или это сделала бы другая компания и мы знали бы персоналки под другим именем. Успех пришел к IBM именно в результате этого выбора, ну и плюс открытая архитектура IBM-PC.
            0
            32 битные процессоры проигрывают 8 и 16 битным по плотности кода
            Некоторые 32-битные процессоры проигрывают, за счёт хранения в коде 32-битных адресов. Но система команд 8086 очень гибкая в плане разрядности констант, думаю, и в этом варианте размер кода сущестенно не увеличился бы.
            Насчёт памяти — 32-разрядность изначально была нужна не столько для увеличения размера адресуемой памяти, сколько для устранения ограничений, вызванных её разбивкой на сегменты с максимальным объёмом 64кБайта. Основная причина успеха IBM-PC — открытая архитектура.
              0
              Все 32 разрядные проигрывают. И у истории нет сослагательного наклонения.
                +1
                Зато из истории можно извлекать уроки — костыли не стоит применять без крайней необходимости даже во временных решениях, потому что нет ничего более постоянного, чем временное.
                  0
                  точно, я не нахожу сейчас такой фразы, но в 90е была популярной —
                  винтел это 32 разрядный патч на 16 разрядную графическую среду для 8 битной операционной системы, написанной для 4х разрядного калькулятора.
                  расшифровка 32 — Win95, 16 — Ядро гуев в то время, 8 — CP\M, предок MSDOS и прочих, 4х — 4004,
                  возможное дополнение с расшифровкой — 64 разрядное расширение (2003 и более поздние варианты)
                  вот такой собор, собранный из невозможного количества костылей и прочих кривостей.
                  последней из громких кривостей, это когда интел не смог нормально реализовать AMD64 код и под него изменили данное расширение, ибо он слишком большой чтобы лопнуть. поздние процессоры и у амд трактуют код как интел. =)
                  всё для совместимости…
                    –1
                    32 разрядный патч на 16 разрядную графическую среду
                    это скорее не про Windows 95, а про Win32s.
                    16 — Ядро гуев в то время
                    У Windows 95 было полностью 32-разрядное ядро, 16-битный код использовался только в специфических случаях и на небольших участках .
                    4х — 4004
                    Да и для Intel 4004 не было ОС (и уж тем более CP/M), под него писали bare metal.
                      0
                      И ведь плюсует это кто-то.

                      У Windows 95 было полностью 32-разрядное ядро, 16-битный код использовался только в специфических случаях и на небольших участках
                      Вот только чушь не надо пороть? Ей больно. То, что MS-DOS код в Windows 95 почти не использовался — это правда. Но архитектурно Windows 95 была развитием Window 3.1. И весь GUI там был 16-битный и куча ограничений — оттуда же.

                      Ни о каком 32-битном ядре никто никогда не заикался, это даже не смешно.

                      это скорее не про Windows 95, а про Win32s.
                      Архитектурно — там разницы почти нет. Да, в Win32s были проблемы с многопоточностью, а в Windows 95 их починили… но ровно по модулю того, что вы эту чудесную многопоточность имеете пока не общаетесь с GUI. Как только вам нужна графика… всё, переход в 16-битный режим, кооперативная многозадачность и все вот эти вот прелести…
                        0
                        И весь GUI там был 16-битный
                        Как только вам нужна графика… всё, переход в 16-битный режим, кооперативная многозадачность

                        Можно пруфы?
                          +1
                          Там вообще-то ссылка на Wikipedia была.

                          Но если в Wikipedia вы не верите, то вам вам ссылка на Раймонда. Он, как человек, сотворивший знаменитый Blue Screen of Death наверное ещё кое-что про Windows 95 помнит…

                          Но вообще забавно: тот факт, что Windows 95 — это, в сущности, 16-битная Windows 4.0 к которой «сбоку прикручена» 32-битная подсистема настолько «всем известен», настолько «незыблем», что… ни в каких книгах он даже не упоминается. Ну ведь действительно: не будет же кто-то, в здравом уме и твёрдой памяти, писать про то, что небо — так-то, в принципе, голубое — в книжке по астрономии?

                          Ещё найти главу, где-нибудь посредине книги, объясняющую этот факт — вы сможете, но само упоминание такой очевидности отдельно… нелепица ведь полная!
                            +1
                            Там вообще-то ссылка на Wikipedia была.

                            И по ссылке на Wikipedia — ни одного упоминания «16-битных GUI и графики». Потому я и спросил.

                            Но если в Wikipedia вы не верите, то вам вам ссылка на Раймонда.

                            Там он пишет про прототип, существовавший за несколько лет до выхода Windows 95. В другом месте он пишет, что когда проект уже назывался «Windows 95», он состоял из беспорядочной мешанины 16-битного и 32-битного кода.
                              +1
                              В другом месте он пишет, что когда проект уже назывался «Windows 95», он состоял из беспорядочной мешанины 16-битного и 32-битного кода.
                              Вот только там ничего про GUI.

                              Ну что за детский сад, честное слово. Всем известна история про то, что Pentium Pro был непригоден для использования с Windows 95, потому что он «тормозил на 16-битном коде» (на самом деле нет)… а откуда там взялось столько 16-битного кода, что образовались томоза?

                              Вот как раз в GDI они и сидели. А байки про тормоза с 16-битным кодом… это городская легенда. Тормоза случались при активном использовании кода, написанного руками с ah/ch/dh/bh. Ибо разработчики Pentium Pro не предполагали, что их будут использовать вперемешку с al/cl/dl/bl… компиляторы это и в 16-битном мире не делали, а вот программисты…

                              Вот тут чётко и недвусмысленно об этом написано: Nearly all of GDI was written in assembly language in versions of Windows up to and including the Windows 95 family.

                              А вот тут — про трюки, которые из-за этого приходилось применять.

                              Да, в Windows 95 был 32-битный драйвер работы с диском (только он ещё в Windows 3.11 был 32-битным), да, там было много разного другого 32-битного кода… но GDI — оставался 16-битным до конца. В USER было некоторое количество 32-битных байпассов, но достаточно было загрузить хотя бы одну 16-битную программу и усё: лафа кончалась.

                              В общем пресловутый «32 разрядный патч на 16 разрядную графическую среду далее по тексту» — это очень ёмкое и точное описание того, что там творилось.
                                0
                                Вот тут чётко и недвусмысленно об этом написано: Nearly all of GDI was written in assembly language in versions of Windows up to and including the Windows 95 family.

                                «Написано на ассемблере» не означает «было 16-битным». Чуть выше процитированного вами куска он пишет, что в GDI esp использовался для арифметики, потому что обычных 32-битных регистров не хватило.
                                  +1
                                  Господи, куда я попал. Только не говорите мне, что вы не в курсе того, что в 16-битном коде в x86 можно использовать 32-битные регистры и того, что для Turbo Pascal 7 были патчи, которые их в чистом MS-DOS использовали для ускорения вычислений?

                                  Ну так скачайте, убедитесь, блин. Файлик называется 386PATCH.ZIP.
                                    +1
                                    Господи, куда я попал.

                                    В компанию людей, которые чуть лучше вас знают архитектуру Windows. Не стесняйтесь, не надо ;)
                                    что в 16-битном коде в x86 можно использовать 32-битные регистры

                                    Как вам сказать помягче. Фраза «в 16-битном коде использовать 32-битные регистры» — это примерно как «употреблять водку, но не алкоголь». Если в коде используются 32-битные регистры, он уже 32-битный. Даже если в нём используются ещё и 16-битные.
                                      +1
                                      Если в коде используются 32-битные регистры, он уже 32-битный. Даже если в нём используются ещё и 16-битные.
                                      Всё понял. MS DOS 1.0 — это у нас, нонче, 32-битная OS. Ну там же можно употребять 32-битные регистры.

                                      И GW-BASIC — тоже 32-битный язык. Ведь через CALL вы можете в программу 32-битные вычисления вставить…

                                      Знаете — с такими подходами что-либо обсуждать бессмысленно. Особенно с учётом того, что вы даже элементарных вещей про устройство Windows не знаете.

                                      С таким пафосом пороть чушь… это, знаете ли, не каждому дано.
                                        +1
                                        Всё понял.

                                        Да ничего вы не поняли. У вас часть мозга, отвечающая за это самое «поняли», давно заржавела, вы живёте только теми понятиями, которые заложили в себя тогда, когда ещё могли воспринимать информацию. Без обид, но это так. Сейчас же вы хоть и создаёте видимость человека, который обрабатывает информацию, все равно это только имитация. Факты, которые подходят под ваши догмы, вы отмечаете, которые не подходят, или игнорируете, или перекручиваете с ног на голову. И при этом вы уверены, что вы правы, а остальные просто чего-то там не знают, не понимают. И знаете, самое неприятное для вас, что дальше будет только хуже.
                                        И GW-BASIC — тоже 32-битный язык. Ведь через CALL вы можете в программу 32-битные вычисления вставить…

                                        Да, вы можете скомпоновать 32-битный код с 16-битной программой, и да, вы можете его запустить в MS DOS 1.0. Да, при этом DOS останется 16-битной, а 32-битный код останется 32-битным кодом, который скомпонован с 16-битным. Он не превратится в 16-битный только от того, что вы его вызываете из старой 16-битной ОС.
                                          0
                                          Сейчас же вы хоть и создаёте видимость человека, который обрабатывает информацию, все равно это только имитация. Факты, которые подходят под ваши догмы, вы отмечаете, которые не подходят, или игнорируете, или перекручиваете с ног на голову. И при этом вы уверены, что вы правы, а остальные просто чего-то там не знают, не понимают. И знаете, самое неприятное для вас, что дальше будет только хуже.
                                          Это уже вас в философию повело. Да, я знаю — умение рассуждать логически и нежеление одновременно признавать два противоречих друг друг факта за истину — сегодня не в моде. закон исключённого третьего эффективным эффектам вроде вас — не нужен.

                                          Но я вполне нормально живу в мире, где действует логика, и колебаться вместе с линией партии мне как-то без надобности.

                                          Если для вас любой код, куда 0x66 вписали, внезапно становится 32-битным — то у вас и MS-DOS будет 32-битной (там же HIMEM есть и EMM386!) и все версии Windows, начиная с Windows 386… вот только смысла в такой классификации — нуль.

                                          Для меня, извините, код — 32х битный, когда он работает в 32-битном режиме процессора и 64-битный — когда в 64-битном.

                                          Он не превратится в 16-битный только от того, что вы его вызываете из старой 16-битной ОС.
                                          Нет, конечно. Он превратится в 16-битный, потому что он, всё равно, продолжает использоваться в 16-битном режиме процессора. И Unreal mode-код — он тоже 16-битный. Именно потому что 32-битный адрес данных вы там использовать можете, а 32-битный адрес кода — нет.

                                          P.S. Вот интересно — куда вы запишите x32 код? Он у вас будет 32-битным, если программа тип long не использует и 64-битным, если использует? Вам не кажется что это… немножко бред? Или не кажется? Нет, наверное если по-настоящему овладеть двоемыслием, как вы, то проблем не будет. Но… зачем?
                                            +1
                                            Для меня, извините, код — 32х битный, когда он работает в 32-битном режиме процессора

                                            Вы знаете, я просто восхищён вашей глубиной знаний архитектуры х86. Глубиной в том смысле, что дно недалеко. И объективно говоря, нет ничего в этом плохого, ну не знает человек технические подробности работы процессора, ну и фиг с ним. Но проблема в том, что вы же уверены, что знаете, и воинствуете с этим, раздавая налево и направо «умные» ремарки, грубости и так далее.
                                            А попробуйте-ка для начала найти, где у процессора включается этот некий 32-битный режим, и чем он отличается от 16-битного :)
                                              0
                                              А попробуйте-ка для начала найти, где у процессора включается этот некий 32-битный режим, и чем он отличается от 16-битного :)
                                              Зачем искать-то? Это во всех книжках написано — в скрытой части селекторнах регистров. У 80286 и 80386 есть даже инструкции, позволяющие туда посмотреть.
                                                0
                                                Зачем искать-то? Это во всех книжках написано — в скрытой части селекторнах регистров

                                                А вы всё-таки поищите, попробуйте. Я не просто так спросил.
                                          0
                                          MS DOS 1.0 — это у нас, нонче, 32-битная OS.

                                          Это, конечно, мелочи, но MS-DOS 1.0 не существовала.
                                            0
                                            И ты прав. Да, PC DOS 1.0, конечно же. Я их иногда путаю.
                                    0
                                    Вот тут чётко и недвусмысленно об этом написано: Nearly all of GDI was written in assembly language in versions of Windows up to and including the Windows 95 family.

                                    Ну да, ну да, цитата оттуда же:
                                    In Windows 95, the code generator got crazy and used the esp register as a general-purpose register.

                                    Конечно же речь про 16-битный код, да ;)
                                      0
                                      Ну да, ну да, цитата оттуда же:
                                      In Windows 95, the code generator got crazy and used the esp register as a general-purpose register.

                                      Конечно же речь про 16-битный код, да;)
                                      Несомненно, очевидно и безвариантно. Просто потому что если вы это сделаете в 32-битном коде, то… это добром не кончится. А 16-битном коде… нормально.

                                      P.S. Интересно, что пассаж про esp вы заметили, а тот факт, что the code generator took advantage of 32-bit registersIn Windows 3.0 — нет. Хотя он ровно в предыдущем абсзаце. У вас уже Windows 3.0 стала 32-битной? И Turbo Pascal тоже? Вы это всерьёз?

                                      P.P.S. Кстати только что обратил внимание: вам цитату ещё и снизу пришлось подрезать, что сову-то на глобус натянуть. Uh oh, but this means that you can’t use the esp register to access your local variables. No problem! We’ll run the code on a custom stack, too, so that our local variables are at fixed offsets relative to the stack selector register. Напрягите головушку… посильнее… где у нас stack selector register используется? В 32-битном коде? Или, всё-таки, в 16-битном? Даю подсказку: в Win32 вообще нет функций, которые позволяли бы вам такой селектор, штатным образом, создать. А вот в Win16 — без проблем: любая функция аллокации — ваш друг.
                                        0
                                        У вас уже Windows 3.0 стала 32-битной?

                                        Windows 3.x содержит некоторое количество 32-битного кода, что вас смущает? Я, впрочем, не особо верю в то, что там речь шла именно про Windows 3.0, а не 3.1. Возможно, автор за давностью лет также забыл. Ну просто по той нехитрой причине, что 386 Enhanced Mode в 3.0 не было, и неожиданно было бы встретить код, работающий только на 386+ процах в ОС, верхними требованиями которой был 286-й.
                                        Напрягите головушку… посильнее… где у нас stack selector register используется? В 32-битном коде?

                                        Эм… забавный вопрос. Правда. Но боюсь, вы с вашими закостенелыми и непонятно откуда придуманными догмами просто не поверите.
                                          0
                                          Ну просто по той нехитрой причине, что 386 Enhanced Mode в 3.0 не было, и неожиданно было бы встретить код, работающий только на 386+ процах в ОС, верхними требованиями которой был 286-й.
                                          И вы после этого будете рассказывать сказки, что вы что-то там знаете про устройство Windows?

                                          Вот тут вы можете не только посмотреть на скриншот:
                                          Ни и скачать саму Windows 3.0. А вот тут можете почитать как запускать её в 386 Enhanced Mode в Microsoft Virtual PC.

                                          И прекратите принимать «вещества». Они мозг разжижают, знаете ли.

                                          Но боюсь, вы с вашими закостенелыми и непонятно откуда придуманными догмами просто не поверите.
                                          Человеку, который нагло и откровенно врёт… когда не передёргивает факты? Не поверю, конечно.

                                          Потому что я, как видим, чуть-чуть лучше вашего знаю — что, когда и как в Windows появилось.

                                          Ну потому что мне интересны все эти ретросистемы и я с ними, периодически, играюсь. Сегодня, сейчас. А вы… полагаетесь на вашу память — а она вас, как видим, изрядно-таки подводит.

                                          P.S. И да, я в курсе, что в 32-битном режиме селекторы сегментов существуют. Как и в курсе того, что Windows95 их для стека не использует. Потому что в ней все Windows-программы используют одну-единственную LDT, доступных селекторов мало и заводить на каждый процесс ещё один чисто для нужд Bit­Blt — никто не будет. А вот уже в 16-битном коде — это не нужно. Потому что кооперативная многозадачность и нужен всего один стек для библиотеки, а один селектор — это немного.
                                            0
                                            И вы после этого будете рассказывать сказки, что вы что-то там знаете про устройство Windows?

                                            Ок, в этом моменте я ошибся, в Windows 3.0 тоже есть где выполнять 32-битный код. Это как-то отменяет остальные мои аргументы? Вы бы лучше не это, а свою бредятину про отсутствие селектора стека в 32-битном коде прокомментировали :)
                                            UPD. Спасибо, что прокомментировали.
                                            И да, я в курсе, что в 32-битном режиме селекторы сегментов существуют.

                                            Только не надо лгать. Вы «в курсе» стали только после того, как прочли мой комментарий и полезли гуглить. У вас даже просто признаться «я был неправ» кишка тонка.
                                              0
                                              Вы бы лучше не это, а свою бредятину про отсутствие селектора стека в 32-битном коде прокомментировали :)
                                              Бредятина — это у вас.

                                              В 32-битном коде в Windows 95 селекторы не используются. Ровно потому, что это 32 разрядный патч на 16 разрядную графическую среду, все селекторы в одной LDT и попытка использовать их там «добром не кончится».

                                              То что это, в принципе, в других операционках, возможно — я в курсе. В Windows 95 — нет.
                                                +2
                                                Бредятина — это у вас.

                                                Вы знаете, у меня для вас хреновые новости.
                                                1. Бредятина — таки у вас
                                                2. В Windows 95 одна LDT для 16-битной подсистемы и отдельные LDT на каждый 32-битный процесс.
                                                3. Хоть одна, хоть много LDT, это не играет роли при использовании селектора стека. И что значит «добром не кончится»? А чем кончится?
                                                То что это, в принципе, в других операционках, возможно — я в курсе. В Windows 95 — нет.

                                                Погуглите что-то другое. Вы себе плохую статью нагуглили.
                                                  0
                                                  В Windows 95 одна LDT для 16-битной подсистемы и отдельные LDT на каждый 32-битный процесс.
                                                  Да, тут уже я ошибся.

                                                  Хоть одна, хоть много LDT, это не играет роли при использовании селектора стека. И что значит «добром не кончится»? А чем кончится?
                                                  Неработающим SEH и невозможностью обработать ошибку доступа к памяти.

                                                  Погуглите что-то другое. Вы себе плохую статью нагуглили.
                                                  Не знаю уж какую статью вы там нашли, но ни одной, объясняющей как подружить кастомный селектор стека и SEH — мне найти не удалось.

                                                  В конечном итоге там где нам было это нужно — мы выкрутились через «соседний» процесс, который следит за основным и обрабатывает все эти ошибки не допуская их до SEH.

                                                  Но обычные процессы в Windows 95 запущены не под дебаггером, а использовать BitBlt они-таки могут…
                                                    +2
                                                    Неработающим SEH

                                                    Мы же про BitBlt говорим, какой там SEH вообще может быть?

                                                    Да, тут уже я ошибся.

                                                    Беру свои слова обратно, вы не совсем безнадёжны ;)
                                                      0
                                                      Неработающим SEH
                                                      Мы же про BitBlt говорим, какой там SEH вообще может быть?
                                                      Простой такой. Для которого GetExceptionCode вернёт EXCEPTION_ACCESS_VIOLATION.
                                                        0
                                                        Вы же сами приводили статьи, что оно на ассемблере писано. Там нет обработки исключений.
                                                          0
                                                          Чэнь же сам объясняет в посте, на который вы сослались: «Note that normal Win32 code can’t get away with this trick because the stack pointer must remain valid for stack unwinding purposes. But this was special code running under special conditions, and it was in cahoots with the kernel so the kernel didn’t freak out when it saw this wacko stack.»
                                                  +1
                                                  Только не надо лгать.
                                                  Хороший совет — применяйте его почаще.

                                                  У вас даже просто признаться «я был неправ» кишка тонка.
                                                  Вот уж чего нет — того нет, извините. Если я где-то что-то путаю (как те же MS DOS и PC DOS) — то всегда признаю свои ошибки.

                                                  Это у вас с этим проблемы.

                                                  Вы «в курсе» стали только после того, как прочли мой комментарий и полезли гуглить.
                                                  Ну да, конечно. А пара лет развлечений с песочницей, на этом основанной — они мне приснились.

                                                  Поверьте мне: Windows становится крайне недовольна, когды вы SS трогаете в 32-битной программе. А если трогаете CS — то недовольными становятся уже некоторые процессоры (там правда, речь уже не об ошибках идёт, а о замедлении… радикальном-таком, раз в пять… но всё равно неприятно).
                                  +2
                                  Ни о каком 32-битном ядре никто никогда не заикался, это даже не смешно.

                                  Ну это вы не заикались. Большинство разработчиков всё-таки знают, что ядро Win95 гибридное, но конкретно та его часть, которая обеспечивает рабочее окружение, в частности, управление контекстами процессов, вытесняющую многозадачность, управление памятью — она 32-разрядная. Драйверы устройств — и 32-разрядные, и 16-разрядные. GUI — также и 32-разрядный, и 16-разрядный.
                                  но ровно по модулю того, что вы эту чудесную многопоточность имеете пока не общаетесь с GUI

                                  Я вам более того скажу, то вы с Delphi перепутали. Если лезть в многопотоке в графику в Delphi, то там действительно «все эти прелести» проявляются, но это проблема сугубо VCL. Если же вы в многопотоке полезете к виндовому GUI напрямую через API GDI32.DLL, то ваше приложение будет абсолютно нормально работать, без каких-либо «прелестей».
                                    0
                                    Если же вы в многопотоке полезете к виндовому GUI напрямую через API GDI32.DLL, то ваше приложение будет абсолютно нормально работать, без каких-либо «прелестей».
                                    А давайте не будем рассказывать сказок, а? Вот тут Раймонд подробно про всё это рассказывает. Тут — описывает как он дебажился в Windows 95 с помощью Wyse 50.

                                    Если вы ваша нирванна действительно была бы реализована в Windows 95 — то всё это было бы ненужным, извините.

                                    Вот счётные задачи, которые ни с железом, ни с пользователем не взаимодействуют — это сколько угодно. А вот как GUI начались… так и всё, приплыли.
                                      +1
                                      Вы видите то, чего нет.

                                      По ссылке он рассказывает про AttachThreadInput — функциональность, специально добавленную для совместимости с 16-битными приложениями. В приложениях, которые не вызывали AttachThreadInput, не было никаких проблем с вытесняющей многозадачностью в GUI.
                                        +1
                                        Вы видите то, чего нет.
                                        Это вы видите то, чего нет… хотя это с какой стороны посмотреть, конечно…

                                        В приложениях, которые не вызывали AttachThreadInput, не было никаких проблем с вытесняющей многозадачностью в GUI.
                                        … до тех пор, пока какая-нибудь другая программа не вызывала AttachThreadInput.

                                        Не обязательно ваша. Вообще любая.
                                        +1
                                        Если вы ваша нирванна действительно была бы реализована в Windows 95 — то всё это было бы ненужным, извините.

                                        Вообще, он там про отладку 16-битных приложений пишет, так, к слову. Подсистема Win16 в 95-й винде, это отдельный мирок, живущий сам по своим правилам, перенесенный в общую область адресного пространства без особых изменений из винды 3.х. В том числе и с одной общей очередью сообщений для 16-битных приложений.
                                        В 32-битных потоки имеют раздельные очереди сообщений, кроме крайне редких случаев использования AttachThreadInput, как уже написал tyomitch. А сама GDI32.dll, например, щедро усыпана критическими секциями, чтобы избежать конфликтов при манипуляции ресурсами из разных потоков.
                                    0
                                    zanuda on. ну как раз про win95. не имею в виду win95osr2 и поздние. у первой часть вызовов и консольные win приложения шли с переключением туда-сюда через 16 битный сегмент.
                                    чистый win32 это натянутый win32s, а позже win95 на ядро полуоси — Win Nt.
                                    4004 имелась в виду что расширенная версия его в 8 битном — 8008, позже 8080 как раз использовалась как база в т.ч. и для CP\M пэвм.
                                    zanuda off.
                                    даже в вин-нт 4.0 натягивая интерфейс win95 на 32 битное ядро — убили эту многозадачность в графической подсистеме, вплоть до winxp 32 бит точно.
                                    и падение в ней приводило к падению системы. в более ранних 32 битных, Win NT, вплоть до 3.51 это один из сервисов, и его отвал не приводил к отвалу системы.
                                      –1
                                      а позже win95 на ядро полуоси — Win Nt.
                                      Ну что вы опять-то. NT не натягивали на «ядро полуоси», она разрабатывалась параллельно, у нее было свое ядро, писавшееся совсем другой командой и имеющее очень мало общего с полуосью. (1, 2)
                                        +1
                                        По вашей ссылке указано, что ядро NT создавалось именно в качества «ядра полуоси», хотя так им и не стало.
                                        Так что общего кода у них действительно нет, а вот общей истории очень много.
                                          0
                                          Ну да, оба они разрабатывались в одной и той же компании, об этом написано в первом же абзаце по ссылке.
                                          Но вот кодовая база, архитектура и даже «цели», если так можно выразиться, у них был совершенно разные.
                                          И к тому моменту, когда интерфейс Windows 95 натянули на ядро NT (а произошло это к релизу NT 4.0), о чем говорил автор предыдущего комментария, их пути разошлись еще сильнее и общего между ними было еще меньше :)
                                            0
                                            Цели, в смысле рыночная ниша (рабочие станции) — были одинаковые.
                                            Если бы MS и IBM не поссорились, то NT 4.0 вполне могла бы называться OS/2 4.0
                                              +1
                                              Цели, в смысле рыночная ниша (рабочие станции)
                                              Я немного о другом. Например, одной из основных целей, по которой и затеяли разрабатывать NT, при уже имеющейся и вполне рабочей полуоси, была переносимость. Ядро OS/2 было гвоздями прибито к x86, и, например, на PowerPC полуось переносили с огромным трудом и так до ума и не довели, а NT наоброот, изначально писали под i860, потом перенесли на MIPS, и лишь потом добавили HAL для x86 (и еще бонусом PowerPC, DEC Alpha, и потом еще ARM уже в наше время).
                                                0
                                                А может вместо того что-бы выдавать на гора благоглупости, с сайта, контент которого открывается через вебархив, лучше изучить историю вопроса, техническую документацию и внутреннюю конкуренцию в департаментах IBM? Короче если вкратце, то во всём виноваты наполеоновские планы руководства IBM и яростное сопроотивление разработчиков той-же AS/400 (Об этом у Солтиса хорошо описано) попыткам разработать единую OS для всех IBM-овских машин, начиная от PC и заканчивая мейнфреймами. Именно поэтому OS/2 PPC Ъ микроядерная, мультисерверная, и из коробки поддерживает запуск win3.x и DOS приложений на PPC.
                                              0
                                              ЧСХ HPFS и ранняя NTFS похожи до степени смешения. Но MS, в те времена, не осилила довести NTFS по фичастости и надёжности даже до обычной HPFS, не говоря уже о серверном варианте HPFS386. Да и ядро NT это лютая смесь наработок по ядру OS/2 и ядру VMS.
                                                0
                                                Да и ядро NT это лютая смесь наработок по ядру OS/2 и ядру VMS.
                                                Сколько я встречал упоминаний в статьях и блогах людей, имевших к этому отношение (за что купил, за то и продаю), ядра NT и OS/2 были сильно схожи только в плане обработки исключений, а во всем остальном NT было гораздо ближе к VMS. Что, впрочем, не удивительно, если его бывшие VMS-ники и писали.
                                          +1
                                          и падение в ней приводило к падению системы. в более ранних 32 битных, Win NT, вплоть до 3.51 это один из сервисов, и его отвал не приводил к отвалу системы.
                                          А разгадка одна: ради производительности.
                                          Учитывая крайне ограниченные вычислительные ресурсы на машинах того времени, возможно это было вполне разумным шагом.
                              0
                              MC 68008 с восьмибитной шиной данных существовал, но из-за отсутствия конвейера команд очень сильно проигрывал в производительности 68000, плюс первая ревизия в DIP адресовала только 1 мегабайт. Потом с заменой корпуса адресацию довели до 4 мб. И цена у него была не намного меньше чем у 68000. И к созданию IBM PC он опоздал (представлен 1982). И ЕМНП с совместимостью с 68000 там тоже было не все ровно. Так что получился довольно таки странный проц: 16 разрядное АЛУ, 32 разрядные регистры, восьмибитная шина данных.
                              «От белых отбился, и к красным не пристал.»
                            +6
                            И тогда история архитектуры 8086 была бы другой, без ограничения в 640кБайт памяти, и многого другого.

                            Ограничение 640К памяти в общем-то лежит не в ответственности архитектуры 8086, а на совести того чувака, который проектировал распределение памяти в IBM PC. Ну и с другой стороны, что плохого в ограничении 640К в то время, когда хорошая персоналка имела 16К, а крутая профессиональная — 64К?
                              0
                              Конкретная цифра 640К — да, заложена в архитектуре, но само появление этого ограничения вызвано максимальным размером адресуемой памяти для 8086 и 8088 — 1024кБайт. IBM PC с самого начала поставлялась в конфигурациях с объёмом памяти до 256кБайт — то есть запас по адресному пространству — всего в 2,5 раза. А ведь закон Мура на тот момент исправно работал уже 16 лет.
                                +1
                                IBM PC с самого начала поставлялась в конфигурациях с объёмом памяти до 256кБайт — то есть запас по адресному пространству — всего в 2,5 раза

                                Ну и современные компьютеры тоже обычно имеют не так чтобы уж десятикратный запас по расширению памяти :)
                                1024 килобайта — это было очень много во время появления этих процессоров. И более того, это было вполне достаточно и через десять лет после их появления для подавляющего большинства применений персональных компьютеров. А для тех применений, где недостаточно, легко можно было пойти тем же путём, которым пошли восьмибитки — страничным расширением памяти.
                                  –1
                                  Страничная память — это очень неудобный в использовании вид памяти, очень немногие программы её поддерживали на PC.
                                    0
                                    Те, кому надо было, использовали. В конце-концов, что там такого неудобного в свете того, что основное адресное пространство и так использовалось 64-килобайтными сегментами?
                                      –1
                                      Неудобно в первую очередь использовать страничную память для исполняемого кода — код, выполняющийся на одной странице не мог напрямую вызвать код на другой странице — только через драйвер. Основное адресное пространство использовалось сегментами, но эти сегменты могли иметь любой размер, кратный 16 байтам, не более 64К — а страницы имели фиксированный размер.
                                        –1
                                        Хочешь жить — ещё не так раскорячишься. Но да, это было проблемой. Впрочем были и решения: гуглите OvrInitEMS.

                                        Да, больше 2-4MB так было использовать нельзя, скорость падала сильно… но какое-то время это работало.

                                        В конце-концов Unix на PDP-11 как-то с этим жил… а чем MS-DOS хуже?
                                          0
                                          Если Вы про «кольца» защиты памяти — то это уже 386 архитектура (с появлением соответствующих битов защиты) и IBM OS/2. В MSDOS на 8086-архитектуре НЕ БЫЛО проблем/ограничений в работе с памятью в пределах первых 640КБ. Например, прямая запись в видеопамять (и чтение оттуда, есличо) была чуть ли не штатным решением для DOS-программ (ибо работало быстро,- намного быстрее чем через прерывания DOS). Проверено на TurboPascal и MASM ;). А наличие прямого доступа к стеку позволяло делать вообще всё что угодно,- вплоть до произвольного блуждания по ОЗУ и вызовов чего угодно откуда угодно. Наличие в DOS возможности TSR (Terminate&StayResident) позволяло писать свои хитровыделанные утилиты,- к ним можно было обращаться даже из ранних версий Win. Про OS/2 ни чего сказать не могу. Даже не помню, была ли она для машин младше 386-ой серии. Если речь идёт про expanded|extended memory,- то да, там ставились драйвера, которые «хитрили» с адресными регистрами и проч.,- для доступа ЗА пределы первоначальных 640К (через сегменты-«окна»). Но это началось начиная с 286-ых процессоров, кажется (коих было немного). Ещё были «вроде как промышленные» 80186, но я их не видел. ;)
                                            0
                                            Ещё были «вроде как промышленные» 80186, но я их не видел. ;)
                                            Не «были», они до сих пор используются и производятся :)
                                              0
                                              Если речь идёт про expanded|extended memory,

                                              Expanded и expended память — это несколько разные вещи, и первая как раз работала через окно, и в том числе и на 8086 (собственно, для подобного подхода тип процессора и не важен). Что касается защиты памяти, это уже появилось в 286-х, если мне память не изменяет, равно как и возможность переключиться в режим с линейным адресным пространством до 16 мегабайт.
                                                0
                                                Я про EMS/XMS и подобные расширители памяти, которые сначала шли в комплекте с ISA-картами-расширителями памяти, а позже, на 286 и выше — обеспечивали доступ к памяти за пределами 640кБ. Я говорю о том, что ограничение адресного пространства в 1МБайт, вызванное 20-битным адресом 8086, приводило к тому, что даже на 486 многие программы под DOS не могли адресовать больше, чем 640кБайт. Потому что работать через эти драйвера было неудобно.
                                                  0
                                                  И я про них же :) EMS работает через окно, XMS в общем случае через менеджер памяти, но почему неудобно-то? Работа с XMS-памятью через DPMI не особо отличается от работы с любым другим менеджером памяти и в рамках традиционных 640К. Запросил блок, получил дескриптор, сохранил данные, считал данные, освободил блок. Всё как и раньше. Просто масса софта и в 90-е вполне помещалась в 640К, вот и не заморачивались.
                                                    0
                                                    Если в этой памяти хранить данные — это ещё более-менее нормально. Сложно разместить там исполняемый код.
                                                      0
                                                      Для кода был DPMS.
                                                        0
                                                        Вот только появился он только в 92-м году, когда уже выпускался 80486DX2, а PC/AT, в котором могло быть до 16МБ памяти, уже успели снять с производства.
                                                          0
                                                          Я думаю, не ошибусь, если скажу, что проблема нехватки 640К для кода приложений вообще только в начале 1990-х и стала как-то проявляться, и то не благодаря DOS, а благодаря Windows. А 16 мегабайт памяти в среднестатистическую персоналку пришли только в 1996-м году, уже в эпоху Пентиумов.
                                                            0
                                                            Согласно таблице, упомянутой @khim, уже в 1986 году стоимость оперативной памяти упала до $190/ мегабайт. То есть домашний компьютер вполне мог иметь 2..4МБайта памяти (за $380..$760), а рабочая станция — 8МБайт (за $1520) — по цене, вполне адекватной стоимости остального железа (но не для СССР, конечно). Но немногие программы могли использовать столько памяти — как раз из-за упомянутых проблем, потому и немногие компьютеры её имели.
                                                              0
                                                              То есть домашний компьютер вполне мог иметь 2..4МБайта памяти (за $380..$760)

                                                              Хочу напомнить, что $760 в 1986-м — это больше половины среднемесячной заплаты американца, не говоря уже про остальные страны. И это только память. Вы думаете, количество домашних компьютеров ценой в несколько американских зарплат в мире статистически было заметно больше нуля? ;)
                                                              Типичный объем памяти домашнего компьютера в 1986-м году, это 64/128 килобайт, и среди них IBM PC, к слову, практически не встречается. По двум причинам:
                                                              а) это профессиональный сегмент с конской ценой
                                                              б) у РС, представьте себе, в 1986-м году нет звука и нет хорошего видео за приемлемую цену, а у 8-битных машинок всё это есть.
                                                              Профессиональные компьютеры — до мегабайта. Очень редко, за космические деньги, встречались более навороченные машины с бОльшим объемом памяти, для каких-то узких профессиональных применений, например, 3D графика или там издательское дело. И в массе своей они вообще не x86 и не под DOS.
                                                                –1
                                                                Разумеется, я говорю только о 16/32-битных компьютерах, соответственно, домашний компьютер — имеется в виду из дорогого сегмента, не для среднего американца. Звук на PC в 1986-м уже был — примитивный, в виде Covox. А в 1988-м появились и нормальные звуковые карты от Creative и AdLib. EGA появился в 1984-м, VGA — в 1987-м.
                                                                Я о том и говорю, что не x86 и не под DOS — потому что на x86 и под DOS критическим было ограничение адресного пространства.
                                                                  0
                                                                  Я о том и говорю, что не x86 и не под DOS — потому что на x86 и под DOS критическим было ограничение адресного пространства.
                                                                  Нет. Потому что столько памяти не было.

                                                                  Я как-то обсуждал это с Шенём. Он, сам лично, в 1988м привёз DIP-микросхем, чтобы добить у них в классе на PC'шках память до 512K и запустить, наконец, среду Turbo Pascal 4.0. До этого там была «повинная память» (256K) и можно было использовать только компилятор командной строки, для среды памяти не хватало.

                                                                  Вообще до 1987го границей не 640K считалась, а 512K. Штатно ни в XT, ни в AT (базовые модели) больше 512K не ставится, ещё 128K нужно доставлять на дочерней плате. Ну или по инструкции которая включает в себя, помимо прочего, покупку «small length of thin gauge jumper wire» и «install a jumper wire from pin 1 to pin 8 on U44».

                                                                  Вот в 1987м — там да, появился PS/2, многие модели уже имели 1MB штатно (вначале под электронный диск, с 1991го года под DOS в HMA)… но мы уже к 1990м подбираемся.

                                                                  Глядя на даты, когда появлились те или иные вещи вы забываете скорость внедрения всего этого добра. Это сейчас — если объявление о появлении процессора появилось, то это значит, что производители материнок уже их клепают и скоро он будет уже у покупателей. В те годы всё было не так.

                                                                  8086й — появился в 1978м, через год — появилась удешевлённая модель, а ещё через два года — IBM PC. 80286й — появился в 1982м, а IBM PC AT — вышла в 19284м, 80386й — это 1985й, но IBM PS/2 с ним — это 1987й (а Compaq DeskPro хотя и вышел в 1986м, но долгое время о нём большинство пользователей только лишь в газетах читали).

                                                                  В общем то, что DPMS появился в 1992м, а не в 1987м — это скорее потому что массовый потребитель в нём тогда стал нуждаться.

                                                                  OS/2 1.0 появились в 1987м, но требовала 2MB памяти (а поддерживала 8MB… причём рекламные материалы говорили про 16MB, но IBM элементарно не проверила её на таком гигантском объёме — она тупо падала при загрузке).
                                                                    0
                                                                    Штатно ни в XT, ни в AT (базовые модели) больше 512K не ставится, ещё 128K нужно доставлять на дочерней плате.

                                                                    В XT — может быть, но AT сразу продавалась с возможностью расширения памяти до мегабайтов.
                                                                      0
                                                                      Она, внезапно, вставала как 512K «обычной» и 512K расширенной. Вот тут это всё подробно обсуждалось.

                                                                      На поздних моделях есть переключатель, чтобы было 640K+384K, но изначально идея была в том, чтобы строго следовать спецификации IBM PC, которая выделяла половину адресного пространства под память, половину — под устройства и ROM.
                                                                    0
                                                                    соответственно, домашний компьютер — имеется в виду из дорогого сегмента, не для среднего американца.

                                                                    Ну так какой смысл говорить о том, что своим числом было близко к нулю? Даже игр, контент которых требовал больше 640К памяти, тогда не существовало.
                                                                    0
                                                                    Хочу напомнить, что $760 в 1986-м — это больше половины среднемесячной заплаты американца, не говоря уже про остальные страны. И это только память. Вы думаете, количество домашних компьютеров ценой в несколько американских зарплат в мире статистически было заметно больше нуля? ;)

                                                                    Хочу напомнить, что IBM PC/AT (1984, 512K RAM) стоил $5,795.
                                                                    При такой цене аппаратуры, $760 за память — это не очень существенно.
                                                                      0
                                                                      При такой цене аппаратуры, $760 за память — это не очень существенно.

                                                                      Наверное, мы немного по-разному мыслим. Для меня лишних ползарплаты из моего кармана как-то не уменьшают свой размер, если я покупаю что-то очень дорогое :)
                                                                0
                                                                а PC/AT, в котором могло быть до 16МБ памяти, уже успели снять с производства.
                                                                PC/AT сняли, а вот всякие PS/2, во многие из которых вставало максимум 4MB или 8MB — как раз в самом разгаре.

                                                                Не знаю, кстати, почему случился такой откат: BIOS от PC/AT отлично «переваривает» 16MB, а вот многие более поздние модели — не могут.

                                                                Но его явно бы не было, если бы эта память была востребована.
                                                        0
                                                        OS/2 1.x была заточена под 286-е процессоры.
                                            +2
                                            И тогда история архитектуры 8086 была бы другой, без ограничения в 640кБайт памяти, и многого другого.
                                            Ага. А ещё она была бы очень короткой.

                                            Как бы все знают о том, что в 90е годы IBM PC прошёл через «дольшой надлом», когда произошёл переход от MS-DOS (с пресловутым «барьером 640KB») через Windows 9X к Windows 2000 (и её потомкам).

                                            Но не все осознают, что все персоналки, абсолютно неизбежно должны были через такой слом пройти. И как раз ограничение в 640K позволило платформе IBM PC пройти его самым оптимальным, практически идеальным, способом.

                                            В чём фишка? В операционке. Современные операционки (все: Darwin/MacOS, Linux, Windows) — это операционки, где программы изолированы от железа.

                                            Сколько занимает такая операционка? Ну… насчёт самого-самого минимального объёма можно спорить, но все реально существующие операционки такого класса требовали 2-4MB памяти (современные требуют больше, но не сильно, вроде бы даже последние версии Linux требуют от 8MB… а уже самые ранние версии OS/2 требовали 2MB).

                                            А ранние персоналки продавались с 16K-64K! Ну просто цена бы у них была непомерной, в противном случае.

                                            Соответственно все без исключения ранние персоналки — никак не изолировали программы от «железа». Ибо возможности не было.

                                            А перенос программы, которая лезет куда можно и куда нельзя на платформу, где это делать не получится… вещь тяжёлая, однако. Фактичеки — невозможная. Программу придётся просто переписать.

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

                                            Потому что когда дошли до предела в 640K, то, разумеется, никто никуда переходить не захотел: нам тут нужно бухгалтерию бухгалтерить и книжки печатать, а вы хотите всех заставить переучиваться? Вы, вообще, в своём уме?

                                            Придумали костыли. А потом — ещё другие костыли. И несколько лет продержались.

                                            Но в конце-концов всё-таки дальше «растягивать» платформу стало невозможно.

                                            И как раз тут — появилась Windows 95, которая, с одной стороны, неплохо дружила со всей этой коллекцией костылей, а с другой — позволяла, наконец-то, писать программы, которые могут, без проблем, использовать десятки, сотни, мегабайт памяти!

                                            Ради такого, разумеется люди были готовы переучиваться. Было ради чего.

                                            А вот у всех других платформ — переход не случился. Восьмибитные было невозможно «растянуть» до 2-4MB, они кончились гораздо раньше, в большинстве своём. Мало кто добрался даже до 1MB.

                                            А 32-битные… там как раз другая беда: переходить на новую платформу ради работы с большим количеством памяти было не нужно… а без этого — всё это продолжало страшно «глючить» и «падать».

                                            Единственная платформа, которой этот переход всё-таки удалось сделать, Macintosh сделал это буквально чудом, когда уже все отчаялись и разочаровались — но использованный там изначально CPU этого перехода не пережил…
                                              0

                                              Какой, нафиг, барьер в 640К? Это только на 8088/8086 есть этот барьер.


                                              Две из трёх лидирующих платформ 90х никогда не имели барьера в 640К, потому, что собирались на отличном мотороловском 32-битном процессоре 68000. У которого, между прочим, отличнейший ассемблер, похожий на мощнейший ассемблер PDP-11.
                                              И операционки на этих платформах были совсем не MSDOS, а вполне себе многозадачные.


                                              Единственное преимущество IBM-PC — это цена. То есть, вся наша IT индустрия обязана пиратам из Compaq, которые склонировали PC в 82 году.


                                              Кстати, 68000 был запрещён к ввозу в СССР, а впоследствии и в Россию, до 1995 года.

                                                0
                                                Две из трёх лидирующих платформ 90х никогда не имели барьера в 640К

                                                Вы о чем вообще — это барьер родом из 80-ых, в 90ые на Западе 8086 был давно не актуален.
                                                  +1
                                                  До появления Windows 95 даже 486е использовались, зачастую, как «быстрые MS-DOS машинки». «Старые добрые» Borland C++ 3.1 и Turbo Pascal 7.0 — это 1992й. И, поверьте, Turbo Pascal 7.0 не зря вернулся к «синим окошкам»… Turbo Pascal 1.0 for Windows (вышедший в 1991м) особым успехом не пользовался. Да и Visual Basic 1.0 for DOS (1992й) и Microsoft Word 6.0 for DOS (1993й) вряд ли бы появились, если бы в 90ые все уже давно отказались бы от MS-DOS.

                                                  Вот после выхода Windows 95 — да, там был лавинообразный переход. Уже к 1997му доля MS-DOS упала ниже 50%. А до этого… MS-DOS держался стойко. В конце-концов как в DOOM-то играть? Quake — это уже 1996й (и даже он, внезапно, изначально вышел только в версии для MS-DOS!)
                                                    +1

                                                    вся линейка 9х была с досом. 95я, если правильно помню, как и 3.х это надстройка над дос, 98 вроде бы имела дос, но не знаю на чём всё работало. А вот "линолеум"… Песня! Матерная.

                                                      0
                                                      DOS в составе Win9x хоть и был, но при работе не использовался.
                                                        0
                                                        Ещё как использовался! «Режим совместимости с вирусов», как его у нас в школе называли.

                                                        Когда Windows 95, при загрузке обнаруживала, что у неё INT13h ведёт не в BIOS, а куда-то в оперативку… она решала, что кто-то юзает хитрый SCSI и начинала вместо своего 32-битного драйвера ходить на диск через INT13h.

                                                        На практике это, конечно, случалось, когда кто-то приносил загрузочный диск с вирусами и умудрялся с него загрузиться (спасибо чудесному BIOS от «настоящей IBM», не позволяющему загрузку с дискет отключить).

                                                        Скорость работы снижалась настолько, что казалось, что ты, внезапно, пересел c Pentium II на 80386й…
                                                          +1
                                                          Ещё как использовался!

                                                          Ну это же типа «аварийный режим», это как у автомобиля вместо колеса докатку поставить, ведь от этого порше в жигули сразу не превращается, типа докатка-есть? есть… всё, жигули, а не порше, неважно что она просто в багажнике лежит
                                                        0
                                                        Мы только в 2005 мигрировали с FoxPro 2.6 на VFP6. Причина — массовая гос-закупка лицензий на WinXP (с отмыванием соотв). В результате — пострадала производительность. На все машины что подходят под «минимальные требования» в обязательном порядке был установлен winXP. В результате, там где раньше и 98 не очень бодренько грузился, стало совершенно невозможно дождаться загрузки.
                                                      +1
                                                      Кстати, 68000 был запрещён к ввозу в СССР, а впоследствии и в Россию, до 1995 года.

                                                      «Играл» с компьютером Amiga на процессоре 68000 где-то в 1994-95 году в одном медицинском учреждении одной из республик СССР.


                                                      Он был поставлен для управления большим медицинским прибором (не знаю правильное название: человеку вводится слегка радиоактивное вещество, прибор проводит над ним детектор, на компьютере рисуется карта, в какие органы попало вещество). Поэтому игр на нём не было, но было много других интересных программ.


                                                      В том числе, компилятор C с массой примеров, в т.ч., как рисовать графику и использовать встроенный синтезатор речи. Так что, я модифицировал эти примеры немного, и развлекался различной ерундой, например, пытаясь заставить синтезатор говорить по-русски, используя транслит.


                                                      Возможно, эта Амига попала, потому что формально республика уже не входила в СССР. Возможно, потому что была частью медицинского комплекса.


                                                      В то время у нас можно было увидеть только 286 и 386 компьютеры, очень редко, в кабинетах большого начальства, встречались 486.


                                                      Помню, насколько был впечатлён графической оболочкой этой системы, а также ее возможностями. От всяких MSDOS поделок, с которыми приходилось иметь дело, казалось, её отделяли световые годы.


                                                      До сих пор не могу понять: как получилось, что такие продвинутые системы проиграли борьбу x86 и DOS/Windows 3.1. Ведь они появились намного раньше, и были во многих отношениях (во всех?) намного более продвинутыми.

                                                        +2
                                                        До сих пор не могу понять: как получилось, что такие продвинутые системы проиграли борьбу x86 и DOS/Windows 3.1
                                                        Я ниже описал как.

                                                        Ведь они появились намного раньше, и были во многих отношениях (во всех?) намного более продвинутыми.
                                                        Единственное, что у них было круче — это «метафора рабочего стола». Которая, внезапно, даже у 8-битной GEOS имелась, а вот у Windows — отсутствовала (в попытке избежать судилища с Apple… которое, впрочем, всё равно случилось).

                                                        Больше никаких принципиальных преимуществ у них не было, а вот библиотека программ — была крайне куцей. Macintosh сумел «урвать» рынок препринта (Desktop Publishing), Atari ST — работу со звуком (Cubase и прочие), Amiga — работу с видео (DraCo с сотоварищи). Но надолго их не хватило: доля всех этих систем вместе взятых никогда не превышала ¼, а после того, как вышла Windows 3.1 всё это богатство начало быстро переезжать на IBM PC.

                                                        Ну а после появляения Windows 95, когда у вас на PC был уже и весь софт (его-то портировали раньше) и, наконец-то, нормальный GUI… зачем все этим «типа как продвинутые» (на самом деле нет) системы могли быть кому-то нужны?

                                                        Помню, насколько был впечатлён графической оболочкой этой системы, а также ее возможностями. От всяких MSDOS поделок, с которыми приходилось иметь дело, казалось, её отделяли световые годы.
                                                        О да! Секрет айсберга, как он есть: Люди, которые не являются программистами, смотрят на экран и видят какие-то пиксели. И если кажется, что эти пиксели могут собраться в программу, которая что-то делает, они думают «да ну, сколько там ещё осталось, чтобы она просто начала действительно работать

                                                        Когда непрограммисты смотрят на две эти картинки:


                                                        И их спрашивают о возможной судьбе этих систем… то они, как правило, отдают предпочтение первой: она же удобная, красивая, Drag-N-Drop и всё такое.

                                                        Когда на них же глядят программисты… ну это ж даже не смешно! Ну честное слово! Сравнивать поделку на коленке с первой картинки с реальной операционкой на второй? Ну это всё равно что сравнивать кто выиграет в бою между Майком Тайсоном и первоклассником. Что тут вообще обсуждать-то?
                                                          0
                                                          Тем не менее, сейчас даже совсем-совсем программисты с большим удовольствием используют наследие макоси с верхней картинки.
                                                          Ну и многие программисты, которые ни в коем роде не дизайнеры и не обладают утончённым художественным вкусом, и то отмечают что яблочные операционки выглядят очень аккуратно и приятно и что использование их приносит удовольствие.
                                                            0
                                                            Тем не менее, сейчас даже совсем-совсем программисты с большим удовольствием используют наследие макоси с верхней картинки.
                                                            Маркетинг… это круто, не спорю. Но ничего, что в том «наследии», которое они используют нет вообще ничего, унаследованного от одномённой операционки? Даже иконок.

                                                            Все программы были переписаны — точь-в-точь как при переходе с MS-DOS на Windows, собственно.

                                                            Ну и многие программисты, которые ни в коем роде не дизайнеры и не обладают утончённым художественным вкусом, и то отмечают что яблочные операционки выглядят очень аккуратно и приятно и что использование их приносит удовольствие.
                                                            Ну это уже совсем-совсем другая история. Я общался и с MacOS Classic (когда-то давно, в школе) и с MacOS X (не так давно) и в обоих случаях плевался.

                                                            Тут я скорее о том, что MacOS Classic Apple так и не смог «довести до ума», пришлось покупать готовое решение в совсем другой компании и надеяться, что замена «прокатит».

                                                            Ни о какой наследственности там речи и близко не идёт, при переходе было выкинуто вообще всё, что можно выкинуть.
                                                              0
                                                              Я общался и с MacOS Classic (когда-то давно, в школе) и с MacOS X (не так давно) и в обоих случаях плевался.

                                                              С первой познакомился в конце 1994 года. Ощущение было… Ну как обои переклеивать через замочную скважину. Файлы не найти, всё мышкой и никак иначе. В общем, кривее системы я не видел. Потому подходил в магазинах к стендам, смотрел — улучшений не замечал. Потом, 2013 году, 9 месяцев проработал уже на OS X. Это была БОЛЬ: «мультики» не отключаются, переключатель экранов одномерный, а развёрнутая на весь экран программа занимает отдельный экран, то есть логика переключения ломается нафиг. В общем, даже MS Windows на этом фоне выглядела шедевром.
                                                            –3
                                                            Сравнивать поделку на коленке с первой картинки с реальной операционкой на второй?

                                                            Чушь какая-то. Уродливое поделие Win3.1 с такой же кооперативной многозадачностью как у максоси не вызывает никаких эмоций кроме рвоты :)
                                                              +2
                                                              Ну вот видите — даже вы не можете заметить надписи «Windows NT Setup», упоминаний про «COMP2\Administralor» на второй картинке и понять, что там многозадачность — ни разу не кооперативная и в операционке — есть и пользователи и защита.

                                                              А как безному юзверю это понять?
                                                                0
                                                                Это не важно. Мой пародийный пост — это просто намёк, что бы вы посмотрели со стороны на свои посты.
                                                                «богатеньких лохов»
                                                                «поделку на коленке»
                                                                «и в обоих случаях плевался.»
                                                                Непонятный хейт платформ Apple, это какая-то детская обида?
                                                                Или вам действительно нравится убогий дизайн UI, кривая системная архитектура, сегментные регистры и т.п.?
                                                                  +1
                                                                  Или вам действительно нравится убогий дизайн UI, кривая системная архитектура, сегментные регистры и т.п.?

                                                                  А чем плох дизайн UI винды, и тем более чем плохи сегментные регистры для своего времени, если иметь в виду тот факт, что как раз не в последнюю очередь благодаря наличию сегментных регистров х86 стала доминирующей архитектурой, вынеся с рынка своих конкурентов с такой удобной линейной адресацией. Собственно ради чего они и задумывались.
                                                                    +1
                                                                    Непонятный хейт платформ Apple, это какая-то детская обида?
                                                                    Во-первых причём тут платформы Apple, а во-вторых — почему вы решили, что я на кого-то обижен?

                                                                    «богатеньких лохов»
                                                                    «поделку на коленке»
                                                                    «и в обоих случаях плевался.»
                                                                    И, что самое забавное, во всех этих случаях — я могу указать, почему, объективно, вот это вот всё заслуживает ровно таких эпитетов.

                                                                    Мой пародийный пост — это просто намёк, что бы вы посмотрели со стороны на свои посты.
                                                                    Я прекрасно знаю как мои посты выглядят со стороны. Как что-то написанное очень нетолерантным и неполиткорректным человеком.

                                                                    Потому что я такой и есть. Если я вижу вонючее дерьмо — я говорю: тут — дерьмо… и оно пахнет. И мне плевать на то, что я могу, тем самым, поранить чью-то ранимую душу.

                                                                    А уж то, как как Apple «окучивает хомячков»… тут у меня просто душевный трепет: умудриться продать людям смирительную рубашку, не позволяющую вам отклониться от «генеральной линии партии» ни на йоту под слоганом Думай иначе — это просто высший пилотаж.

                                                                    И Мавроди и Маск — отдыхают. Они, по сравнению с такой глыбой — мелки и ничтожны. И что самое смешное — это то, как хомячки пытаются защитить их кумира.

                                                                    Вот рассмотрите всю нашу дискуссию. Не один мой пост, а всю её в целом.
                                                                    Я: Резкий, на грани фола, наезд на macOS Classic
                                                                    Вы: Ложь и неправда
                                                                    Я: Извините, но вы врёте
                                                                    Вы: Это неважно

                                                                    Нет уж ребята — вот именно только это и важно. Факты — это то, что рулит миром. Если у вас, условно говоря, доходы с разходами не сходятся, то можно достаточно долго водить всех за нос… но в конце-концов, в истории, вы-таки останетесь мошенником.

                                                                    Вот, собственно, и всё. Если у вас есть факты или я где-то, в чём-то, фактически ошибся — можно разговаривать. Если у вас есть «оценки» и «мнения»… оставьте их себе.
                                                            +4
                                                            И операционки на этих платформах были совсем не MSDOS, а вполне себе многозадачные.
                                                            Они были многозадачными, но они не были защищёнными. Там была кооперативная многозадачность и чем больше задач вы запускали тем больше становился шанс у всего этого «свернуться в трубочку и упасть на пол» — вместе со всеми задачами и процессами.

                                                            Именно потом что эти «две из трёх платформ» (кстати почему «две из трёх?»… Atari и Amiga продавались сравнимыми тиражами) родились в 1980е. Когда защита никак не вписывалась в имевшиеся ресурсы.

                                                            Единственное преимущество IBM-PC — это цена.
                                                            Это у C64 и Apple ][ единственное преимущество — цена. Что, кстати, позволило им неплохо-таки держать до 1984го: C64 продавалось больше, чем IBM PC вместе со всеми клонами, а Apple ][ — больше чем IBM PC, но меньше чем IBM PC с клонами.

                                                            То есть, вся наша IT индустрия обязана пиратам из Compaq, которые склонировали PC в 82 году.
                                                            Apple ][ тоже клонировали. А уж сколько клонов Spectrumа народ насоздавал… не в сказке сказать, ни пером описать. MSX вообще открытым стандартом был. C64 не клонировали только потому, что Трэмел банально купил MOS Technology и тем самым сделал это мероприятие крайне проблемным.

                                                            Однако вся эта восьмибитная вакханалия упёрлась очень быстро. GEOS — это, конечно, реально очень круто, просто-таки инжинерный подвиг… но работать с электронными таблицами в мегабайт-другой все эти ухищрения не помогают.

                                                            Потому все восьмибитные платформы вымерли до того, как защищённый режим стал быть не только теоретически возможным, но и реально доступным. Да, уже даже на 68000 (двух из-за известных проблем) какие-то компании делали Unix-системы, а на 68010 это даже стало достаточно просто, но… они стоили заоблачных денег и с персоналками никак не пересекались.

                                                            А вот MS-DOS смогла «дотянуть» до момента, когда можно было скакнуть от примитивных текстовых программ к 32-битным программам для защищённого режима.

                                                            В результате вместо двух переходов на всех остальных платформах (которые большинство их них просто не смогли пережить… AmigaOS 4 это, всё-таки, «жизнь после смерти») на платформе IBM PC переход был один. Да, он был очень длительным (начали в 1993м с появлением Windows NT, закончили в 2001м с появлением Windows XP) — но при этом ни в какой момент пользователям не приходилось сталкиваться с тем, что их библиотека накопленных программ, вдруг, «превратилась в тыкву».

                                                            Конечно можно себе представить и другой мир. Мир, где Apple не делает идиотских движение и вместо дёрганий с Apple III, Apple Lisa и Macintosh переходит прямо к Apple IIGS — причём форсированно, в 1983м… а потом WDC выпускает какой-нибудь 65832… тогда, возможно, был бы шанс повторить путь x86 и через промежуточную модель (у x86 это был 80286) перейти от 8 бит к 32 битам без потери библиотеки программ…

                                                            Но история не знает сослагательного наклонения — случилось то, что случилось.

                                                            И случилось, во-многом, именно потому что 8086 позволял адресовать 1 мегабайт, но не позволял адресовать 4 гигабайта.

                                                            Если бы не это — массового перехода на 32битные OS (с точки зрения прикладных программ Windows 95 — вполне полноценная OS с защищённым режимом) в 1995-1996м (когда, как раз, все конкуренты боролись с тем, что все их красивости «рассыпались как дым» от одного неосторожного движения мышью) не случилось бы. Он всё равно случился бы — но позже… то есть опять-таки — у альтернативных платформ появился бы шанс.

                                                            Кстати, 68000 был запрещён к ввозу в СССР, а впоследствии и в Россию, до 1995 года.
                                                            С 8086 тоже всё было непросто. Кажется у Pentium существала специальная версия «с особо пониженными частотами», которая вписывалась в ограничения… её на выставках в России показывали… но когда они пошли в серию это уже не было проблемой.

                                                            В любом случае — сам переход на 68000 был проблемой. Именно на этом переходе все альтернативные платформы «потеряли темп». До этого (суицидального, как потом выяснилось) перехода доля PC-совместимых персоналок никогда не превышала ⅓. После этого перехода — она никогда не снижалась ниже ¾.

                                                            Максимум чего всем альтернативным платформам вместе взятым удалось добиться после этого перехода — было 23.21% в 1991м.
                                                              –1
                                                              Если бы не это — массового перехода на 32битные OS (с точки зрения прикладных программ Windows 95 — вполне полноценная OS с защищённым режимом) в 1995-1996м (когда, как раз, все конкуренты боролись с тем, что все их красивости «рассыпались как дым» от одного неосторожного движения мышью) не случилось бы. Он всё равно случился бы — но позже… то есть опять-таки — у альтернативных платформ появился бы шанс.

                                                              32-битные OS это не 95 год, а 85. И ничего ни у кого не рассыпалось от неосторожного движения мыши, всё работало, никто не жаловался.

                                                                0
                                                                32-битные OS это не 95 год, а 85.
                                                                В этом и беда, мой друг, в этом и беда. В 1995 Microsoft еле-еле, но сумел вписать операционку с полноценным защищённым режимом для программ в приемлемые, для того времени, 4-8MB. А в 1985м — об этом можно было только мечтать. И в результате все эти «32-битные OS» — это общее адресное пространство для всех программ и кооперативная многозадачность (строго говоря Amaga поддерживала и вытесняющюю, но на практике получился гибрид с худшими чертами обоих: медленее, чем кооперативная, но при этом, поскольку защиты памяти всё равно нет и любая программа может всю эту «вытесняемость» остановить к чертям — без возможности поддерживать многоядерные системы).

                                                                И ничего ни у кого не рассыпалось от неосторожного движения мыши, всё работало, никто не жаловался.
                                                                Вот только не надо сказок, а? У нас в школе были старенькие Маки, куда MacOS не вставала. Там я это «ни у кого не рассыпалось» наблюдал воочью. Запустите десятка два программ (особенно не самых популярных и «вылизанных с годами») — и наблюдайте всеми обожаемую бомбочку (ну или Guru Mediation, если у вас Amiga).

                                                                Да, если новых программ не ставить и составить ментальную карту «вещей, которые не нужно делать» — то можно как-то жить. Но это по качеству жизни — близко к уровню к MS-DOS… или Windows 95. Но никак не к Windows NT/2000/XP.

                                                                И если в случае с Windows 95 все понимали «да, это, конечно, трэш и угар… но как скопим денег — поставим Windows NT и проблемы решатся… может даже пару процессоров удастся прикупить» (Windows NT вышла раньше Windows 95, напоминаю… и сразу поддерживала и DEC Alpha и SMP)… то у всех альтернатив… ничего подобного не было: было понятно, что глюки так и останутся глюками — а что будет через 3-5-10 лет… понятно не было.

                                                                Очередная «система без будущего», как и с 8-битками за 10 лет до того.
                                                                  +1
                                                                  В этом и беда, мой друг, в этом и беда. В 1995 Microsoft еле-еле, но сумел вписать операционку с полноценным защищённым режимом для программ в приемлемые, для того времени, 4-8MB.

                                                                  Ну так Майкрософт еле-еле сумел вписать её туда не потому, что полноценный защищённый режим — это так сложно, а потому, что вместе с полноценным защищённым режимом там ещё должен прилагаться мощный по тем временам оконный менеджер, мультимедийные возможности, довольно тяжёлые системные API, да блин даже обои на рабочем столе 800x600 в 16-битном цвете, это, минуточку, мегабайт памяти. У IBM появилась операционка с защищенным режимом и с поддержкой виртуальных машин ещё тогда, когда Intel переходил с четырех бит на восемь. И этой операционке с большим запасом хватало, минуточку, 512К ферромагнитной памяти среднего мейнфрейма тех лет. Но да, там красивых окошек не было, был вездесущий зелёненький терминал 3270
                                                                    0
                                                                    Всё так, но в данном, конкретном, случае, разница между 512K и 4MB непринципиальна. Всё равно это гораздо больше, чем можно комфортно впихнуть в 8 битную систему с 16-битной адресной шиной. Да, я знаю, в PDP-11 впихивали… и даже Unix там «ходил» — но, опять-таки, с теми самыми зелёненькими терминалами и, как бы это сказать… «на пределе». Графику пришлось-таки добавлять уже на 32-битных системах.

                                                                    Это достижение, кстати, Microsoft, теоретически, даже повторил — но практически это, всё-таки, чисто исторический курьёз…

                                                                    В любом случае: даже если бы в 512K и удалось что-либо упихать таки сама платформа должна была поддерживать больше, потому как потребности-то растут каждый год и переход на платформу, которой больше некуда «расти» — довольно глуп.

                                                                    На IBM/370 512K было, скорее, начальной моделью, чем типичной. А C64 на этом объёме как раз закончился.

                                                                    P.S. Мультимедийные возможности, кстати, мало кому были нужны в 1995м. Их даже Commodore особо в рекламе не упоминал, так как мало кто понимал для чего это можно приспособить (кроме как для игр).
                                                                      0
                                                                      Да, я знаю, в PDP-11 впихивали… и даже Unix там «ходил»

                                                                      Да к слову, Unix в те годы не так чтобы далеко и ушёл от файловых мониторов уровня CP/M или DOS, разве что в идеологическом плане. А так, тогдашние юниксы ведь и на PC XT работали, где средства защиты в частности и многозадачности в целом отсутствуют как класс.
                                                                        –1
                                                                        Ну дык и сегодня ведь есть и μClinux и FDPIC.

                                                                        Но это «для сильных духом», всё-таки.
                                                                    0
                                                                    старенькие Маки, куда MacOS не вставала.

                                                                    Что же там стояло?
                                                                      0
                                                                      Опечатка. MacOS X, конечно. Не помню что стояло. Classic macOS какой-то.
                                                                0

                                                                У меня в шкафу стоит Беста-88
                                                                год выпуска 1988.

                                                                  0

                                                                  Так что m68k не только не был запрещен к ввозу, но и на его основе делались серийные машины. Стоили они дорого (по ведомости на 88 год около 200 тысяч советских рублей + 7 тыс рублей за каждый терминал), но ЗиЛ их прозвел достаточное количество и у нас в унверситете они жили до конца 90-х.

                                                                    0

                                                                    Скорее всего они ввезены через венгерский Videoton — очень мутная схема реэкспорта через третьи страны.


                                                                    Более забавно, что через 10 лет Freescale чипы разрабатывались в Нижнем Новгороде.

                                                                0
                                                                Ограничение доступа к железу и виртуализация памяти и ввода-вывода были неизбежны для перехода к многозадачности, но их внедрение в процессоры не требовало отказа от существующего ПО — эта задача успешно решается перехватом обращений к разделяемым ресурсам по исключениям контроля доступа. Как раз хорошая расширяемость позволяет долго существовать параллельно старым и новым программам, в то время, пока преодолеваются детские болезни новой операционки с API, рассчитанным на многозадачность.
                                                                  0
                                                                  Ограничение доступа к железу и виртуализация памяти и ввода-вывода были неизбежны для перехода к многозадачности,
                                                                  Изучите матчасть, пожалуйста. Mac (классический, конечно), AmigaOS, GEM (на Atari ST), да даже и ранние версии Windows (до версии 3.0 включительно) — отлично без этого обходились.

                                                                  но их внедрение в процессоры не требовало отказа от существующего ПО — эта задача успешно решается перехватом обращений к разделяемым ресурсам по исключениям контроля доступа.
                                                                  Теоретически да, практически нет. Одни циклы задержки чего стоят. Можете попробовать поиграться со старым софтом (1980х, не 1990х… в 1990х даже DOS-софт уже хоть немного, но под Windows тестировался и проблема стали не такой острой) — на old-dos его достаточно.

                                                                  Какой-нибудь компилятор пакетный — запускается и работат без проблем. А вот уже что-нибудь интерактивное… да ещё с графикой… часто даже запусть не получается. Про знаменитую проблему c Runtime Error 200 даже Wikipedia пишет.

                                                                  Сегодня-то да, можно без проблем эмулировать какой хошь процессор, хоть 4.77Mhz, хоть 100MHz и всё будет хорошо. А в момент перехода у вас такой роскоши нету…

                                                                  Это ещё если железа нет специфического (ключа защиты, ага). Если же есть… то хоть как-то работает только подход Windows95: позволить программе на MS-DOS, фактически, единолично распоряжаться компьютером, а уж вся эти 32-битная «фигня» — пусть работает по прерываниям, когда «типа как TSR» берёт управление на себя…

                                                                  Так что оба перехода — крайне болезненны… и к многозадачности и к защищённости.

                                                                  Однако на x86 с точки зрения разработчика прикладных программ — переход был один: до Windows 3.1 большинство программ были под MS DOS, а начиная с Windows 3.1 — там уже сразу и многозадачность и защищённость (дырявая, да, но...)
                                                                    0
                                                                    Я в курсе, как работал механизм кооперативной многозадачности в первых версиях Windows. Неизбежен — не значит обязателен, я имел в виду, что этот переход обязательно произошел бы и в случае, если бы 8086 сделали бы 32-разрядным — потому что изолированность программ нужна для стабильности работы в условиях, когда программы не тестируются разработчиком ОС на совместимость, как это практикует Apple.
                                                                      0
                                                                      Совершенно верно — слом всё равно был бы был, однако в этом случае x86 пришлось бы пройти через те же, примерно, два «классических» слома, что и все остальные платформы: вначале — GUI, потом — защита.

                                                                      Потому что у базовой модели IBM PC на GUI, как бы, тоже памяти не хватало — 16K и всё, хоть какая там у процессора битность.

                                                                      Именно вот эта странная конструкция с сегментами привела к тому, что первый переход случился позже, второй — раньше, а в итоге — вместо двух переходов случился один.
                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                    0
                                                                    Операционки вроде DOS не делали изоляцию железа по одной простой причине — процессор это не поддерживал.
                                                                    Вы это сейчас серьёзно? Попробуйте, на досуге, сделать операционку с защищённым режимом и посмотрите сколько памяти она потребует. Учтите, что базовая версия IBM PC имела 16KiB оперативки и 8KiB ROM.

                                                                    Успехов.

                                                                    P.S. У IBM и Microsoft как-то меньше, чем в 2MB вписаться не удалось (OS/2). Но может у них там дураки сидят. Windows 286 и та требовала минимум 512KB и жёсткий диск впридачу.
                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                        0
                                                                        Например, через внешний аппаратный менеджер памяти. На PDP был такой.
                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                            +1
                                                                            Полагаю, все же вопрос в том, как обеспечить разделение заведомо не-злонамеренных программ, т.е. избежать отказов из-за ошибок в софте, а не намеренных диверсий.
                                                                            DrPass, тем не менее, вопрос был про процессор 8086.
                                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                                0
                                                                                Хотелось бы услышать предложения khim, как реализовать защиту от такого на процессоре 8086.
                                                                                От чего именно вы собрались защищаться? HLT — не HCF, её, как бы, даже и разумно вызывать когда вы ждёте нажатия клавиши или таймера. Даже на 8086.

                                                                                А таблицу прерываний можно защитить поставив пару триггеров между памятью и процессором.

                                                                                Так что при наличии желания и достаточно «очумелых» ручек всё делается, конечно.
                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                    0
                                                                                    Нет, не путаю. Первое требуется для надёжной реализации второго, но это разные вещи.

                                                                                    Фактически jmp . делает то же самое, что и hlt (на современных процессорах можно заметить разницу по температуре, в 80е даже этого было сделать нельзя). И при этом работает во всех, самых защищённых и современных процессорах.

                                                                                    Вас это не смущает?
                                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                                        0
                                                                                        Меня смущает, вы так и не дали ответа, как пара триггеров помогут реализовать защищенный режим.
                                                                                        Пара триггеров нужны, чтобы защищённая часть операционки могла защитить область прерываний от пользовательской программы. Разумеется для того, чтобы реализовать защищённый режим — вам потребуется сопроцессор, но их и так для 8086 было два: 8087 и 8089.

                                                                                        Пример с зацикливанием jmp тоже смущает, потому что в режиме пользователя невозможно запретить прерывания и система может переключиться на другую задачу.
                                                                                        NMI вообще ни в каком режиме нельзя запретить. И он вас вышибет и из jmp . и из hlt.

                                                                                        Да, конечно, всё это требует некоторых нетривиальных манипуляций, но если люди умудрялись к 68000 реализовывать UNIX — то непонятно что может вам помешать это сделать на 8086.
                                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                                            +2
                                                                                            Сложный вопрос. Я просто объясняю, что ваше утверждение «операционки вроде DOS не делали изоляцию железа по одной простой причине — процессор это не поддерживал» является бредом.

                                                                                            DOS ведь появилась не на пустом месте — она разрабывалась как часть проекта по созданию IBM 5150… проекта, который маркетологи поставили в один ряд с другими компьютерами IBM 51xx. При этом, внезапно, как раз родоночальнык, IBM 5100 — эмулировал IBM/370… которая, как раз, уже поддерживала и защиту паямти и много чего ещё.

                                                                                            Это, кстати, другой вариант, про который я просто забыл, извините.

                                                                                            А на процессорах 68000, которые тоже не содержали в процессоре никакой защиты — небезизвестный Sun свои первые Unix-машинки делал.

                                                                                            То есть DOS не поддерживал защиту не потому, что процессор там чего-то не мог, а потому что для этого, помимо процессора 8086 требовалось добавить в систему ещё кой-какое железо (или ограничиться эмуляций — что привелобы, конечно, к ужасной скорости… но USCD p-System именно это и делала, хоть и опционально… так что такой вариант тоже рассматривался). И разработчики IBM PC — решили этого не делать. Хотя могли бы.

                                                                                            P.S. Между прочим когда Билл Гейтс говорил с представителями Microsoft о поставках операционки — он не блефовал… это не был «бизнес по русски» (когда один пошёл «искать вагон сахара, другой – искать деньги»). У Microsoft уже была операционка под названием MDOS или MIDAS (про неё даже Wikipedia пишет… правда почему-то в статье про её автора только). Но IBM она показалась «слишком тяжёлой» (хотя как раз туда защита подошла бы прекрасно). И многозадачаную MS-DOS — тоже IBM «зарезала» (в пользу OS/2). В общем чётко видно, что «тяжёлая» операционка с защитой — тогда в планы IBM не вписывалась… потому её и не было. А не потому что в системе на базе 8086 её было невозможно сделать…
                                                                                              0
                                                                                              является бредом.

                                                                                              Так, к слову, если какое-либо утверждение лично вам не нравится, и даже если оно объективно неверное, оно от этого бредом не становится :)
                                                                                              На самом деле вы все забываете, что речь идет о персональном компьютере. Это машина, которая принципиально создавалась для использования одним человеком. Создавалась в эпоху задолго до появления компьютерных вирусов и вообще зловредных программ. Поэтому при проектировании IBM PC защита памяти вообще и близко в планах не стояла, и потребности в ней даже не горизонте не просматривалось. Вот многозадачность — да, это в перспективе могло потребоваться.
                                                                                                +1
                                                                                                Защита памяти не имеет никакой связи со зловредными программами.
                                                                                                Защита пямяти появилась в 1960-е, первые зловреды — в 1980-е.
                                                                                                  0
                                                                                                  Защита памяти не имеет никакой связи со зловредными программами.

                                                                                                  На однопользовательских компьютерах имеет самое непосредственное. Если мы говорим про мейнфрейм, там изоляция страниц памяти нужна для того, чтобы данные разных пользователей не пересекались. На персоналке 1990-х это было востребовано только для того, чтобы нежелательный софт не лез в пространство других процессов, никаких других применений этому в однопользовательской среде нет.
                                                                                                    0
                                                                                                    На однопользовательских многозадачных системах она нужна затем, чтобы сбой одной программы не приводил ко крэшу всей системы.
                                                                                                      0
                                                                                                      Тем не менее, защита появилась на однопользовательских многозадачных системах тогда, когда практически во всех приложениях память распределялась достаточно надёжными программными менеджерами, и битые указатели не гуляли куда попало. Зато с завидной регулярностью выходили разного рода зловреды.
                                                                                                        0
                                                                                                        Можете объяснить, как защита памяти на однопользовательских многозадачных системах на персоналках 1990-х (т.е. в Win9x) препятствовала зловредам?
                                                                                                        Напомню, что там любой исполняющийся код имел «права администратора».
                                                                                                          0
                                                                                                          Не могу. Но я также не смог бы и объяснить, как она там помогала защищаться от сбоев приложений, учитывая, что область системных библиотек пользовательского режима в диапазоне 2-3 Гб в Вин9х общая для всех приложений, и также доступна для записи.
                                                                                                  0
                                                                                                  На самом деле вы все забываете, что речь идет о персональном компьютере.
                                                                                                  Я-то как раз не забываю. Но тут стрелочка в другую сторону: если мы делаем дешёвый компьютер с однозадачной системой, то нам защита, так-то, не особо и нужна. А это значит что мы возьмём процессор без защиты и ничего аппаратного туда прикручивать тоже не будем.

                                                                                                  Но тут, как бы, причина — это персональный помпьютер, а уже следствия — «OS без излишеств» и под неё — процессор без MMU.

                                                                                                  Так, к слову, если какое-либо утверждение лично вам не нравится, и даже если оно объективно неверное, оно от этого бредом не становится :)
                                                                                                  Согласен. Бредом оно становится потому что человек путает причину со следствием, а не потому что оно неверное.
                                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                    0
                                                                                    тем не менее, вопрос был про процессор 8086.

                                                                                    Я имел в виду существующие архитектуры персональных компьютеров, в смысле, реализация защиты на стороне софта, без изменения схемы персональных ПК.
                                                                                      0
                                                                                      Без железа, конечно, на 8086 никакой защиты нету. Но можно придумать относительно недорогую схему, позволяющую создавать защищённые OS с разделяемыми программами.

                                                                                      Не Unix, конечно, там полноценное MMU нужно. Но что-то похожее на ранние операционки на PDP-11 — легко.

                                                                                      Вопрос в размерах. В 16K вы это вот всё — точно не упихате. И даже в 64K (минимальный объём для реальной работы PC-DOS, вроде бы).
                                                                                  0
                                                                                  Вопрос подразумевал, как это сделать на существующих архитектурах. Понятное дело, что со «внешним аппаратным чем-то» можно сколь угодно фич реализовать. Так-то и в советской ЕС 1842 добавили к 8086, пардон, 1810ВМ86 защищённый режим с помощью дополнительной микросхемы-менеджера памяти. Впрочем, 1810ВМ86 там тоже был несколько напильником обработан, получив такую волшебную фичу 286-го, как Invalid opcode interrupt
                                                                          0
                                                                          Боюсь, что в 1978 году 640К это было очень много и стоили они сотни долларов.
                                                                            +3
                                                                            640K? Сотни долларов? Где вы нашли такую дешёвую память?

                                                                            Сюда гляньте.

                                                                            Закон Мура — это когда вперёд смотреть хорошо. А как в прошлое глянешь — так от цен волосы начинают шевелиться там, где им и расти-то не положено…
                                                                              0
                                                                              Да, 20-битного адреса в 1978 году было более чем достаточно. Но вот 16-битного — уже нет, пришлось городить сдвинутые на 4 бита сегментные регистры. Это создавало проблемы при работе с данными размером больше 64К, которые были очевидны уже в 1978 году. Избавить от этих проблем могли бы 32-разрядные регистры адреса.
                                                                                0
                                                                                Сначала хватило бы и 24-битных. Так и появился 286 (к тому же, который мог 1 ГБ виртуальной памяти адресовать).
                                                                              +1

                                                                              Особенно части ALU реализуюище умножение и деление — совсем чуть-чуть увеличаться в обьеме. /s.


                                                                              P.S. Одна из "фишек" 8086 (и 8088) была в том, что его запихали в 40-пиновый стандартный корпус. Не помню всех подробностей, но производителям это оказалось удобно в тот момент.
                                                                              Как результат — у 40-ножной микросхемы даже при 20-битной шине адреса и 16 битной шине данных — не хватило на все ног, так что пришлось делать шину данных и адреса мультиплексирующими, т.е. одни и те-же ноги использовались как для данных так и для адреса, в зависимости от управляющих сигналов на других ногах.
                                                                              Представьте как вы бы 32х битную шину адреса и 32х битную шину данных в это запихивали. Даже при условии полной мулттиплексии на все остальное оставалось бы 8 ног, из которых как минимум 2 — питание.


                                                                              P.S. А в фотографии процессора со вскрытой крышкой завораживает тот факт, что в принципе вооружившись хорошей лупой и иголкой, можно взять и "ткнуть иголкой в регистр AX", т.е. все структуры процессора более менее видны не очень вооруженным глазом.

                                                                                0
                                                                                Особенно части ALU реализуюище умножение и деление — совсем чуть-чуть увеличаться в обьеме. /s
                                                                                Они увеличатся и сильно и чуть-чуть и даже уменьшатся. Всё одновременно. Ну просто потому что любое утверждение, касающееся элементов пустого множества — истинно.

                                                                                Представьте как вы бы 32х битную шину адреса и 32х битную шину данных в это запихивали.
                                                                                А зачем это представлять? У 80386SX, думаете, шина адреса 32-битная? Ага, щаз. И шина адреса и шина данных уже, чем 32-бита.

                                                                                Так что нет — сделать процессор 32-битным было возможно. 68000 вышел всего через год после 8086. Просто, в те времена, это не казалось очень нужным… а главное — 32бита были «зарезервированы» под 8800 iAPX432. Вот когда он вышел и умер — начали делать первый нормальный процессор на базе 8086…
                                                                                  0
                                                                                  Особенно части ALU реализуюище умножение и деление — совсем чуть-чуть увеличаться в обьеме.
                                                                                  Там нет аппаратного умножения и деления — только микропрограммное. Соответственно, если и есть какие-то аппаратные блоки для этого — то это всего лишь счётчик битов, не более того. Его разрядность увеличится с 4 до 5 бит. А корпус и шину можно было оставить без изменений. Хотя, конечно, это тормозило систему — но по-видимому так было существенно дешевле.
                                                                                    0

                                                                                    Ну как минимум сумматор то там был? без него умножение занимало бы не 40-50 тактов, а все 500-1000.
                                                                                    А даже сумматор, если сделать хотя бы частичный carry-lookahead — уже довольно много места занимает. (И при удвоении разрядности будет как минимум в двое больше занимать, либо будет больше тормозить)

                                                                                      0
                                                                                      Ну да, АЛУ при увеличениии разрядности вдвое будет занимать примерно вдвое больше места. Но это учтено в моей оценке увеличения площади кристалла на 15..20%. Схема быстрого переноса при увеличении разрядности растёт больше чем вдвое, но это превышение мало по сравнению со всей схемой сумматора.
                                                                                0
                                                                                Интересно, когда на Ютюбе появятся видосы энтузиастов «Как сделать процессор 486 в домашних условиях»? Просто для сравнения люди создают точнейшие чпу станки в кустарных условиях, проводят сложные химические реакции в простых лабораториях гаражного уровня, насколько литографический процесс стал ближе за эти годы к самоделкиным?
                                                                                  +3
                                                                                    0
                                                                                    Не нашел Bill of materials
                                                                                      0
                                                                                      Altera или xilinx 100+ klut.это где то от $100 и больше
                                                                                        0
                                                                                        Ну это же не изготовление процессора ни разу. Это просто эмулятор. Вы можете 486-й эмулировать и без всяких ПЛИСок. Тут речь же идет про кустарное производство микросхем, а 486-й процессор просто как пример с долей иронии привели.
                                                                                          0
                                                                                          Неа. Это не эмулятор. Это попытка реконструкции. Ее можно залить в ASIC.К примеру если интель опубликует полную начинку, то можно её залить как есть.
                                                                                            0
                                                                                            Ее можно залить в ASIC.

                                                                                            Как_нарисовать_сову.jpeg
                                                                                              0
                                                                                              Ну примерно… Но назвать эту работу (ao486) просто эмуляцией, будет еще дальше от истины.
                                                                                                0
                                                                                                Я не считаю ao486 эмуляцией; я считаю эту работу — применительно к созданию клона 486 у себя в гараже — двумя кружочками от совы.
                                                                                                    +1
                                                                                                    Это всё-таки не то: статья про то, что «большие дяди» готовы принимать проекты и бесплатно их реализовывать мелкими партиями, а вопрос был про «сделать дома», как сейчас делают печатные платы под очень мелкие детали, которые раньше были доступны только этим самым «большим дядям».
                                                                                    0
                                                                                    насколько литографический процесс стал ближе за эти годы к самоделкиным?

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

                                                                                      У BarsMonster был тут когда то написан цикл статей
                                                                                      habr.com/ru/post/118534
                                                                                      habr.com/ru/post/145373
                                                                                      habr.com/ru/post/188992
                                                                                        +1
                                                                                        Ответ на вопрос — процесс ближе к самоделкам особо не стал, т.к. в одну каску — фатально много времени нужно. Это же и меня срезало.

                                                                                        В мире есть наверное с десяток людей, которые домашние микросхемы делали в одиночку, или самые их критичные элементы. Но больше 10 транзисторов у самодельщиков не видел.

                                                                                        Так что о 486 дома думать не стоит…
                                                                                        0
                                                                                        Выглядит не очень дешево, но возможно sam.zeloof.xyz/category/semiconductor
                                                                                          +1

                                                                                          Я все жду когда появится энтуазист делающий современные платы (и мосты) под супер 7, с AGP 2x, PCI и USB 2.0, еще и в формате малинки. Может доживу до этих дней и достану сейвы старых игр с винчестера и наконец допройду Героев :D

                                                                                            0
                                                                                            0
                                                                                            Страшно жалко, что iAPX 432 не взлетел… Есть замечательная книга Органика на тему этого процессора и Аде на нем — удивительно вдохновляющая и современная, несмотря на время.
                                                                                            И вообще, может быть путь развития ПО свернул бы в другую сторону и сейчас не приходилось бы обсуждать каверзы яваскрипта и всякие вирусы…
                                                                                              0
                                                                                              Обиднее всего, что он не взлетел из-за классического синдрома второй системы: в него попытались запихать сразу, одновременно, слишком много всего — в результате получился монстр, который просто было невозможно «испечь» на техпроцессах того времени. Intel попыталась даже исправить ошибки… но время было упущено. Максимум для чего вся эта чудесная машинерия использовалась массово — XOR-сопроцессор для RAID-контроллеров. Чистое забивание гвоздей микроскопом.
                                                                                              +3
                                                                                              Зачем рендер процессора на первой фотке? Он не соответствует оригиналу.
                                                                                                0
                                                                                                В оригинале его нет, так что это прихоть переводчика.
                                                                                                0
                                                                                                8086 совсем не совместим с 8080, ни бинарно, ни по ассемблеру. Надо вручную команды переделывать, ну может только немного автоматизировать трансляцию. Иначе CP/M под 8086 быстрей вышла.
                                                                                                    +1
                                                                                                    Надо вручную команды переделывать, ну может только немного автоматизировать трансляцию

                                                                                                    Ну чего «немного»? Оно полностью автоматизируется, программа 8080 по адресам отлично укладывается в сегмент 8086, а команды мапятся один к одному. Так же и задумывалось изначально.
                                                                                                    Иначе CP/M под 8086 быстрей вышла.

                                                                                                    Портирование операционки — это не только про трансляцию процессорного кода. Это ещё и адаптация под конкретный компьютер, под его функции BIOS, под его распределение памяти и портов ввода/вывода, под системы команд его устройств.
                                                                                                      –1
                                                                                                      Просто я хотел сказать что сам синтаксис ассемблера 8080 и 8086 довольно сильно различаются, так что просто так перекомпилировать исходник не получится. Надо сначала надо воспользоватся транслятором 8080to8086, а потом ассемблером 8086, при этом могут быть ошибки, скорей всего понабиться хоть немного ручной работы. А вообще лучше вручную переделать программу с учётом новых возможностей 8086.
                                                                                                      А так, транслятором можно и например 6502 в 8086 транслировать, так что это не в счёт.
                                                                                                      Кстати, можно какой нибудь ассемблер, например UASM дополнить генерации кода для 8080, Z80 под Intel8086 стиль команд.
                                                                                                      Типа так: mov A,[HL], add A, B. И так далее. Тогда можно говорить о некоторой совместимости на уровне ассемблера.