Начало программирования в Виндовс 12

ЭНИГМА (ПРОДОЛЖЕНИЕ)

Этой статьёй, Мастер Олег учреждает конкурс на новое позорное звание "Самый_Припизженый_Компилятор _Си_во_Вселенной". Сегодня его заслуженно и, видимо, на все времена, получает IBM_C_and_CPP_Compilers_for_WinNT-v3.6.5 вместе со всеми его клонами IBM VisualAge.

Согласись, от любого компилятора Си всегда можно ждать любой подлянки и всего, чего угодно. Но что ни говори, что-что, а 'Hello world' компилятор Си напечатать уметь обязан. Таков Ритуал и незыблемая Традиция. Так вот, IBM_C_and_CPP_Compilers_for_WinNT-v3.6.5, даже, на это не способен. Куда ему, уже, звёздочки в массивах отрабатывать. Зацени.

title Hell.c .386 .387 includelib cpprss36.lib includelib kernel32.libCODE32 segment para use32 public 'CODE'CODE32 endsDATA32 segment para use32 public 'DATA'DATA32 endsCONST32_RO segment para use32 public 'CONST'CONST32_RO endsBSS32 segment para use32 public 'BSS'BSS32 endsDGROUP group DATA32 assume cs:FLAT, ds:FLAT, ss:FLAT, es:FLAT extrn ?printf:procCONST32_RO segment@CBE1 db 0ah,0h align 04h@CBE2 db "Fack IBM",0hCONST32_RO endsCODE32 segment
; 2 int start(void) { align 010h
public ?start?start proc push ebp mov ebp,esp
; 3 printf("\n"); mov eax,offset FLAT:@CBE1 sub esp,04h call ?printf add esp,04h
; 4 printf("Fack IBM"); mov eax,offset FLAT:@CBE2 sub esp,04h call ?printf add esp,04h
; 5 printf("\n"); mov eax,offset FLAT:@CBE1 sub esp,04h call ?printf add esp,04h
; 6 return 0;}; 6 mov eax,0h pop ebp ret ?start endpCODE32 endsend

И более того, IBM_C_and_CPP_Compilers_for_WinNT-v3.6.5 на столько тупой, что вообще ни одной функции вызвать не может. Смотри.

title Rename.c .386 .387 includelib cpprss36.lib includelib kernel32.libCODE32 segment para use32 public 'CODE'CODE32 endsDATA32 segment para use32 public 'DATA'DATA32 endsCONST32_RO segment para use32 public 'CONST'CONST32_RO endsBSS32 segment para use32 public 'BSS'BSS32 endsDGROUP group DATA32 assume cs:FLAT, ds:FLAT, ss:FLAT, es:FLAT extrn ?rename:procCONST32_RO segment@CBE1 db "ibm_poop.asm",0h@CBE2 db "__ibm_poop.asm",0hCONST32_RO endsCODE32 segment
; 9 void start(void) align 010h
public ?start?start proc push ebp mov ebp,esp
; 11 rename("ibm_poop.asm","__ibm_poop.asm"); mov edx,offset FLAT:@CBE2 mov eax,offset FLAT:@CBE1 sub esp,08h call ?rename add esp,08h
; 12 } pop ebp ret ?start endpCODE32 endsend

Ну... Как тебе? Теперь завсегда рот начальнику можно закрыть. - Хули орёшь, condom! IBM даже 'Hello world' распечатать не может! А Я! И скажи теперь, что под VisualAge, IBM не просто бабки отмывала. Какое там нах тестирование?

IBM_C_and_CPP_Compilers_for_WinNT-v3.6.5, действительно, Самый_Тупой_Компилятор _Си_во_Вселенной, а версия v4.0 ещё тупее - сразу пилювацца, когда её компилятор icc запускают из командной строки. Расскажите нам о тестировании. Ну пожалуйста, расскажите нам ещё что-нибудь о тестировании. Ну пожалуйста, господа Поцольды.

Теперь понятно(?!), почему в Штатах существует месячный безусловный и без всякого объяснения причин возврат денег за проданное дерьмо? Нам до этого положения ещё расти и расти. Как-то, Крыса Касперски развел USAшников на свою книжонку "Как навесить замок на CD диск". Так представь себе, все бабки за его разводняк Крысе пришлось вернуть. Это ему не Рашка, где пипл всё хавает. Крыса потом долга пливацца и маты гнуть на USA имел место быть.

Вот видишь, на фоне IBM и всяких там далее по списку, ты и я выглядим совсем не плохо. Да плевать мы все на них, на всех, даже и не хотели! Верно? :) Ой! Как же на IBM или в AT&T, теперь, собеседование пройти? Ой.. Они ж такие крутые мудозвоны! - Мэтры бубнов и бубенцов! А я - клоп, холоп. Да и не знаю ничего... ... об их такой крутости :)

Следующим по тупости(внесению неприятного своеобразия), очевидно должен быть признан Open Watcom. 'Hello world' он напечатает и из ассемблера, наверняка, но символы подчёркивания справа от имён функций EXTRN printf_ и не возможность избавиться от EXTRN __CHK и EXTRN _cstart_ на входе выходного файла, наводят на мысль о тяжёлом клиническом случае и отбивают всякую охоту уточнять диагноз. И если wcc386.exe из командной строки работает на ура, то сладить с местным линкером надо ещё постараться. А в остальном, Open Watcom Ver1.9/2.0 вполне себе норм. Пожалуй, даже симпатичный. Не хуже всех остальных. Рекомендую к ознакомлению. :) Честно. Но без inline аsm. Почему без inline аsm? Потому, что инструкцию __asm {call aa}; Open Watcom не жуёт, как не жевал до него и Close Watcom. А то шо текстовый редактор Open Watcom уруських букав отродясь не понимает, так это усё фигня: быстренько перешёл в другой текстовик, накидал в нём русских буковок и сразу обратно в IDE_Open_Watcom, продолжать. Удобна и крухасор расфифаить. И самое главное, если не компилируются какие-то жалкие 90% примеров из поставки 2.0, не расстраивайтесь. И хер на них. Это же не вы такие, это примеры и Open Watcom такой. Потом допетраете шо к чиму. Если надо будет. Компиляторы и операционки, они такие, как женщины - НИКАКИХ ГАРАНТИЙ.

