
Сообщение от
Hunta
.SAV. Первый блок - некоторое количество ячеек со служебной информацией (типа - точка входа, начальное значение стека, размер загрузки) плюс свободные ячейки и место под стек (если по умолчанию, то начальное значение стека 1000(8)). Если специально не задавать значение стека и не играться абсолютными секциями, код и данные пойду с адреса 1000, и в .SAV файле это будет второй блок. То есть, если не принимать специальных мер, минимальный размер программы в RT - 2 блока. При тех же условиях в RSX - 4 блока (первые два - служебная информация).
889(10) байта - два блока - итого размер .SAV три блока или 512*3=1536 байт. Фраза выше говорит о полном не знании даже RT
Вот это уже интереснее. Имеем, как минимум, один блок загрузочной информации, а таких блоков в СОМ-файлe всегда ровно 0.

Сообщение от
Hunta
Аха. И применение на атомных станциях PDP говорит о полном Г среди современных контроллеров.
На всех атомных станциях стоят ПДП-11 - это уже дигноз - обостренная пидипимания. 

Сообщение от
Hunta
И я про тоже - полное не знание фактов.
Не знаю про детали вашего Кванта. Где бы их мог получить? Рассказали бы. Для меня Квант, это что-то с ВМ4 и памятью метра на 2, минимум.

Сообщение от
Hunta
Текст "супер-программы" приведён выше
Вас попросили имя файла в каталоге, чтобы виден был размер.

Сообщение от
Hunta
Потому что, в отличии от вас, я знаю - особенности системы команд PDP-11 и как работает Macro-11 и почему он не может "просчитать" простые переходы
От того, что вы знаете, почему что-то сделано плохо, оно от этого лучше не становится. Ну мастерп был пьян, скрипка не удалась, бывает. Но скрипка не удалась.

Сообщение от
Hunta
А в нормальных конторах работала многопользовательская RSX с памятью от мегабайта (например СМ-1420 или СМ-1600) и нормальной поддержкой программ, которым требуется немного больше памяти, чем 64 кб. Компиляторы с Fortran-а, кстати, генерировали код, который умел это дело.
Тут я с вами согласен, RSX-11 была самой продвинутой среди осей для пдп-11. Но тормозной, без каталогов (их вроде там как-то вроде и можно прикрутить, но почему-то обычно этого не делали). У нас вроде народ этим занимался, как побольше программы под пдп-11 делать и что-то получилось, но это типа редкого нестандарта - если бы это было не так, вы бы сразу назвали имена типичных файлов и их назначение. Компьютер BQT в открытом доступе и его RSX-11 может считаться эталонной. С другой стороны, абсолютное большинство людей, имевших дело с пдп-11 в СССР про RSX-11 почти ничего и не знал.

Сообщение от
Hunta
А в RSX и XM мониторе подход очень похожий, так что написать программу особого труда не составит. Кстати, опять же - компилятор с Fortran-а позволял писать программы, которым требовалось больше 64 кб, причём в наличии было два варианта библиотек поддержки - для программы, которая будет работать под XM монитором (по сути аналогичный подход, как и в RSX) или (внезапно) под SJ или FB, при условии, что проц PDP с MMU и размером памяти больше 56 кб
И где же такие программы среди стандартных? В ДОСе таких было много и даже большинство.

Сообщение от
Hunta
Пример того, как может выглядеть программа на языке ассемблера. Используется СТАНДАРТНЫЙ Macro-11
И что тут особенного? Любой нормальный макроассемблер так может. Больше использую fasm (для x86 и ARM) - там возможности для макросов, которых для макро-11 нет.

Сообщение от
Hunta
Забыл ещё про разделяемые библиотеки - аналог .dll - но с точки зрения системы - это области памяти с загруженными кодом и/или данными. Ещё один вариант (но уже достаточно экзотичный) использования разделяемой библиотеки - для доступа к (части) страницы в/в со стороны непривилегированных задач.
Ещё экзотичнее! А нормального файла с программой более 64 кб так и не представленно.

