Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Чтобы можно было выполнить таск типа "исправить ошибку Undefined variable at..." за 5 минут и +1 байт.
Если серьёзно, то заглушить ошибку, если она проверяется по-другому, скажем, смотря на возвращаемое значение. К примеру, file возвращает false, если файла не существует, и заодно срёт ошибкой. Если ты проверяешь возвращаемое значение на false, ошибка тут тебе уже не нужна.
В каких-то окружениях допустимо считать, что файл никто кроме тебя не трогает, но в общем случае я же написал:
>А если файл удалился уже после проверки (транзакицонности у FS нет), то что делать?
Вообще ограничения зависят от задачи же. Менеджеру виртуальной памяти допустимо считать, что внешнее хранилище (куда он свапит) никуда не денется, а файловому менеджеру, копирующему файл на флешку, так считать нельзя)
У нас даже был говнокод с асм-инъекцией: в сишке использовали переменную со знаком $, она пролезла в ассемблерный выхлоп без изменения, а там гнутый ассемблер с синтаксисом «AT&T» неправильно интерпретировал этот знак.
Кстати, насколько помню, ядро линукса абузило асм-инъекцию для сборки стартового кода под 386 в реалмоде. Сам по себе "gcc" не умеет 16-битный код генерить, а вот "as" умеет. Поэтому линус воткнул директиву, которая заставляет as трактовать текущий сегмент как 16-битный и фигачить префиксы для 32-битной адресации и операндов. Само собой на настоящем 8080 этот кентавр потом не запустится, но всем пофиг.
Да, «Линукс» рассчитан минимум на 80386. Из-за этого в своё время даже были срачи о «завышенных требованиях». Мол, «Xenix» и «Windows» можно запустить на 80286, а «Линукс» нельзя.
Линукс действительно не работал без поддержки страниц (один из нахрюков Танненбаума на Линуса), бо Линус и писал-то его чтобы со страничной адресацией разобраться
Только в классическом IBM PC 5150 не было 8080. И 8086 тоже небыло.
Там был 8088.
Отличался он тем, что шина данных была 8 бит, то есть за один раз он мог передать 1 байт только.
Так что на неём не нужно была это ваше сраное выравнивание.
Очень удобный и эффективный процессор
В реальном режиме можно использовать префиксы addr32 и data32. Только вот адресация будет не такая, как в защищённом режиме: в защищённом режиме в сегментных регистрах лежат селекторы, а в реальном — базовый адрес, делённый на 16.
Десяток инструкций на переход в защищённый режим, несложная обёртка над вызовом прерывания. Всё остальное в 32 или даже 64 битах как положено. Нахуй и впизду этот реалмод, ещё бы с ним пердолиться...
Но ещё хуже – закриптовать хард и забыть пароль....
Повезло, что дома нашёлся паяльник и удалось восстановить пароль при помощи терморектального криптоанализа?
Борманд, зачем нас наебал?
Но она другой породы
А что что в С++ нет оператора собачка это плохо
Если серьёзно, то заглушить ошибку, если она проверяется по-другому, скажем, смотря на возвращаемое значение. К примеру, file возвращает false, если файла не существует, и заодно срёт ошибкой. Если ты проверяешь возвращаемое значение на false, ошибка тут тебе уже не нужна.
А если файл удалился уже после проверки (транзакицонности у FS нет), то что делать?
реально без собачки никак?
Уж лучше собачка, чем эти гонки на ровном месте.
https://govnokod.ru/25839
Не на эту тему, но на тему гонок при проверке прав доступа.
>А если файл удалился уже после проверки (транзакицонности у FS нет), то что делать?
Вообще ограничения зависят от задачи же. Менеджеру виртуальной памяти допустимо считать, что внешнее хранилище (куда он свапит) никуда не денется, а файловому менеджеру, копирующему файл на флешку, так считать нельзя)
"WinMain@16", лол
какой багор ))
именно по этому я за интеловый свинтаксис
Да, «Линукс» рассчитан минимум на 80386. Из-за этого в своё время даже были срачи о «завышенных требованиях». Мол, «Xenix» и «Windows» можно запустить на 80286, а «Линукс» нельзя.
Только в классическом IBM PC 5150 не было 8080. И 8086 тоже небыло.
Там был 8088.
Отличался он тем, что шина данных была 8 бит, то есть за один раз он мог передать 1 байт только.
Так что на неём не нужно была это ваше сраное выравнивание.
Очень удобный и эффективный процессор
Я думал, загрузчик целиком на асме написи
https://docs.microsoft.com/en-us/windows/console/legacymode
там есть ссылка
https://docs.microsoft.com/en-us/windows/compatibility/ntvdm-and-16-bit-app-support
[quote]
Many enterprise customers are still running 16-bit Windows applications and depending on this feature.
[/quote]
какой багор ))
Для 64-битной нужно ставить сторонний софт.
https://github.com/otya128/winevdm
http://www.columbia.edu/~em36/ntvdmx64.html
Просто смешно, что он еще кому-то нуджен
http://www.mentor.com/embedded-software/codesourcery
Он поддерживает только модель «tiny» (компиляция в COM-файл). Работу с сегментами не поддерживает.
Десяток инструкций на переход в защищённый режим, несложная обёртка над вызовом прерывания. Всё остальное в 32 или даже 64 битах как положено. Нахуй и впизду этот реалмод, ещё бы с ним пердолиться...