Копирастия или скрупулёзный анализ кода? Шо же выбрать? Ясно что - копирастию. Все так выбирают. Если на то пошло, Бог тоже создал/создавал этот звериный Мир не глядя(не тестируя) и по чужому проекту за 7 дней. Видима куда-та сильна спишил. Иначе, что же это за бог такой? Кудесник Распада и Утилизации. Не веришь? Прежде, чем начать строить дом, строят туалет. Прежде, чем заселять миры, думают о том, как потом от гниющего мяса Жизни в этих мирах будут избавляться. Ёк? :)

Интересная картинка нарисовалась. У IBM - ?printf, у OpenWatcom - printf_, у TCC - printf, у всех остальных - _printf. Будешь писать свой компилятор обязательно попробуй p_rintf или даже print_f. Но имей в виду, сегодня не 1980 и даже такие киты, как GCC и LLVM идут в фарватере MSVC. А может _printf просто приносит всем удачу? Подумай об этом. Кстати о LLVM. Если его допилить на предмет вменяемого, не AT&T inline аsm, отличный получился бы компилятор, с выходными файлами от 1500 байт - шедевр.

Пару слов о третьем кандидате на звание "Самый_Припизженый_Компилятор _Си_во_Вселенной" - Intel(R) C++ Compiler. Или скорбный рассказ о том, куда дебилов может завести помешательство на почве оптимизации. Попались мне случайно версии v9.1 и v10.1. Что я могу о них сказать? Та я ж наивный. Та я ж не опытный. Поэтому, первая мысль - копирастия, она и в Intel копирастия. Мою программку Карусель из второй статьи цикла версии v9.1 и v10.1 не жуют. Хотя прогресс,(по итогу регресс:), вроде бы, налицо. По сравнению с v4.0 в ассемблерном листинге v9.1 начали уже появляться начала какого-то смысла, хотя до реальности ишо весьма далеко.


__start PROC NEAR$B1$1: ; Preds $B1$0 ; LOE$B1$2: ; Preds $B1$9 $B1$1 call _clock ;29.8 ; LOE eax$B1$7: ; Preds $B1$2 mov ebx, eax ;29.8 ; LOE ebx$B1$3: ; Preds $B1$7 call _clock ;50.15 ; LOE eax ebx$B1$4: ; Preds $B1$3 sub eax, ebx ;51.23 push eax ;51.9 push OFFSET FLAT: __STRING$0$0$0 ;51.9 call _printf ;52.10 ; LOE$B1$9: ; Preds $B1$4 add esp, 8 ;52.10 jmp $B1$2 ; Prob 100% ;52.10 ALIGN 2 ; LOE; mark_end;__start ENDP_DATA1 SEGMENT DWORD PUBLIC FLAT 'DATA' ALIGN 004H__STRING$0$0$0 DB 37 DB 100 DB 10 DB 0_DATA1 ENDS

Обидно, досадно, но ладно - не жуёт и не надо. Это ж не я такой, а Intel(R) C++ Compiler v9.1. До удовлетворительного результата в 2008-м Intel(R) C++ Compiler v9.1 было ещё очень и очень далеко. А щас-то шо ж? Уверен, что и 2021-м в Intel(R) C++ Compiler ничего не изменилось. Откуда? - ведь, копирастия же ш. Усё ж под копирку. Но проверять не буду.

Думаю я так себе, думаю. И тут, как всегда, приходит озарение. Компилятор Intel(R) C++, он типа C++BUILDER, шибка оптимальный. А сделаю-ка я в своей Карусели локальные переменные глобальными. Опаньки. Закружилось. Правда, по скорости ни OpenWatcom, ни TCC, ни, даже, DiceRTE DCC32 Intel(R) C++ Compiler v9.1 не обставляет. Но не важно - нам рекорды не нужны, хотя бы так. А можно ли в Intel(R) C++ Compiler эту самую оптимизацию отключить? Можно. Сразу чувствуется класс - не долбаный C++BUILDER. Скорость работы Карусельки подупала, но зато у меня есть ещё один рабочий компилятор - на шею их вешать, что ли? :) Зарядил я, значит, в Intel(R) C++ v9.1 свою программку генерации автоматических имён файлов из прошлой статьи. Работает! Жуёт Intel(R) C++ v9.1 мой inline asm. Жуёт! Тут, для полноты картины, я убираю флажок отключения оптимизации. И всё - пи#дец, приплыли. Программка автоматических имён файлов запускается, но имени файла на выходе уже нет. Не даром же спутники мимо целевых планет промахиваются.

Как позже было выяснено мною в результате моей блестящей догадки, при отключенной оптимизации прекрасно компилируется и вариант Карусели с локальными переменными. Короче, если ты уж взялся Intel(R) C++ Compiler трясти, научись попервах хотя бы оптимизацию в ём вырубать. Ну, шо бы не было мучительно больно. И только потом переходи к извращениям.

Хто ж знал, хто ж знал.. Сколько клиентов из-за этой своей подлянки самому себе Intel(R) сам себе потерял.. Вот и не вяжи, после этого, шерстяные носки на зиму. :) А по итогу, получается такая хрень. Пишешь ты в первый раз такой в Intel(R) C++ Compiler из коробки одиноко стоящую функцию с локальными переменными, которые нигде и никак, кроме внутри неё самой не используются, с целью получить супер оптимизированный, как обещал сам Intel, ассемблерный вариант, а Intel(R) C++ Compiler тебе такой - А хер тебе не мясо? И сразу с предложением съездить на японский остров Накаскукапососика или начинать уже без задержек переходить к извращениям. На выбор.

Мораль. Купить за $600 рафинированное, брендовое дерьмо, а потом часами доискиваться, что же на этот раз в твоём коде Intel(R) C++ Compiler опять супер оптимально похерил - надо быть особенным идиотом. А версия v10.1 у меня, вааще, не зашла. У неё при ключах -c и -S случился Command-line error: invalid Microsoft version number: 20. При этом, что такое эта Microsoft version number ни одна $лядь во всём мире не знает. И когда платишь бабки, Intel про эту херню тупо молчит - А хули, $ля? Кстати, Intel(R) C++ Compiler не делает в своих крученых-перекрученых ассемблерных листингах привязки к строкам исходника, что собственно и не возможно при такой злое$учей оптимальности, но явно указывает на недостаток того самого Intelлекта. Зато, от стеснительности в менеджменте Intel, явно, никто не умрёт. Де факто, Intel(R) C++ Compiler ещё один ущербный клещ-паразит на MSVC. Мой подход простой. Компилятор страдает хернёй только раз, а далее прямиком в помойку. Добавь сюда невообразимый секс со всякими там Yo_tv_mat.lic и всё сразу станет ясно. Даром не хочу.

