Коллеги, такой вопрос из мира "братьев меньших", т.е. s/38, as/400, iSeries, i и вот это вот все. Обладает ли мир z знаниями об автокоде для w-code? Я поясню немного откуда этот вопрос и его историю. Как известно, IBM давно поддерживает ряд платформ и набор трансляторов для них. Где-то в начале 90-х, появилась идея унифицировать трансляторы, так, чтобы они выдавали некий унифицированный автокод (получил название w-code), который затем прогоняют через оптимизатор и затем компилируют для конкретной платформы. Тогда были созданы общие трансляторы с С, RPG, COBOL (может что-то еще) для s/390, as/400, os/2 и rs/6000. До того момента, трансляторы на as400 выдавали автокод, который называется MI (ну или сейчас его называют еще old MI - OMI, чтобы отличать от нового MI, он же MI-prime). MI - достаточно высокоуровневый автокод, специально под платформу as/400, подробно документирован и на нем довольно много писали программ. В результате работы новых трансляторов, мы получаем бинарный w-code (он еще называется object w-code). Никакой информации по w-code в паблике в нашем мире нет. Есть только некоторые инсайдерские утечки по w-code. Он платформонезависимый. Однако, дает возможность делать указания для оптимизирующего транслятора на целевую платформу. w-code разрабатывается и поддерживается в подразделении не связанном с as/400. Это подразделение, противится открытию w-code в паблик. Сами разработчики as/400 не против были бы его открыть, так же как было сделано в MI, но это не в их юрисдикции, типа. Может быть в вашем мире есть знание о w-code? Спасибо. ps. Я пока не могу создавать свои темы. Спасибо LionLexXx за помощь.
Сообщение отредактировал alex654 - Вт, 24.12.2019, 23:48
alex654, добрый день. лично я, со своей системно-административной колокольни, никогда такого зверя, как w-code не видел и не слышал. видел коды для мейнфрейма на родном ассемблере, на высокоуровневом диалекте типа PL/ASM, который транслируется в ассемблер и в бинарник. если что-то похожее на w-code и есть, то это зарыто глубоко в логику транслятора и используется на промежуточном этапе. да, на мейнфреймах есть кросс-трансляторные библиотеки времени выполнения, но у меня ощущение, что это обычные бинарные модули, сразу разработанные на ассемблере и других языках самой платформы. а, вообще говоря, вы какую задачу решаете? собрать информацию для исторической справки, получить доступ к транслятору для переноса софта на другую платформу, или что? P.S. я поднял вам статус, можете создавать темы. P.P.S. а что, для захода с территории незалежной и на этот наш уютненький сайтик требуются обходные пути?.. вот не думал..
Нужно это для работы. Потому что реально сейчас "прямого" автокода для i нет. Есть OMI. Который транслируется в w-code и потом в NMI. В z проще, потому что у вас открыта архитектура, что дает возможность создавать эмуляторы типа hercules. Я знаю с высокой уверенностью, что транслятор С, например, общий для всех платформ от IBM.
alex654, в z не проще. и открытость архитектуры z - это рекламный миф, уж вы поверьте (при всей моей лояльности, если не любви к архитектуре 370/xa/390/z). например, невозможно найти полное публичное описание SIE. а это же краеугольный камень всей виртуализации! полного описания всех кодов DIAG тоже не будет нигде, это закрытая информация даже внутри IBM, равно как и полный перечень всех команд. я когда-то сцепился на эту тему с индусом, который представлял несколько лет назад новую машину и отвечал как раз за микропрограммы. тот просто открытым текстом сказал, мол, да, все не откроем, но вы не волнуйтесь, мы стараемся вести разработку ОС согласованно с логикой реализации команд процессора, и почти всегда это удается в той или иной степени, а в публичный доступ всей информации мы не откроем, потому что не хотим, это наше преимущество и защита интеллектуальной собственности, так что вообще отвали, будем душить эмуляторы, как только можем. именно по этой причине часть систем на Геркулесе не работает. да, постепенно народ трассит команды и моделирует диагностики, но это процесс не быстрый. и про компилятор Си на разных платформах. уже не общий. раньше был общий. сейчас от этой практики отходят, потому что слишком дорого держать единство компиляторов. и архитектура вперед бежит, и сами компиляторы индусам отдают на поддержку. в общем, все нерадужно.
Си на разных платформах. уже не общий. раньше был общий. сейчас от этой практики отходят, потому что слишком дорого держать единство компиляторов
Видимо надо пояснить, что придумали в IBM и зачем этот w-code. Как раз и ставилась задача снижения расходов. Выигрыш достигается на двух этапах за счет унификации. Во-первых, трансляторы с ЯВУ выдают платформонезависимый w-code. Затем, запускается оптимизатор w-code. Он общий для всех ЯВУ. И только затем результат транслируется в платформозависимый байт код. Т.о. отпадает необходимость не только в затратах на поддержку множества трансляторов с одного языка для разных платформ, но и появляется унифицированный оптимизатор для всех языков. Откуда мы в мире i немного больше знаем об этом? Потому что у нас сама архитектура OS уже имеет встроенный уровень виртуализации в виде платформонезависимой машины (MI). Более того, все программные объекты включают в себя специальную область (профайл) с кодом программы в MI. Умельцы раскопали в системе транслятор с object w-code в MI и как его запускать. Но вот автокода для него нет.
Нет, wcode закрыт и похоже это не решаемо. Но, нет худа без добра, есть другие интересные темы. В самом IBM уже запилили транслятор llvм. А это по сути значит что часики для еще одной кучи говна мамонта сильно ускорились. Причем в рочестере всегда недолюбливали w-code, и потому сделали прокладку в виде w-code->NMI при трансляции на всякий случай. Так что переход на LLVM не затронет ядро (SLIC).