Как стать автором
Обновить
2
0
andrey @kekoz

Пользователь

Отправить сообщение

VAX MACRO — это не “разновидность ассемблера”, а самый что ни на есть ассемблер, просто с мощнейшими макро-возможностями, но это ещё с MACRO-11 началось.

А у меня в школе был Algol-60. И подозреваю, я тут один такой.

АЦПУ-128 оно называлось. Бумага из него аж до потолка выстреливалась, если крышку не закрыть.

О, ВТА-2000! Не было более ненавистного монитора в “совке”. Мало того, что у него совершенно своя экзотическая система команд была — вообще ничего общего с VT52, VT100, так он ещё и адово тормозной был. На вывод заполненного экрана — 24×80 — под 20 секунд уходило.

Только “ИНЖАЛИД" :)

Какая-то слабая комплектация вам досталась, из первых. Наши СМ-4 были по 3 стойки + CAMAC, полупроводниковая память (динамическая), в ПЗУ прошита куча загрузчиков с разных носителей — дисков всех мастей, магнитных и перфолент — на панели нужно было только набрать один адрес нужного загрузчика и инициировать процесс загрузки.

Про 56K не совсем корректно. СМ-3 адресовала 64К. Другое дело, что в самой архитектуре DEC PDP-11 — UNIBUS — ввод/вывод реализуется через отображение в адресное пространство регистров устройств (в системе команд вообще нет никаких команд типа IN/OUT), и отображение это сделано именно на 8K “верхних” адресов 64K-пространства. Таким образом, корректнее утверждать не “СМ3 могла адресовать 56К”, а “операционной системе доступно 56K RAM”

Справедливости ради, все перечисленные “операционные системы RT11xx” в действительности — одна операционная система. RT11. А вот всякие там SJ/FB/XM/ZM — это в терминах DEC того времени — мониторы. А по сути это ядра. И загрузить систему можно было с любым.

XM грузилась только на моделях с MMU, и поддерживала до 8 (при сборке — “генерации” — ядра настраивалось) пользовательских процессов — F/B и до 6 так называемых “системных”.

А когда вы разжились мультиплексором и терминалами, то грузили вы уже не совсем RT11, поскольку она однопользовательская. В РАФОС этот якобы монитор хоть и назывался RT11TS, но это уже не DEC'овское детище, это TSX-11 от S&H Computing. То есть грузили-то вы, конечно, именно RT11SJ, но далее уже под ним запускали как пользовательский процесс этот самый TSX, а он уже захватывал на себя всё управление железом, и предоставлял каждому юзеру виртуальную RT11 с SJ-монитором.

Прекрасная статья для желающих приобщиться, спасибо. Но глава 10 — это какие-то домыслы и/или фантазии.

Одной из давних особенностей системы является то, что Вы можете установить самый минимум операционной системы на поддерживаемую аппаратную платформу, далее зайти в каталог /usr/src и ввести команду make buildworld, после чего система выкачает базовый компилятор, затем самые последние исходники компилятора, соберет его, а с его помощью соберет ядро и все остальные части системы

Одной из давних особенностей ОС Unix (и FreeBSD) является то, что компилятор языка C является неотъемлемой частью ОС.У FreeBSD нет “минимума”, при любых опциях установки у тебя в любом случае будет полный набор инструментов для разработки (на С). Когда-то это был gnu gcc, сейчас llvm clang. И с тех пор, как был осуществлён переезд на llvm (с версии 10.0-RELEASE), как правило — актуальной версии. Устанавливать llvm 13 имеет смысл только в том случае, если тебе действительно необходима именно эта версия, сама же FreeBSD 13.1 (STABLE) собирается (и разумеется включает в себя) llvm 14

А вот /usr/src в зависимости от выбранных при установке опций может оказаться и пустой :)

Далее, если при установке ОС была выбрана и установка исходников, то ничего больше ниоткуда система выкачивать не будет. Можно вообще оторвать ей сеть и спокойно запускать make в директории /usr/src с любыми target (кроме doxygen). “Базовый компилятор”, повторюсь, это часть “минимума” ОС, как это всегда было в Unix.

CheckPoint без подписки — это банальный пакетный фильтр. И всё. Ништяки начинаются только с подпиской.

Владелец — компания. Veon.
О рисках заявил не “хрен с бугра Каан Терзиоглу”, а CEO компании. То есть — сама компания. Компания-владелец торговой марки “Билайн”.

Читал. И она у меня до сих пор в библиотеке. А ещё Н. Джехани «Язык Ада». И не очень известная в СССР/России (не переводилась) Serafino Amoroso, Giorgio Ingargiola «ADA. An Introduction to Program Design and Coding».

Поспорю с вами и с уважаемым TheCalligrapher по поводу переводов. Увы, но неприятной особенностью переводов англоязычной литературы по C/C++ на русский язык является вовсе не перевод “statement” как “оператор” (что абсолютно правильно, и именно так и должно переводиться). Ужас переводов на русский — это перевод “operator” как “оператор”. Именно из-за последнего и приходится горе-переводчикам либо плодить откровенно корявые “утверждение цикла for”, “утверждение условный оператор if”, либо создавать путаницу “операторов” (которые по-русски получаются все — операторы, а по-C — совершенно разные сущности языка) — “оператор for” и “арифметические операторы”.