Вот подсказка на прототип доработанного варианта Карусельки, от которого ни один бараний оптимизатор уже не отбычится. Карусельку выносим в отдельную функцию. В ней добавляем ещё одну переменную в которой накапливаем сумму любой другой переменной. Результат возвращаем.

Не.. Ну.. А вааще, ты не переживай. 'Hello world' любой компилятор Си сможет напечатать. Даже, IBM VisualAge.. если не без #include. Патаму шо с #include и без #include сплошь и рядом в одном и том же пакете существуют два совершенно разных компилятора, хоть и сидящих в одном и том же исполнительном файле.

Итак, в чём разница между компилятором языка Ассемблер и компилятором языка Си? Компилятор языка Ассемблер изначально заточен под программные спагетти - они ему не страшны, только так. Компилятор Си - напротив, заточен под программирование под шнурочек, всякие там call и goto ему совершенно не нужны и крайне для него опасны. Там, где Ассемблер чувствует себя, как рыба в воде, у компилятора языка Си наступает тяжёлое отравление, позор и стагнация.

Действие goto в Си ограничено пределами одой функции. И чем позже юзер для себя это выяснит, тем лучше. А то ещё,чего доброго, на рвоту потянет и к Basicу побежит. Отсюда и повсеместно насильственно насаждаемое негативное отношение к оператору goto. Правило - в Си у каждой функции только один вход(на входе) и только один выход(на выходе), оно ж не спроста и применяется многими писателями компиляторов типа Intel(R) C++ буквально: file_name3.c(16): warning #1011: missing return statement at end of non-void fun. То, что в Ассемблере просто и естественно, требует в Си запредельных извращений. Например, ты всегда можешь рассчитывать на то, что переменные в Си будут засунуты на стек, как угодно, но только не в том порядке, в котором ты их объявил. Просто, так интереснее. И вааще, язык Си создавался только для того, чтобы вас и ваши поделки можно было легко пасти и контролировать.

В чём разница между компилятором языка Си и компилятором языка Basic. Компилятор языка Си горд и величественен сам по себе. Кроме его стандартной библиотеки(RTL), реализованной не известно кем и не известно как, ему больше ничего и даром не надо, тем более - вас. А учитывая то, как эта библиотека описана, то не надо, даже и её. Ибо, ею реально не пользуется никто, по причине того, что это не возможно. Возьмём простейшую функцию getchar. Новичку надо будет убить целый день и написать два десятка уточняющих программ, чтобы опосредовано выяснить и понять, как же на самом деле getchar работает. Про остальные функции, я, вообще, молчу. И напротив. Заглядываю я, для примера, первый раз в жизни в PowerBasic. Натыкаюсь там на часы с циферблатом. Шаманю их под себя, чтобы в глаза не лезли, добавляю для красоты иконку. И вуаля, через 5 минут всё работает так, как я хочу. Эти часики и сейчас у меня на рабочем столе чувство времени мне прививают. В компиляторе Си такой лёгкости не будет никогда. Не для того параноики старались.

Но у всего есть и обратная сторона. Каждый компилятор Basic единственен в своём роде и ни с чем другим не совместим. Я ничего не навязываю, но, для расширения кругозора, рекомендую заглянуть внутрь PowerBasic, FreeBasic, OxygenBasic и PureBasic. Кстати, PowerBasicWin1003, наверное, единственный из всего на свете, что я видел, в котором все авторские примеры красивые, имеют некоторое отношение к реальной жизни, даже, с описанием их назначения, прокоментированы и компилируются без каких бы то ни было проблем. Это располагает и внушает уважение. Хотя, существование двух PowerBasicов, отдельно для консоли и отдельно для безконсоли, слегка удивляет и озадачивает, а всё ли у аффтора хорошо с головой. Ибо, в Виндовс нет консольных или не консольных приложений - все они приложения win32/64. В общем случае, консоль безконсоли никак не мешает и может себе вполне мирно на экране совместно висеть.

Ну и естественно, никаких асмов и объектов на выходе из этих бейсиков нет и никогда не будитЪ, кроме косметических и бесполезных. Каждый вещь в себе самом. Не за то боролись. Это к вопросу, зачем нужен Ассемблер и Си когда из Бейсиков хоть пруд пруди? А опрерационки на чём писать? Вот и начальство из Google на весь этот зоопарк посмотрело и решило свой собственный язык Go для себя смастерить. А шо? И я бы так поступил. Зато, теперь весь интернет завален клёвыми поделками на 4 действия размером от 100 мегабайт типа LLVM.

Короче, ты понял. Раньше, шобы узнать "правду", ведьм топили в ледяной воде. Теперь, с той же целью, им одевают на пальцы полиграф. С теми же последствиями и с той же результативностью.

И на закуску. Попался мне тут PGI C/C++ ver 11.7 за 2011 год. Велик, как древний Вавилон. В нём и cygwin, и Microsoft Open Tools 10, и Java-машина, ну и, конечно, сам PGI C/C++. А инструкции asm ("call aa");...... ....asm ("aa:"); в исходнике *.c всё равно не жуёт. Копирасты. Кто, где, как и когда среди баранов, пользовавшихся синтаксисом AT&T, впервые прохлопал возможность вызова в inline asm подпрограммы по метке(asm ("call aa");) сегодня не узнает уже никто. Но на то они и бараны, а среди баранов и копирасты. Кто костюмчик сшил? - МЫ! А почему рукава на пи$де? Так мы это... ,шобы её чесать удобнее было. Последняя версия PGI C/C++, танцующая под XP, - 14.1. Но не пытайся её скачать с офф сайта, всё равно не дадут. Даже, после регистрации. Это у них игра такая, пидорская. Добавь сюда секс с лицензией, как и у Intel. Нах оно тебе, вообще, надо?

Но есть и положительный момент. Как выяснилось в процессе работы кривым стартером и на старуху бывает проруха. Если сдвинуть местное время компьютера на 5 лет назад, перестают действовать сертификаты https и на google.com ты уже из chrome не зайдёшь. Какой простор для полёта фантазии. Верно? :) За шо боролись, на то и напоролись. Такой себе безобидный, шуточный вирусняк, не предсказуемо и по тихому меняющий дату туда-сюда. А сколько крови офисным крысам попортит. Короче, шо делать ты понял. А самое главное, на будущее, никогда не заморачивайся тестированием. НИКОГДА! :) Привет всем тестерам GOOGLE, лично от меня: - С праздником вас, дорогие товарищи! Он уже пришёл. К Вам. Можете начинать праздновать, а за одно и опять банить эти странички. :) А пока, взглянем в лицо злоумышленникам с сайта google.com.

