Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Чтобы можно было выполнить таск типа "исправить ошибку 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 битах как положено. Нахуй и впизду этот реалмод, ещё бы с ним пердолиться...
KoWe4Ka_l7porpaMMep # 0
Но ещё хуже – закриптовать хард и забыть пароль....
guest # 0 ⇈
OPAHrymaH # 0 ⇈
bormand # 0 ⇈
Повезло, что дома нашёлся паяльник и удалось восстановить пароль при помощи терморектального криптоанализа?
ASD_77 # 0
j123123 # 0
guest # 0 ⇈
bormand # 0 ⇈
Coq # 0 ⇈
HEu3BECTHblu_nemyx # 0 ⇈
guest # 0 ⇈
JloJle4Ka # 0 ⇈
guest # 0 ⇈
JloJle4Ka # 0 ⇈
Борманд, зачем нас наебал?
bormand # 0 ⇈
bormand # 0 ⇈
MAKAKA # 0 ⇈
Но она другой породы
А что что в С++ нет оператора собачка это плохо
JaneBurt # 0 ⇈
MAPTbIwKA # 0 ⇈
guest # 0 ⇈
MAPTbIwKA # 0 ⇈
JaneBurt # 0 ⇈
Fike # 0 ⇈
[email protected] # 0 ⇈
Если серьёзно, то заглушить ошибку, если она проверяется по-другому, скажем, смотря на возвращаемое значение. К примеру, file возвращает false, если файла не существует, и заодно срёт ошибкой. Если ты проверяешь возвращаемое значение на false, ошибка тут тебе уже не нужна.
MAPTbIwKA # 0 ⇈
[email protected] # 0 ⇈
MAPTbIwKA # 0 ⇈
А если файл удалился уже после проверки (транзакицонности у FS нет), то что делать?
реально без собачки никак?
bormand # 0 ⇈
Уж лучше собачка, чем эти гонки на ровном месте.
HEu3BECTHblu_nemyx # 0 ⇈
https://govnokod.ru/25839
Не на эту тему, но на тему гонок при проверке прав доступа.
MAPTbIwKA # 0 ⇈
>А если файл удалился уже после проверки (транзакицонности у FS нет), то что делать?
Вообще ограничения зависят от задачи же. Менеджеру виртуальной памяти допустимо считать, что внешнее хранилище (куда он свапит) никуда не денется, а файловому менеджеру, копирующему файл на флешку, так считать нельзя)
KoWe4Ka_l7porpaMMep # 0 ⇈
MAPTbIwKA # 0 ⇈
"WinMain@16", лол
HEu3BECTHblu_nemyx # 0 ⇈
KoWe4Ka_l7porpaMMep # 0 ⇈
HEu3BECTHblu_nemyx # 0 ⇈
MAPTbIwKA # 0 ⇈
bormand # 0 ⇈
MAPTbIwKA # 0 ⇈
какой багор ))
именно по этому я за интеловый свинтаксис
HEu3BECTHblu_nemyx # 0 ⇈
bormand # 0 ⇈
HEu3BECTHblu_nemyx # 0 ⇈
Да, «Линукс» рассчитан минимум на 80386. Из-за этого в своё время даже были срачи о «завышенных требованиях». Мол, «Xenix» и «Windows» можно запустить на 80286, а «Линукс» нельзя.
MAPTbIwKA # 0 ⇈
Только в классическом IBM PC 5150 не было 8080. И 8086 тоже небыло.
Там был 8088.
Отличался он тем, что шина данных была 8 бит, то есть за один раз он мог передать 1 байт только.
Так что на неём не нужно была это ваше сраное выравнивание.
Очень удобный и эффективный процессор
MAPTbIwKA # 0 ⇈
Я думал, загрузчик целиком на асме написи
HEu3BECTHblu_nemyx # 0 ⇈
MAPTbIwKA # 0 ⇈
HEu3BECTHblu_nemyx # 0 ⇈
MAPTbIwKA # 0 ⇈
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]
какой багор ))
HEu3BECTHblu_nemyx # 0 ⇈
Для 64-битной нужно ставить сторонний софт.
https://github.com/otya128/winevdm
http://www.columbia.edu/~em36/ntvdmx64.html
MAPTbIwKA # 0 ⇈
Просто смешно, что он еще кому-то нуджен
HEu3BECTHblu_nemyx # 0 ⇈
HEu3BECTHblu_nemyx # 0 ⇈
http://www.mentor.com/embedded-software/codesourcery
Он поддерживает только модель «tiny» (компиляция в COM-файл). Работу с сегментами не поддерживает.
MAPTbIwKA # 0 ⇈
bormand # 0 ⇈
Десяток инструкций на переход в защищённый режим, несложная обёртка над вызовом прерывания. Всё остальное в 32 или даже 64 битах как положено. Нахуй и впизду этот реалмод, ещё бы с ним пердолиться...
JaneBurt # 0 ⇈
guest # 0
crazzy501 # 0 ⇈