Я, глядя на очередной перевод книги по C/C++, в первую очередь обращаю внимание на перевод трёх чаще всего путаемых горе-переводчиками слов — expression, statement, operator. И если в переводах путаница, и/или они не соответствуют:

  • expression — выражение;

  • statement — оператор;

  • operator — операция,

то мой вердикт однозначен без собственно чтения книги — “Читайте оригинал или ищите другой перевод”.

Увы, но ваш перевод попадает именно в категорию “читайте оригинал или ищите другой перевод”. Именно потому, что у вас, например, for(;;) | if() | + | = — всё операторы, но если читать оригинал, то первые два будут statements, а последние два — operators. И в результате того, что вы их смешали одним русским словом “оператор”, в одном месте вашего перевода вообще катастрофа — “выражения состоят из операндов и операторов” (An expression is a sequence of operators and operands that specifies computation of a value...) А покажите выражение из операндов 3.141592 и 2.718281 и оператора цикла :)

А условный оператор — это что? Это “if” или “?:”? Надо догадываться “из контекста”? Нет, друзья мои, язык C всё определяет чётко. Первый — selection statement (оператор), второе — conditional operator (операция).

Нет, про эту:

У нас (4-е управление МинЗдрава) для ЦКБ были закуплены три MicroVAX. Да-да, в годы цветущего КОКОМа. Как? Сразу опечалю — никакого сюжета для хорошего шпионского триллера в этих закупках не было. Итальянские коммуняки не были под ограничениями КОКОМ. Они и купили. И отгрузили их коммунякам советским. Правда, по цене почти в 4 раза выше закупки, ну да ЦК КПСС на себя денег народных не жалел (кто не знает, 4-е управление МинЗдрава СССР — “правительственная” медицина).

У “Едрисни”, думаешь, сейчас водятся такие друзья?

PS: Отдельная история — эти VAXы несколько лет не могли запустить. Лет, Карл! А запустили наконец лишь тогда, когда случилась перестройка, КОКОМ выключили, а Digital Equipment Corp. объявила амнистию нелегалам и поддержу. Но и это только в случае, если условия эксплуатации соответствуют требованиям корпорации, что тоже вызвало немало “веселья” среди тех, кто думал “Вот пустая комната, сюда и поставим”.

Речь давно не про 0x30 (это был мой косяк). Речь про КОПы 0x31 и 0x33.

Таки почитай рекомендованную литературу. Внимательно.

$ echo "0x33 0xc0 0x31 0xc0" | llvm-mc -mcpu=i686 -disassemble -show-inst
        .text
        xorl    %eax, %eax              # <MCInst #15279 XOR32rr_REV
                                        #  <MCOperand Reg:22>
                                        #  <MCOperand Reg:22>
                                        #  <MCOperand Reg:22>>
        xorl    %eax, %eax              # <MCInst #15278 XOR32rr
                                        #  <MCOperand Reg:22>
                                        #  <MCOperand Reg:22>
                                        #  <MCOperand Reg:22>>

Нет никакой разницы, да? Может, ты тогда откроешь всё же второй том «Intel​ 64 and IA-32 Architectures Software Developer’s Manual»? Там очень много интересного найти можно.

Один результат можно получить кучей способов, только это никак не означает, что все эти способы — одинаковые.

По-моему, ты не знаешь системы команд pdp-11. Это просто глупо сравнивать с x86 (любой “ширины”). Начнём хотя бы с функциональной ограниченности регистров.

И не надо откровенной чуши про “тот же самый xor eax, eax”, поскольку “xor al, al” это совсем не то же самое.

Нет у машинных кодов никаких преимуществ, кроме тех, которые имеет, например, сваренное яйцо перед сырым.

А про “систему” знает любой программист, который имеет опыт программирования на ассемблерах. Система называется “Архитектура”, частью которой является и система команд (instruction set). Назначение всех битов в кодах команд расписано подробно в любом reference guide к конкретному процессору. И от того, как эти команды записаны — битами или в мнемонической форме, не зависит ровным счётом ничего, кроме удобства чтения.

Ну да, про 0x59 не туда глянул, только сути это не меняет. А суть, повторяю, в том, что “программирование в машинных кодах” — это не какое-то ещё более низкоуровневое программирование, а всего лишь “ручное” исполнение того, с чем на 100500 порядков быстрее справляется ассемблер.

Это что за словоблудие? Ассемблерная мнемоника “xor eax, eax” — это всего лишь человекоудобная запись “машинного кода” 0x5d. И никак иначе ты эту операцию не запишешь. Такое “программирование в машинных кодах”, о котором ты говоришь — это тупо ручное исполнение работы ассемблеров. “Программирование в hex-редакторе”

Информация

В рейтинге
4 674-й
Откуда
Россия
Зарегистрирован
Активность