И ещё к вопросу НИКОГДА! не заморачивайся тестированием. Слышишь! НИКОГДА! Глубоко уважаемый куратор бесплатной версии редактора страниц sites.google.com. Всем очень радостно от того, что по прошествии 2-х лет в Вашем чудесном редакторе появилась возможность выбирать и размер шрифта(при всё ещё отсутствии цвета), тоже, что как бы мне лично уже и не надо. Но не могли бы Вы озаботиться и тем печальным обстоятельством, что при вводе буковок среди уже введенных буковок, курсор всё время перескакивает через одну буковку вправо. Так, что всё время приходится тыкать джойстиком влево. Нет плавного перемещения при использовании джойстика вверх-вниз. А (новые) картинки можно добавлять только в конец страницы. Было бы очень здорово, если бы этот Ваш чудесный редактор грузился один раз и где-нибудь хранился, а не каждый раз полз из интернета по новой. Но если это не БАГИ, а свойства Вашего чудесного редактора из серии "Надо же, как интересно получилось !", то конечно же, ничего менять не надо. Мы и не такое видели. :)

А теперь доработанная карусель, которую уже не похерит ни один оптимизун, даже Intel.

При прогоне этой программки выяснилось, что самый быстрый код без оптимизации у PGI C/C++. Самый медленный у Intel 4.0. Разница между Intel 4.0 без оптимизации и Intel 9.1 с оптимизацией - 3.5 раза. О чём это говорит? О том, что компиляторы Intel с отключенной оптимизацией занимаются обфускацией. Только и всего. И не они одни. При ближайшем рассмотрении легко выявить явные черты сходства в выходном коде между Intel(R) C++ Compiler и C++BUILDER. Да и включенное по умолчанию оптимизунство в обоих, как бэ намекает. Но, как я уже рассказывал, оптимизацию в C++BUILDER не отключить, а следовательно, мучительно больно будет почти каждый раз.

Глядя на выходной код Intel(R) C++ Compiler и C++BUILDER предлагаю, для пущей универсальности, в дополнение к reg, ввести и noreg, безусловно запрещающий хранить переменные в регистрах, даже, при оптимизации. Ибо, нефиг. Нефиг умничать за спиной. Иначе, это не оптимизация, а что хочу - то ворочу. Так любой дурак сможет оптимизировать. Коверкая оригинальный код. Мудруны. Так, что выбор у нас, увы, не большой. Либо искусственно предельно замедленный код, либо код, имеющий весьма отдалённое отношение к оригиналу.

А вааще, C++BUILDER 5.02 на столько тупой, что и описать не возможно. При установке в произвольную папку не находит собственные либы и объекты. Считает, что в модифицированной карусельке не используются переменные с номерами 1,2,3,4,5,6,8,9 и 21. Считает, что метка L1 продекларирована но не используется. Подсветка синтаксиса сделана специально только для дальтоников - считай, что её вааще нет. Готовой программе нужна cw3220.dll имени которой нет в эксешнике(шифруется $лять). И в довершение ексешка не видит cw3220.dll, лежащую с ней в одной папке. Ну, и не дерьмо ли этот ваш C++BUILDER 5.02, после этого? Нах он нужен, вааще? После такого реального дерьма, с кем должна была делить рынок компиляторов Си\Паскаль Microsoft и зачем? Borland\Paradigm слились сами по себе. Буду ли я, после этого, иметь дело с Embarcadero 10.1 Berlin Compiler, который даже не запускается под XP? - никогда!

Особенно умиляет слово ERROR на этой картинке вместо 'Я, Embarcadero 10.1 Berlin Compiler, ОБОСРАЛСЯ'. И зачем же тебе в папку local лезть, хитрожопый ты наш? Win-10, особенно, после восстановления системы до первоначального состояния, она такая - хуже дохлой черепахи. Врагам не пожелаешь. Привыкай. 32-битный компилятор, который не запускается в 32-разрядной системе, у которого на выхлопе абсолютный ноль - всё это Embarcadero 10.1 Berlin Compiler. Но зато, совершенно бесплатно. Расскажите нам ещё, что-нибудь, о тестировании. Ну хоть что-нибудь, господа Поцольды, $лять. DiceRTE DCC32 и то лучше. Понятно, что позорное звание "Самый_Припизженый_Компилятор _Си_во_Вселенной" IBM_C_and_CPP_Compilers_for_WinNT-v3.6.5 с позором уступает C++BUILDER 5.02 и Embarcadero 10.1 Berlin Compiler. Компиляторы, которые не смогли даже высраться, заслуживают это звание вполне.

Повыпендривались? Покуражились? :) Хотя, в чём собственно кураж, если всё правда? А теперь - за дело! Итак, единственный более-менее адекватно-либерально-демократический компилятор в этом мире, это MSVC Tool Kit 2003 без Net. За него и держусь. Программки от 1500 байт в длину. Мой комплект я под себя уже заточил. Всё последующее будет рассчитано именно под него - MSVC Tool Kit 2003 без Net.

Зачем же мучаться? Начинайте каждый свой новый проект в MSVC и только потом, в случае удачи, переходите к извращениям. Кстати, каруселька, которая после MSVC Tool Kit 2003 занимает у меня 2k, после PGI C/C++ весит аж целых 500. Не хило. И хотя в ексешке 499k никому не нужных нолей, всё равно, чувствуется класс - всё-таки, сам PGI. :) И даже, не пытайтесь мне возражать. Я знаю. Знаю. MSVC из командной строки, применительно к чистому Си, это слишком просто. Местами избыточно. Но надёжно. Пытливый мозг постоянно ищет ещё какое-то бесплатное дерьмо. И, собственно, всегда его и находит. Пора остановиться. Пора остановиться? - не думал, что я когда-нибудь это напишу. :)

Кстати, периодически пытаясь общаться с типа-аффторами всевозможных компиляторов и встречая в ответ от тупого, набыченного молчания(профанам просто нечего сказать) до вполне лояльных разъяснений я пришёл к выводу, что большинство не разбирается в своих "собственных" поделках. Когда человек вопит - "Я построил дом!", что он имеет в виду? Он нашёл глину, выкопал, наделал из неё кирпичей, обжог их углём\дровами, которые сам и добыл, самолично изготовил цемент, краску и т.д.? - Нет! Так и с компиляторами. С Мира по строчке - новый компилятор. И то не сам - рабов вместо себя нанял, как и при строительстве. А объектно ориентированное программирование? - это ж вообще песня. Вот и считай, теперь, что нет никаких копирастов и никогда не было. А все компиляторы написаны совместно, объектно ориентированным методом, где правая рука не ведает, что творит левая и наоборот, и ведать не желают. Так чему же, теперь, удивляться?