Сообщение от
Lethargeek
сильно сомневаюсь, это который?
68k
Код:
todec: ;converts d5 to stringbuf, it occupies 42 bytes
lea stringbuf(pc),a2
moveq #10,d1
.l1: move.l d5,d2
move.l d5,d0
clr.w d0
swap d0
divu d1,d0
swap d0
swap d2
move.w d0,d2
swap d2
divu d1,d0
move.w d2,d0
swap d2
or.b #'0',d2
move.b d2,(a2)+
move.l d0,d5
bne .l1
rts
x86
Код:
todec: ;convert dx:ax to stringbuf, it occupies 30 bytes
mov bx,stringbuf
mov si,10
.l1: mov cx,ax
mov ax,dx
xor dx,dx
div si
xchg ax,cx
div si
or dl,'0'
mov [bx],dl
inc bx
mov dx,cx
or cx,ax
jnz .l1
retn
Есть ещё код для 68000, использующий трюки со стеком, на 36 байт.
Код:
lea (stringbuf,pc),a2
moveq #10,d1
loop
move.l d5,-(a7) ; 0012 3456
moveq #0,d5
move.w (a7)+,d5 ; 0000 0012
divu.w d1,d5 ; 0008 0001
move.l d5,d0
move.w (a7)+,d5 ; 0008 3456
divu.w d1,d5 ; 0006 d208
swap d5 ; d208 0006
or.b #'0',d5
move.b d5,(a2)+
move.w d0,d5 ; d208 0001
swap d5 ; 0001 d208
bne.b loop
rts

Сообщение от
Lethargeek
зато арм может столько "стеков" навыделять, насколько свободных регистров под указатели хватит

Опять вы сбились, текст был про амиги, а там 68к и регистр стека один (два точнее, но второй пользователю недоступен). Этот трюк у амиговцев и получился только потому, что у 68к системный стек отдельный, на х86 так бы не получилось, там прерывания могли бы попортить данные.

Сообщение от
Lethargeek

а до конца предложение дочитывать не судьба? полностью:
то есть армовец, напротив, ВОЗРАЖАЕТ против такого предположения
Что там не дочитано? Там написано, что да, хуже, но у нас есть трюки. Типа да ваше авто быстрее нашей лошадки, но лошадка может и по полю проскакать диагональю.
Тема плотности кода - непростая. На одних задачах одно лучше, на других другой. Но код Арма без пальца побольше х86 практически всегда. Вот, например, ссылка.

Сообщение от
Lethargeek
ага, "высочайший" уровень работы с источниками по предыдущему примеру уже понятен

вот как можно после этого браться за исторические статьи? журнализм какой-то (в худшем смысле этого слова)
Какие исторические статьи? Может проблема в том, что люди, которые хорошо знают Арм (англичане-энтузиасты) никогда не сомневались при общении со мной (а они мою статью про АРМ читали), что плотность кодов у АРМа пониже. Хотя, Арм-Палец нередко позволяет обогнать х86 по плотности, но, повторю, ценой тормозов. Но это уже не старый добрый британский Арм, а то что из него сделали.

Сообщение от
Lethargeek
разве что каких-нибудь секретарш, которые никогда не запускали больше трёх с половиной софтин на них
в досе - постоянный трах с тремя кнопками, настройкой дополнительной памяти и подбором совместимых драйверов мыши
а для виндозов поначалу даже избегали писать топ-игры, пока характеристики железа не подросли
Вы работали с секретаршами? Если у них что-то падает, то будет истерика, а они работали и без истерик. А Дум откуда взялся, который Амиги закрыл? А Квейк, Цивилизация и почти все топовые игры до конца 90-х? Ерунду пишите.

Сообщение от
Lethargeek
еще раз, перечитывать до полного просветления:
у 68000
столько же РЕГИСТРОВ ДАННЫХ, сколько у 8086 регистров НЕ-СОВСЕМ-ОБЩЕГО НАЗНАЧЕНИЯ
и ПЛЮС к ним АДРЕСНЫЕ, то есть АДРЕСА НЕ ЗАНИМАЮТ РЕГИСТРЫ ДАННЫХ, В ОТЛИЧИЕ ОТ 8086
то есть
по факту у 8086 в каждый момент времени меньше регистровой памяти под данные
(и это даже без учёта разрядности 16 против 32!)
если обрабатывать только байты, то у x86 те же 8 байтовых регистров и 4 небайтовых "адресных"
а у моторолы - 8 байтовых и 8 небайтовых адресных - иииии победа присуждается мотороле!