А вообще, рогатость изобретателей Си поражает. Если в Intel и Borland помешались на обфускации и на её фоне типа-оптимизации, то в Bell Labs в 1970-ом свихнулись на функциях. Функции - наше всё. Там мы ж не против. Но почему ж так убого? Так примитивно? Ладно, когда много глобальных переменных, это fuck - сделаем локальные. А когда все до единой функции глобальные, это не fuck? Почему бы и функции не объявлять внутри функций - локально? Э, $лядь. Ишь чего захотел. Совсем тупой, шо ли? Разве тебе мало нашей дебильной истории с дефектами goto и отсутвием gosub? Крови нашей хочешь?! - Ну вы и тупаки! Поднимать такую вонь на пустом месте, когда речь идет, снова, всего лишь о простой видимости имён. :)

Или, объявляешь ты двумерный массив, а потом отдельным блокам второй размерности назначаешь уникальные символьные имена. Круто? - Круто! Не реализовано? - Нет! А зачема тюбэ? А зачема мине типы данных 'кислое яблоко' или 'кривой банан'? А ты думал, шо Си это класс? :) Си это один бесконечный сплошной дефект. Чем лучше этот язык узнаёшь, тем большее разочарование и досаду испытываешь. Пока постоянное натыкивание на баги и запреты в ём не превращается, наконец, в занятное развлечение и хобби. А ишо на языке Си программируют. :) Не.. Ну, а чё..

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

Но стоит ли эту концепцию доводить до ума? Обычному человеку она не нужна. Из необычных людей, такая машинка может быть полезна и интересна только Игил. Если ты начнёшь шифроваться, к тебе придут полицаи и сделают тебя инвалидом. Думаешь, твоя мама меня поблагодарит? Ну вот. Значит, без обид. Спасибо, что дочитал. Описанная мной Энигма слишком уж хороша, чтобы быть правдой. Верно? Именно, по этой причине, я никогда и не собирался её писать. Жить хочу.

Давай, лучше посмотрим, как ведут себя пейсатели компиляторов в обычной жизни. Кравчук брал газ у России по $20 за 1000 кубов и ничего не платил. Кучму принудили махаться на бартер, но уже по $50. Ющенко сказал, что цена должна быть рыночной и поднял её до $180. Тимошенко сказала, что цена должна стать европейской и закрепила её на уровне $450. Сегодня, справедливая цена для Украины составляет $880 за те же 1000 кубов того же газа. Естественно, что Беларусь, которая платит России жалкие $127, может только завидовать такому бесконечному богатству южного соседа.

Или. Крым? - это Украина! Населяют Крым украинцы. Но перекрыв Крымский канал, Украина не даёт воду России и россиянам. Понятно, что понять эту хитрую логику могут только киевские иудеи типа Зеленского, Порошенко и Яценюка. И вообще, официально, Крымский канал перекрыли местные фермеры. Что с них взять?

Или. В 2020 Украина с помощью фотоштрафов выпотрошила карманы аборигенов на 325 млн. Если бы на эти деньги население приобрело товары и услуги, экономике страны был бы нанесён несокрушимый удар. Yes?

Или. Украинская таможня в день собирает 1000 000 000. Что естественным образом превращается в 3000 000 000 в конечной цене товара. Для 10 000 000 наличных украинцев, организованная государством переплата составляет 9000 гривен в месяц для каждого индивида, включая древних старух и грудных детей.

Или. Украина давно похоронила свой автопром. Но растаможку иномарок так и не убрала. И не уберёт. Шобы у хохлов от бархатных сидений жопы не облезли.

Или. Суммарный налог на доходы физ лиц в Украине 45% от первоначальной зарплаты. 21%+20%НДС. А теперь скажи сам, кто у нас главный вор? Из оставшихся 55% 4/5 уйдут на барыш торгаша и поборы банков.

Или. Украинский суд, как придаток Ашана, Эпицентра и АТБ.

Или. Единственным доказательством холокоста, в сегодняшней иудейской Украине, станет уголовная ответственность за его отрицание. Просто и убедительно. А в Израиле, тем временем, цивилизованные люди до сих пор массово жгут макароны и хлеб.

Или. За 8 лет мОршрутка на Украине подорожала в 8 раз.

Или. Утром 10.03.2014 цены на все товары в Украине одномоментно были подняты в 3 раза. Таким образом, государство украло у населения 75% их сбережений. Просто и прибыльно. И ещё много раз украдёт. И это не холокост, не геноцид и не преступление против человечности. Это внутреннее дело и киевский каганат.

Или.. Или.. Или.. Не хватает только конопли в гастроном.

И на прощание, High Level Assembler (HLA). Словоохотливый Randall Hyde вложил в него весь его организм. Не помогло. HLA путаный, что с ним делать, интуитивно не понятно. Конструкции вида mov ( 0, ax); выглядят, как никому не нужные революционные изобретения, напоминают print_f и вызывают только отвращение. Очевидно, что Randall Hyde хотел, как лучше, но получилось, как всегда. Вот моя первая попытка.

Что тут сказать? - какая жизнь, такие и компиляторы. Дерьмо, оно и в Африке дерьмо. Randall Hyde, как минимум, не тупой. Но если Randall Hyde, как ты и я, вынужден выживать - суммарный налог на право получить заработанную зарплату в Украине 45% от первоначального начисления, полноценным тестированием он, ты, я не сможем(не будем) заниматься никогда. И что же делать? У меня, компилятор HLA (High Level Assembler - HLABE back end, POLINK linker) Version 2.16 build 4413 (prototype) ошибся лишь раз. А далее пошёл прямиком нах. Я верю, что всё остальное в HLA сделано безупречно, но проверять это уже не буду. А зачема мине? :) А зачема тюбе? :)

Некоторое время тому назад, были популярны всякие там бенчмарки, когда всякие там сексуально озабоченные(предоплаченные) бенчмаркеры утюжили нам мозги, всё измеряли, проявляли и взвешивали. Вот простая программка, призванная проверить период зацикливания генератора случайных чисел из библиотеки RTL. После небольшой адаптации, её легко приспособить под любой гсч с периодом <= 2^32. После большой адаптации и под более продвинутые гсч.

Всё в общем-то банально и довольно просто. Но интересно вот что: будучи слинкованной с MSVCRT.dll, один цикл этой программки выполняется на моём компьютере c XP за 44.6 секунды, будучи слинкованной с LIBC + OLDNAMES - за 27.6 секунд. Те же программки на том же компьютере под Win 10 - 65.5 секунд и 30.6 секунд, соответственно. В обоих вариантах компиляции и линковки использовался Msvc_2003. Тормоза Win 10 составили 65.5/44.6=1.47 раза. Как видишь, вариативность времени выполнения программы на основе одного и того же исходника, в том же самом компиляторе, на одном и том же компьютере и в наши дни может составлять 65.5/27.6=2.37 раза. Какие уж тут нах бенчмарки? Кто тебе друг и в какой операционке прокладывать путь на Марс, делай выводы сам. Long live XP!

Как я уже однажды намекал, Реальность многопланова. И планы ея, иногда, проявляются самым неожиданным и причудливым образом. Я не возьмусь бесплатно судить откуда появляется разница в скорости в 44.6/27.6=1.6 раза для XP или в 65.5/30.6=2.14 раза для Win 10, (а зачема мине?:), но факт остаётся фактом и, как говорится, налицо. Единственное, что очевидно вполне, MSVCRT.dll по сравнению с LIBC.LIB - обфускация и то ещё дерьмо. При этом, размер эксэхи в первом случае(dll) 2.5к, во втором(lib) - 40к. Только и всего. Не всё то круче, шо меньше. Хотели, как лучше. А получилось, как всегда. Это я про Win API и все эти *.dll. А многие ждут, шобы у них какая-то там левая STL нормально заработала :). Я тебя предупредил. Было бы забавно переписать эту прогу под PureBasic и сравнить шо по чём, но честное слово - облом, (а зачема мине?:). Хотя.. Хотя.. Хотя.. Взял я тут старичка TCC, поместил функцию summ из новой Карусельки в отдельную dllшку, запустил и даже получил ускорение работы программы в 1.001 раза - 0.1%. Не всё так плохо с Win API :), оказывается. Это MSVCRT.dl тупая.

Компьютеризация и автоматизация достигли, нынче, невиданных высот. Как показал октябрь 2021, цены на газ в Европе от них, тоже, не отстают. За что всякие там мудруны всякими там санкциями боролись, то в итоге и получили. И Вова Зеленский, как-то поутих. $2000 за 1000 кубов газа кусаются, говорят сами за себя и обходятся без лишних слов. Прямым контрактам - быть! Скоро и на Украине. Иначе, Европа и Москва такими их согласованными совместными действиями окончательно додушат нэзалэжный киевский каганат. Для начала, в границы до Союзного договора 1922 года, а потом и совсем.

Как-то сам-собой вспомнился слинявший в Рашку брат Янук и дружок ихний - Колян-Хазар. А куда побежит Вован? Вслед за Светой белорусской, к латышам али вслед за Мишей украинским, к грузинам? И надо быть только таким профессиональным клоуном-юмористом, как Wowa Zełenski с сотоварищи, чтобы этого не понимать.

Кто играл в Реверс(и), тот в теме. В начале санкции, в конце газ по $3000 за 1000 кубов. И не надо никаких киборгов-убийц. Совершенно ясно, что всё произойдёт по-тихому, как бы само-собой и не обязательно в результате одной только повальной COVID-вакцинации. Есть ещё и зима, и связанная с ней растущая нищета, хроническое недоедание и много чего ещё.

А вообще, всё очень, очень забавно получилось. Примерно 18.08.21 доблестные украинские воины в едином порыве громогласно озвучили мнение киевских иудеев с Банковой о В.Путине - "Путин - #уйло!". Скабеева предупредила, что без последствий это не останется, а украинские сми поголовно только потешались над ней. Но уже 10.10.21 природный газ для Украины стоил под $1500. 18.10.21 гарант украинского беззакония лично подтвердил, что если бы не он-мессия, природный газ украинские домохозяйства покупали бы у него уже по 50 гривен за куб.

Вдобавок, Москва и Венгрия, как бы внезапно, отказались от транзита газа через Украину, вдруг. А это бездарно потерянные киевскими иудеями с Банковой $200-300000000 в год. Если 18.08.21 была шутка и автор этой шутки сногсшибательный В. Зеленский-Голобородько, то шутка на славу удалась. Смеяться теперь придётся всей стране и всю зиму, и каждый год. А хули этим киевским иудеям с Банковой $2-3000000000 потерь за 10 лет. Зато, как было вечером 18.08.21 весело и смешно. На следующий август обязательно следует повторить.

До сих пор, ни в одной стране мира военные особым умом не отличались. И все эти анекдоты, про единственную извилину от пилотки, они не спроста. Как теперь ясно видно, вооружённые силы Украины, в этом смысле, ни чуть не хуже всех остальных. Но киевские-то иудеи! Киевские иудеи с Банковой, каковы! Как весело шутят. А?! Каждая удачная шутка - минус $200-300000000 в год для страны. А заодно и все языковые споры с Венгерской диаспорой в Украине удалась решить. Венгры ж, они ж не крымчаки. Венгров на Украине чуток по боле будет.

Если кому-то кажется, что между описанными событиями нет никакой связи, то связь есть, по крайней мере, хронологическая. Вначале, доблестное украинское войско в едином порыве громогласно прокричало ключевую фразу, потом Скабеева в доступной, для киевских иудеев с Банковой, форме озвучила чёткую позицию Кремля - росс/укр отношениям, в нынешнем их виде, хана и только потом для Украины резко поднялась цена на газ и Венгрия в сторону отошла. А значит, страна имеет вес, к Украине прислушиваются, с мнением Украины считаются, учитывают его. И это есть good.

По Конституции, украинская армия призвана защищать. И она защищает. В этом году, украинские дома от избыточного тепла в них зимой, например. Зеленскому предлагали назвать затейника, но кто же в таком тонком деле укажет на себя. Иначе, дядя Вова стране не хозяин. Мы скажем дружно все - Спасибо, дядя Вова! Ой, дядя Вова! Ай, дядя Вова! Именно такого президента Украине все эти 30 лет и не хватало. Жаль будет расставаться с ним. Куда тому Порошенко с его 15000 бессмысленных трупов военных и бесполезных смертей.