Разрядность у 68000 адреса только 24 бита, а с данными по 32-бита работа идет очень медленно. У х86 роль адресных играют сегментные регистры, а в 68000 вам нужно постоянно и ЯВНО прописывать базовый адресный регистр. Если вам нужна индексация, то двойных индексов, как в х86, у 68к нет вообще, так как один из регистров - это база. Поэтому возня с адресными регистрами на 68к неприятный сюрприз для знакомых с х86 архитектурой.
Для байтов у 8086 8 нормальных байтовых регистров и ещё три для пар байт, у 68000 8-байтовых регистров и 8 адресных регистров, которые использовать для работы с данными непросто. Как пары байт их использовать не получится точно и байты в них грузить нельзя. Проверьте свою арифметику.

Сообщение от
Lethargeek
не "всегда", а "в лучшем случае" за три такта
Вот вам ещё, отличникам, пример. Инструкция MOVS выполняется за 5 тактов: 2 на прием из памяти, 2 на запись и 1 на саму инструкцию - два регистра надо изменить. В MOV та же история, 1 такт на саму инструкцию, 2 два на память.

Сообщение от
Lethargeek
толку-то от сферобыстроты в вакууме? когда на практике даже в песюках дешёвых под вайтами бывал и медленней
Не понял фразы. 

Сообщение от
Lethargeek
нет, я знаю, что для НОРМАЛЬНОГО не понадобилось бы потом срочно добавлять к нему еще и V86
Дос хорошо пошел, вот и добавили поддержку. Для нормальнольного мультитаскинга в 80286 все было отлично, не хуже лучших ПДП-11, а скорее лучше.

Сообщение от
Lethargeek
на поздних был, на остальных чипсет с многозадачностью справлялся почему-то лучше, чем "нормальный ммю 286"
Какая на Амигах многозадачность - простейшая, как и на первых виндузах. И Доса на амигах не было, а это и было главной проблемой на х86. Зиникс очень надежная система, с правильной архитектурой, но народ на Дос подсел.

Сообщение от
Lethargeek
да ну, ересь, эффект будет сколько-нибудь заметным, если мне регулярно будет нужно сразу куча крохотных отдельных программок (не могу представить себе, зачем бы)
Речь идет только о маленьком удобстве. Ещё пример, кэш включить, выключить и т.п.

Сообщение от
Hunta
В общем, поскольку уровень господина-"эксперта" мне совершенно понятен, а свободное время не бесконечно, пошёл ка я лучше доделывать драйвер CF, а то ещё модуль Ethernet для Кванта-2020 заждался. Будет Ethernet - любой желающий сможет подключиться к Квант-у и посмотреть на программу, которая может использовать до трех с чем-то мб памяти на 16-ти битной машине с нормальным ДП и ОС. Кстати, заодно и на СОВЕТСКУЮ программу редактор-оболочку, которая примерно так года на год-полтора опередила по идеям NC. Жаль только, что первоначально была сделана версия под RSX, а не под RSX и RT
А почему эксперта? Кто так меня вам представил так без меня? Лишь собираю данные. Правильно и вежливо ко мне обращаться надо - господин архивариус. Успехов в ретро-программировании. Некоторые такие крутые программы написали, что в 80-е и присниться немогло. И ещё не все шедевры прошлых лет найдены. Завел в Корветах тему про Турбо-Паскаль 4 для 8080 - работал лучше, чем Турбо-Паскаль 3 для z80 и даже 8088. И даже чем-то вроде обходил 4 на 8088! Но сорсов до сих пор нет. Автор хотел заработать... А ведь шедевр получился, хотя сам не тестировал - может там и багов вагон.