Зеленский уже как-то унизил Рамзана Кадырова, наиграл собственным членом гимн Украины. Кадыров ему спустил, Украина - тоже. В этот раз история не повторилась. Не тому в этот раз криворожский иудей Вован, по доброй иудейской традиции, плюнул в лицо. А если все эти плевки именно так и задумывались с самого начала, то в скором будущем Украину ждут бомбардировки Запорожья, Николаева, Херсона и Харькова украинскими ВВС, шобы русским ничего не досталось, как вода в Крыму. Потом, эти города начнут новую жизнь с чистого листа, как Грозный и с новым российским населением. Не для себя же Зеленский так 2 года подряд старается. Зеленский предатель? Ну что вы, - нет. Он иудей. Но вот незадача, кроме, как о морали и о совести, тора так же молчит и о холокосте, а стало быть, согласно торы, и холокоста в природе нет и никогда не было. Но лучше об этом спросить у самого Цицерона Александровича.

Понятно, что после осознания этой истории, на следующих президентских выборах в Украине, если таковые вообще состоятся, только самый ленивый и тупой из кандидатов не припомнит Зеленскому историю с "Путин - #уйло!" и последовавшей вслед за этим газовой атакой. Европейские старухи знают теперь кого им следует благодарить за их непростой выбор между сытостью и теплом. Украинские домохозяйки - тоже. Ты тоже хочешь знать? :) - нет, не Зеленского. Рынок. :) Рынок! Один только, его величество Рынок. А кого же ещё? :) Хочешь сказать, что тупых и ленивых кандидатов на следующих президентских выборах в Украине может оказаться много, даже слишком много? Не буду спорить. Каждый народ достоин своих иудейских царей и претендентов на трон.

Киевские иудеи с Банковой, они вообще, в смысле выворачивания карманов украинским аборигенам, такие изобретательные: то штраф какой новый изобретут, то побор, то новую растоможку, акциз, то цены поднимут на всё. Но с некоторых пор, почему-то, опустели украинские базары, Ашаны, Эпицентры и улицы городов, закрылись элеваторы, хлебозаводы, больницы, детсады и роддома.

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

Кстати, китайское и польское высшие руководства, после прочтения вот этой моей статьи, уже сделали выводы и предприняли ряд практических шагов. Так, с мая 2021 китайским женщинам официально позволено родить трёх малышей. Китайские девчонки и мальчишки, пользуйтесь и не забудьте меня мысленно за этот подарок поблагодарить. :) Мне это очень надо. :) А в Польше запретили аборт. Да так ловко, окончательно и бесповоротно, что, даже, пришлось задействовать польский Конституционный суд. О чём сии знаменательные факты говорят? - о том, что я 1000 раз прав.

Но Украина не Польша и не Китай. И именно поэтому, мудрые и великие киевские иудеи с Банковой отоваривают украинских аборигенов у "тупых" китайцев на АлиЕкспресс и с растоможкой, а не наоборот. Потому, что мудрые киевские иудеи с Банковой сами ничего, кроме новых штрафов, поборов и розподильчых компаний, произвести не могут и никому организовать и наладить товарное производство в Украине не дадут, а все те остатки, что ещё существуют, доломают. Корейцев выгнали с АвтоЗАЗ, китайцам не продали МоторСич, сдали в лом ХТЗ и т.д. 18.10.21 в Житомире владельцы Эпицентров взорвали фабрику носков "Лэгка хода", просуществовавшую к этому времени 86 лет. У тебя есть налаженное производство? - завтра киевские иудеи с Банковой идут к тебе.. со взрывчаткой. Зачем на Банковой PayPal? А вот майданы, горящие шины, стрельба в спины исподтишка, COVID-19 - другой разговор, самое то.

А дела с украинским народонаселением пришли к тому, что скоро из-под золотой украинской сотни некому уже будет и гИвна выгребать. А почему? А потому, что осенью 2021 рядовому хохлу уже, даже, негде купить ни уголь, ни дрова, ни брикеты - усё это сырьё давно уже 7 раз перепродано в Европу за долляры.

А по лесопосадкам колесят полицаи и выписывают штрафы по 30000 грн каждому, кто решил, вдруг, там хворост собирать - пусть лучше летом во время поджогов сгорит, как вечно в США (идеале независимой Украины) это каждый год происходит. Такое даже Женьке Муркину-Мураеву с тивилизора не снилось. Ну прям мечты Тараса Шевченко, Панаса Мырного и Ивана Франко наяву: - Сёстры, его сёстры - повесились на косах. Коса железная звенит, а из сестричек кровь бежит.

Привет всем предоплаченным бенчмаркерам всех цивилизаций, общественных строев, формаций и всех времён: конвсуньтантам, ауздиторам, экспертам-проституткам, продажным хапугам-специалистам и недомастерам. Друзья! Не думайте ни о чём, не вникайте, не планируйте, не тестируйте и не делайте никогда и ничего. На ваш век и чужого дерьма хватит - RTL в виде MSVCRT.dll, например. :) Почему Си без плюсов до сих пор так популярен, если популярен? Потому, что вся остальная дрянь ещё хуже и сделана намного тупей. И параметры в си-функцию можно передать не только по значению. Но по ссылке и не однотипные с используемыми внутри функции очень уж муторно передавать. Андрюшка Столяров, наверное, не умеет. Мне - удалось. Только и всего. Адью.

Логично закончить картинкой с которой предыдущая статья началась. Хотя теперь, картинка эта будет для вас на много более понятной.

До сих пор е$ёшься в IDE от MSVC? :) - бегом сюда!

Глубоко уважаемый куратор бесплатной версии редактора страниц sites.google.com. Дефект прокрутки, при использовании джойстика вверх-вниз, вами уже исправлен. Это хорошо. Но редактировать текст и добавлять картинки в произвольное место текстового блока по-прежнему не возможно. Имейте это в виду. Не возможно выбрать и размер шрифта для одной единственной буквы. (А зачема тюбэ?) А в натуре? - а зачема мине? Беру мой любимый AkelPad, набираю в ём текст и только потом копипастю сюды. Неужели, все эти странности связаны с применением вами языка Go? Не хотелось бы в это верить.

Количество идиотов во Вселенной бесконечно. Количество чванливых(пыхатых) идиотов бесконечно вдвойне. Есть такой шедевральный компилятор VBCC. Весьма широко известен в узких кругах. Канонически трансформирует сишный исходник в конкретный ассемблерный файл only, но зато буквально под всё. Под всё, что не Win. Я, естественно, попробовал вариант i386. Занятный экземпляр. Чистый Си 89/99 и, естественно, без stdcall, и только из-под системы 64 бит. Из коробки, генерит вполне адекватный 32 бит код - ничуть не хуже, чем у MSVC, но на много лучше, чем у TCC.

Чтобы оседлать vbcc под Виндой, придётся извратиться. Есть inline asm. И даже с db. Мою программку имён файлов жуёт. Но только на этапе компиляции. Ибо, в выходном листинге не хватает одной инструкции ret - той самой :). Хочешь знать почему? - А зачема тюбэ? Патаму шо в Си нет подпрограмм и никогда не будет, а количество идиотов во Вселенной бесконечно. Поэтому, ситуация с __asm("ret");} в конце функции у которой только один вход на входе и один выход на выходе внутри vbcc никак и не обрабатывается. Не знаю, сообщать ли об этом глюке аффтору в ситуации, когда есть MSVC? - надоело. А зачема мине? Не - не буду. Пусть пока задаётся. Хочешь? - ты сообщи. :)

Как видишь, методологически, GPL и Open sourse ничего не гарантируют. Кроме того, что открытые исходники, как и закрытые, никто и никогда не будет читать, включая самих господ аффторов этих исходников. Ибо, нах? А учитывая то, в каком виде эти исходники преподносятся - особенно. Кроме того, скольким, из живущих на земном шаре, вообще, небесами подарена возможность в этих исходниках разобраться? И сколько, из этих, имеющих возможность, реально одарённых, действительно захотят безоплатно тратить своё время за счёт собственной жизни на всю эту фигню. И зачем? Что бы цены на газ в Европе можно было поднимать силой мысли, а не простым нажатием красной кнопки в Москве или Вашингтоне, как сейчас? (Какое забавное название Вашингтон - типа звуки в прачке.) Если и сегодня 99% компиляторов Си не могут мою простейшую программу прожевать, какой ещё стандарт надо принять? - 100-500. Думаешь, что в ANSI C все эти компилятроы как рыба в воде? IBM_C_and_CPP_Compilers_for_WinNT-v3.6.5 со всей очевидностью доказал, что нет.

А вообще, программирование и вся эта(моя-твоя) околокомпьютерная возня всё больше напоминает мастурбацию - удовольствие от процесса есть, а вот ощутимой, реальной, материальной пользы - нет. Пора завязывать(?). :) Microsoft уже давно принуждает пользователей Винды заменить их-пользователей компьютерный парк на типа новый и передовой, а старый выбросить на помойку. Не проапгрейдить, как раньше, а именно выбросить. Отважно! Чем это кончится? - предугадать не сложно - нахер надо? Время давно уже расставило всё по своим местам. На работе, компьютер, для большинства, досадная обуза. Дома - бесполезная, ворующая время, дорогостоящая ху$ня. Отними у компьютера интернет - и кому он, вообще, нужен будет такой, сам по себе?

Вся эта е$ля с сертификатами, протоколами, искусственными ограничениями со стороны youtube, помесячной оплатой и тд достала уже всех. Авторские права? Так, все эти так называемые творцы уже давно находятся в состоянии: сам написал - сам почитал, сам спел - сам послушал, сам снял - сам посмотрел, сам набодяжил - и жрал бы, но не лезет, сам написал компилятор - сам в ём и программируй.

Компьютерная индустрия стремительно катится к временам IBM 360, когда она снова будет интересна только узким спецам. Ведь нет же массовых у себя вдома полостных хирургов. Нет, никогда не было и не будет. Соотнеси количество телевизоров в мире с количеством телемастеров. Попытка хитрожопых, превратить компьютер из помощника в доильный аппарат, понятна. Но никого нельзя заставить жрать присунутое ими дерьмо добровольно без принуждения. Посмотрим, смогут ли ловкачи снова продавать недокомпиляторы Форт по $500, как в 1979 году. А Лёхи Говнюковы - дарить своим восемнадцатым жёнам каждую неделю новые сапоги. Поживём - увидим. :)

Итог. Все компиляторы Си дебильные, а многие - особенно. Исправлять их никто не будет, по причине невозможности такого исправления, никогда и совсем. Кое-как работает и хорошо.

Наиболее адекватный из всех MSVC, он же и с наименьшим количеством сюрпризов и ограничений, а с доработанным мной asm output - идеален для первоначального, осознанного обучения. Однако, остальные пакеты других компиляторов, тоже, в определённых условиях, могут вызывать определённый интерес. Поэтому, при написании небольших утилит, зацикливаться на чём-то одном вряд ли стоит.

Например, программа вычисления периода гсч, приведенная выше и слинкованная с msvcrt.dll, на 2-х ядерном Intel-64 после Sphinx C-- v.239 выполняется вдвое быстрее, чем после MSVC 2003 с той же msvcrt.dll. Для 2-х ядерного AMD, при тех же вводных, прирост скорости составит лишь 1.25 раза. Удивительно. Правда?

Если объектный файл, выдаваемый Sphinx C-- подсунуть линкеру MSVC, то прирост скорости исчезнет, практически совсем, на обоих видах процессоров. Таким образом, одно только применение MSVC-линкера link.exe, в любом компиляторе, увеличивает время прогона программы до 2-х раз, по сравнению с минимально возможным. Теперь, это доказанный факт. Не хило. :) Правда?

Если в компиляторе Sphinx C-- v.239 для генерации случайного числа отказаться от использования msvcrt.dll, скорость работы выше названной программы вычисления периода гсч может возрасти ещё в 1.5 раза, но этот вариант я ещё не проверял. Привет бенчмэйкерам всех стран и времён.

Но и это ещё не всё. Беру выше. Компилятор Dmc, с его родной либой, даёт пятикратное ускорение(+- в зависимости от производителя процессора) программы вычисления периода гсч по сравнению с MSVC 2003 + msvcrt.dll и двукратное ускорение по сравнению с MSVC 2003 + libc.lib. Как тебе такое, Илон Маск? :)

Итак, кроме того, что MSVC-link.exe это лажа,хотя, возможно, что наименьшая и наиболее удобная лажа из всех линкерских лаж, также, следует помнить о том, что в общем случае, совместимость между собой, особенно на уровне объектных файлов, вопреки ожиданиям многих наивных, у компиляторов Си минимальна, а зачастую отсутствует совсем. Ситуацию исправляет использование на промежуточном этапе стороннего ассемблера. Но кому, сегодня, нужен этот бесконечный секс?

Кризис жанра налицо. Поэтому, учитывая изначальную несовместимость объектных файлов разных систем между собой, Dmc может оказаться идеальным вариантом backend для всех ваших и моих поделок. Успехов! :)