Почему возможность исследования компьютерных чипов с помощью асм очень важна для дальнейшей
Искусственный интеллект (ИИ) позволяет компьютерам обучаться на собственном опыте, адаптироваться к задаваемым параметрам и выполнять те задачи, которые раньше были под силу только человеку. В большинстве случаев реализации ИИ — от компьютерных шахматистов до беспилотных автомобилей — крайне важна возможность глубокого обучения и обработки естественного языка. Благодаря этим технологиям компьютеры можно «научить» выполнению определенных задач с помощью обработки большого объема данных и выявления в них закономерностей.
4. Топографическое изображение наноструктурированных объектов (структуры и свойств)
АСМ обеспечивает уникальные возможности для получения качественной и количественной информации по многим физическим характеристикам исследуемого материала такие как: топологические, текстурные и параметры шероховатости поверхности. В связи с этим АСМ широко применяется для решения задач нанометрологии и технического контроля, позволяет осуществлять различные манипуляции с нанообъектами.
Рисунок 3 - Параметры шероховатости на образце с УНТ
Важным применением является проверка качества полировки ионными или ионно-пучковыми технологиями исследуемых образцов.
Рисунок 4 - 3-Д профиль созданной линзы в сапфире при ионно-пучковом травлении
Примеры сканирования образцов с использованием АСМ FM - Nanoview 1000 смотрите в специальном видеообзоре >>>
- Что такое атомно-силовой микроскоп?>>>
- Атомно-силовой микроскоп FM - Nanoview 1000 AFM>>>
- Режимы сканирования в атомно-силовой микроскопии (АСМ)>>>
*При подготовке статьи были использованы следующие материалы:
XLIX Международная Тулиновская Конференция по Физике Взаимодействия Заряженных Частиц с Кристаллами, «Кластерные технологии обработки титана для медицинских имплантов», Пестов С.М., Григоров В.В., Сенатулин Б.Р., Иешкин А.Е., Татаринцев А.А., Иваненко И.П., Рябцев М., Черныш В.С., 2019г.
Этой статье уже почти 3 года. Однако сегодня я решил подредактировать её, дополнить и выложить, наконец, на Хабр.
Подытожим…
Итак, приведу неполный перечень того, в каких случаях используется ассемблер.
Создание загрузчиков, прошивок устройств (комплектующих ПК, встраиваемых систем), элементов ядра ОС.
Низкоуровневая работа с железом, в т.ч. с процессором, памятью.
Внедрение кода в процессы (injection), как с вредоносной целью, так и с целью защиты или добавления функционала. Системный софт.
Блоки распаковки, защиты кода и прочего функционала (с целью изменения поведения программы, добавления новых функций, взлома лицензий), встраиваемые в исполняемые файлы (см. UPX, ASProtect и пр).
Оптимизация кода по скорости, в т.ч. векторизация (SSE, AVX, FMA), математические вычисления, обработка мультимедиа, копирование памяти.
Оптимизация кода по размеру, где нужно контролировать каждый байт. Например, в демосцене.
Вставки в языки высокого уровня, которые не позволяют выполнять необходимую задачу, либо позволяют делать это неоптимальным образом.
При создании компиляторов и трансляторов исходного кода с какого-либо языка на язык ассемблера (например, многие компиляторы C/C++ позволяют выполнять такую трансляцию). При создании отладчиков, дизассемблеров.
Собственно, отладка, дизассемблирование, исследование программ (reverse engineering).
Создание файлов данных с помощью макросов и директив генерации данных.
Вы не поверите, но ассемблер можно использовать и для написания обычного прикладного ПО (консольного или с графическим интерфейсом – GUI), игр, драйверов и библиотек :)
Это будет полезно
Если вы решили изучить ассемблер и окунуться в низкоуровневое программирование, вам будет полезна следующая литература:
Зубков С.В. Assembler для DOS, Windows и Unix. – ДМК Пресс, 2017. – 638 c., ISBN 978–5–97060–535–6.
Руслан Аблязов. Программирование на ассемблере на платформе x86–64. – ДМК Пресс, 2016. – 302 с., ISBN 978–5–97060–364–2.
Статьи старого WASM’а – кладезь обучающего материала на самые разные низкоуровневые темы (крайне рекомендую!)
Новый WASM (форум по низкоуровневому программированию и сборник статей).
Книги и статьи Криса Касперски (много).
Официальная документация AMD (множество документов) [всё на английском, PDF].
Архитектура и система команд микропроцессоров x86 (староватая документация на русском языке; из описания расширений есть только x87, MMX, 3DNow! и SSE(1)).
Марк Руссинович, Дэвид Соломон, Алекс Ионеску. Внутреннее устройство Microsoft Windows. – 6-е изд., часть 1. – Питер, 2013. – 800 с., ISBN 978–5–496–00434–3, 978–5–459–01730–4 (англ.: 978–0735648739).
Вышло 7-е издание этой части с Павлом Йосифовичем в качестве ещё одного соавтора – Питер, 2018 – 944 с., ISBN 978–5–4461–0663–9 (англ.: 978–3864905384).
Марк Руссинович, Дэвид Соломон, Алекс Ионеску. Внутреннее устройство Microsoft Windows. Основные подсистемы ОС. – 6-е изд., часть 2. – Питер, 2014. – 672 с., ISBN 978–5–496–00791–7 (англ.: 978–0735665873).
7-е издание этой части есть пока только на английском языке (ISBN 978–0135462409).
Джеффри Рихтер. Windows для профессионалов. Создание эффективных Win32-приложений с учётом специфики 64-разрядной версии Windows. – 4-е изд. – Питер, Русская редакция, 2001. – 752 с. (есть вариант книги 2008 г. на 720 с., но она тоже 4-го издания, с переводом 2000 года… в чём разница?), ISBN 5–272–00384–5, 978–5–7502–0360–4 (англ.: 1–57231–996–8).
Джеффри Рихтер, Кристоф Назар. Windows via C&C++. Программирование на языке Visual C++ – 5-е изд. – Питер, 2009 – 896 с., ISBN 978–5–388–00205–1, 978–5–7502–0367–3, 978–0–7356–2424–5 (англ.: 978–0735624245).
Pavel Yosifovich. Windows 10 System Programming, Part 1 – 2020, ISBN 979-8634170381 [англ].
Михаил Гук. Аппаратные средства IBM PC. Энциклопедия. – 3-е изд. – Питер, 2008. – 1072 с., ISBN 978–5–46901–182–8 (2001 г. – 816 с., ISBN 5–88782–290–2).
Владимир Кулаков. Программирование на аппаратном уровне. Специальный справочник (+ дискета). – 2-е изд. – Питер, 2003. – 848 с., ISBN 5–94723–487–4.
Всеволод Несвижский. Программирование аппаратных средств в Windows (+ CD-ROM). – 2-е изд. – БХВ-Петербург, 2008. – 528 с., ISBN 978–5–9775–0263–4.
Компиляторы и инструменты:
MASM32 (Macro Assembler) – наверное, самый популярный пакет самого популярного ассемблера.
MASM64 includes and libs – заголовки и библиотеки для 64-битной версии MASM (информация); файлы ml64.exe, link.exe и прочие потроха можно взять из Visual Studio (путь к папке с нужными файлами примерно такой: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\bin\Hostx64\x64\).
fasm (flat assembler) – современный и удобный компилятор под DOS, Wndows, Linux с очень развитой системой макросов и полным набором инструкций Intel/AMD. Рекомендую в качестве основного!
Там же можно скачать и fasmg (flat assembler g) – универсальный ассемблер под любую платформу (имеются include-модули для создания кода под AVR, i8051, x86/x64, генерации байт-кода JVM, аналогично можно создать свои модули).
NASM (Netwide Assembler) – ещё один современный кроссплатформенный компилятор с хорошей макросистемой и полным набором инструкций Intel/AMD, популярен в зарубежных проектах и при программировании под Linux/BSD.
NASMX – пакет макросов, include’ов, примеров и утилит для NASM под Windows, Linux, BSD, Xbox; включает макрос invoke, символы для работы с OpenGL и пр.
UASM (он же HJWasm) – современный MASM-совместимый мультиплатформенный ассемблер с полным набором инструкций Intel/AMD.
TASM 5.x (Turbo Assembler) – старый, но всё ещё популярный ассемблер, в основном используется для создания программ под DOS.
ALINK, GoLink – компоновщики для программ под DOS и Windows.
objconv – преобразователь форматов объектных файлов (COFF/OMF/ELF/Mach-O).
ResEd – бесплатный редактор ресурсов.
GoRC – компилятор ресурсов (rc → res) [в вышеупомянутом NASMX есть и GoLink, и objconv, и GoRC].
Windows 10 Software Development Kit (SDK) – заголовочные файлы, библиотеки, инструменты (в том числе отладчик WinDbg) для разработчиков Windows.
Fresh IDE – визуальная среда разработки для fasm.
SASM – простая кроссплатформенная среда разработки для NASM, MASM, GAS, fasm с подсветкой синтаксиса и отладчиком (для NASM имеется набор макросов для упрощения работы с консолью).
OllyDbg – популярный 32-битный отладчик (готовится 64-битная версия, но пока ещё не вышла).
x64dbg – хороший отладчик для 32- и 64-битного кода.
IDA Pro – мощный интерактивный дизассемблер (shareware).
VMware Workstation Player – мощный виртуализатор, позволяющий создавать и запускать виртуальные машины (бесплатный для персонального использования).
Oracle VirtualBox – альтернативный бесплатный виртуализатор.
Bochs – эмулятор компьютера IBM PC.
QEMU – эмулятор аппаратного обеспечения различных платформ (QEMU Manager).
Intel Software Development Emulator (SDE) – эмулятор расширений (инструкций) процессоров Intel.
DOSBox – очень популярный эмулятор компьютера для запуска программ под DOS (имеет встроенный замедлитель скорости).
Hiew – редактор двоичных файлов со встроенным дизассемблером, просмотром и редактированием заголовков исполняемых файлов (shareware).
PE Explorer – редактор секций, ресурсов PE, дизассемблер (shareware).
Windows Sysinternals – набор системных утилит для Windows (работа с процессами, мониторы и прочее).
ReactOS – бесплатная Windows-совместимая операционная система с открытым исходным кодом.
KolibriOS – миниатюрная ОС, умещающаяся на дискету 1.44 Mb, с исходниками на fasm.
Все эти ссылки (а также множество других, которые не вошли в эту статью) вы можете найти, кликнув сюда.
Также хочу пригласить вас в наш уютный «ламповый» раздел Assembler Форума на Исходниках.Ру ;)
Наверняка каждый когда-либо задавался вопросом — почему в России (по большому счету, во всех странах бывшего СССР) не делают высокотехнологичные продукты? Нет своих смартфонов, компьютеров и даже просто процессоров. Если быть точным, свое процессоры в России есть — тот же “Эльбрус” и “Байкал”, но вот по производительности они уступают даже сильно устаревшим процессорам Intel, причем выпускаются в Тайване. А в связи с вводом санкций, их производство вообще остановлено, так как в них используется архитектура ARM. Другими словами, ни один крупный производитель микроэлектроники выпускать их больше не будет, чтобы не на влечь на себя гнев западного мира. Всему этому есть вполне объективные причины, и далее мы постараемся рассмотреть основные из них.
В России нет собственного современного производства микроэлектроники
Отсутствие капитала у отечественных производителей
Открыть высокотехнологичный бизнес невозможно без больших финансовых вложений. Причем, в отличие от производства того же кирпича, успех в высокотехнологичном бизнесе зависит не от качества оборудования, а от людей. Они должны обладать хорошим техническим образованием, а желательно, еще и опытом. Привлечь таких специалистов из крупных компаний дорого и сложно.
С одной стороны, денег в России достаточно, но они сконцентрированы в руках людей, которые занимаются обычным бизнесом. Разбираться в тонкостях микроэлектроники и рисковать им попросту не интересно и не выгодно.
ВНИМАНИЕ! Мы видим, что вы еще не подписались на наш Яндекс.Дзен-канал. Обязательно подпишитесь, чтобы иметь доступ к важной информации, которую мы не публикуем на сайте.
Оговорочки
Хочу сразу оговориться, что правильно говорить не «ассемблер» (assembler), а «язык ассемблера» (assembly language), потому как ассемблер – это транслятор кода на языке ассемблера (т.е. по сути, программа MASM, TASM, fasm, NASM, UASM, GAS и пр., которая компилирует исходный текст на языке ассемблера в объектный или исполняемый файл). Тем не менее, из соображения краткости многие, говоря «ассемблер» (асм, asm), подразумевают именно «язык ассемблера».
Синтаксис директив, стандартных макросов и пр. структурных элементов различных диалектов (к примеру, MASM, fasm, NASM, GAS), могут отличаться довольно существенно. Мнемоники (имена) инструкций (команд) и регистров, а также синтаксис их написания для одного и того же процессора примерно одинаковы почти во всех диалектах (заметным исключением среди популярных ассемблеров является разве что GAS (GNU Assembler) в режиме синтаксиса AT&T для x86, где к именам инструкций могут добавляться суффиксы, обозначающие размер обрабатываемых ими данных, что бывает довольно удобно, но там есть и другие нюансы, сбивающие с толку программиста, привыкшего к классическому ассемблеру, к примеру, иной порядок указания операндов, хотя всё это лечится специальной директивой переключения в режим классического синтаксиса Intel).
Поскольку ассемблер – самый низкоуровневый язык программирования, довольно проблематично написать код, который корректно компилировался бы для разных архитектур процессоров (например, x86 и ARM), для разных режимов одного и того же процессора (16-битный реальный режим, 32-битный защищённый режим, 64-битный long mode; а ещё код может быть написан как с использованием различных технологий вроде SSE, AVX, FMA, BMI и AES-NI, так и без них) и для разных операционных систем (Windows, Linux, MS-DOS). Хоть иногда и можно встретить «универсальный» код (например, отдельные библиотеки), скажем, для 32- и 64-битного кода ОС Windows (или даже для Windows и Linux), но это бывает нечасто. Ведь каждая строка кода на ассемблере (не считая управляющих директив, макросов и тому подобного) – это отдельная инструкция, которая пишется для конкретного процессора и ОС, и сделать кроссплатформенный вариант можно только с помощью макросов и условных директив препроцессора, получая в итоге порой весьма нетривиальные конструкции, сложные для понимания.
Откуда растут ноги?
Ассемблером я увлёкся лет в 12–13, и он меня изрядно «затянул». Почему?
Во-первых, экономия памяти (дисковой и оперативной) и погоня за скоростью в те DOS-овские времена далёких 90-х годов были куда более актуальными темами, чем сейчас.
Во-вторых (и это более существенно), на ассемблере можно было делать много того, что сделать на языках высокого уровня (ЯВУ, не путайте с Java) нельзя, затруднительно или не так эффективно. К примеру, мне очень нравилось писать резидентные программы.
Но с тех пор прошло уже более 2-х десятков лет, и сейчас экономия памяти (особенно дисковой) в подавляющем большинстве случаев уже не так актуальна, да и скорости современных процессоров для выполнения повседневных задач вполне хватает (популярность языков сверхвысокого уровня подтверждает это, хотя закон Вирта никто не отменял). А современные компиляторы зачастую могут оптимизировать код по скорости даже лучше человека. Что же может привлекать программиста в ассемблере, ведь исходники на нём гораздо более объёмные и сложные, а на разработку требуется больше времени и внимания (в т.ч. на отладку)?
Есть ли будущее у российских процессоров?
В Зеленограде в мае 2022 года было объявлено о начале строительства нового завода, на котором будут выпускаться процессоры. Речь о нем идет уже давно, и ожидалось, что запуск производства состоится только в 2030 году. Однако табличка на строительной площадке говорит о том, что завод будет построен в 2024 году.
Отношения между Россией и США в очередной раз накалены до предела. Угрозы ввода санкций звучат практически ежедневно. Казалось бы, ничего нового. В условиях санкций Россия живет уже восемь лет. Но на этот раз ситуация более серьезная — Америка грозит прекратить поставки в Россию высокотехнологичного оборудования. Это не только смартфоны iPhone и процессоры Intel и AMD, но и прочая электроника, в которой используются чипы, выполненные по технологиям США. Следует понимать, что Америка лицензирует каждую свою разработку, в результате чего создать чип без применения американских технологий практически невозможно. Другими словами, после принятия санкций, поставки электронной продукции прекратят не только американский производители. Чем может ответить Россия в такой ситуации? Попросту обрушить производство полупроводников во всем мире. Дело в том, что Россия является основным поставщиком инертного газа неона и палладия, без которые используются для производства чипов.
Если США введут санкции против России, под угрозой может оказаться производство чипом во всем мире
Экономика против микроэлектроники в России
Бизнес всегда стремится к тому, чтобы получить максимум прибыли с минимальными вложениями и рисками. Высокотехнологичный бизнес этим требованиям совершенно не соответствует. Он требует больших вложений, сроки его окупаемости крайне высокие, а в добавок еще присутствуют большие риски.
Некоторые государства повышают привлекательность высокотехнологичного бизнеса дотациями, госконтрактами в военной и гражданской сфере. Это дает некоторый толчок его развитию, особенно в ситуации, когда в стальном бизнесе остается мало места.
Производство микроэлектроники требует больших вложений средств
В России же низкотехнологичный бизнес по ряду причин может быть гораздо более прибыльным. В результате с экономической точки зрения разработка микроэлектроники является бессмысленным занятием, особенно в краткосрочной перспективе.
1. Исследование морфологии тонких и островковых пленок
Одним из перспективных направлений применения тонких металлических пленок является создание на их основе солнечных модулей, используемых для генерации электрической энергии. В этом случае металлические пленки служат для создания контактных соединений солнечных батарей. Кроме этого металлические пленки используются в процессах электромиграции для создания нанометровых зазоров и создании одноэлектронных приборов.
История развития искусственного интеллекта
Термин «искусственный интеллект» появился в 1956 году, но настоящей популярности технология ИИ достигла лишь сегодня на фоне увеличения объемов данных, усовершенствования алгоритмов, оптимизации вычислительных мощностей и средств хранения данных.
Первые исследования в области ИИ, стартовавшие в 50-х годах прошлого века, были направлены на решение проблем и разработку систем символьных вычислений. В 60-х годах это направление привлекло интерес Министерства обороны США: американские военные начали обучать компьютеры имитировать мыслительную деятельность человека. Например, Управление перспективных исследовательских проектов Министерства обороны США (DARPA) выполнило в 70-х годах ряд проектов по созданию виртуальных уличных карт. И специалистам DARPA удалось создать интеллектуальных личных помощников в 2003 году, задолго до того, как появились Siri, Alexa и Cortana.
Эти работы стали основой для принципов автоматизации и формальной логики рассуждений, которые используются в современных компьютерах, в частности, в системах для поддержки принятия решений и умных поисковых системах, призванных дополнять и приумножать возможности человека.
Хотя в научно-фантастических фильмах и романах ИИ зачастую изображают в виде человекоподобных роботов, захватывающих власть над миром, на данном этапе развития технологии ИИ совсем не такие страшные и далеко не такие умные. Напротив, развитие искусственного интеллекта позволяет этим технологиям приносить реальную пользу во всех отраслях экономики. Ниже описаны примеры использования технологий искусственного интеллекта в здравоохранении, розничной торговле и других областях.
Атомно-силовая микроскопия (АСМ) относится к группе высокоразрешающих измерительных методов исследования микроструктуры и топографических особенностей материалов, известной под общим названием сканирующая зондовая микроскопия (СЗМ).
Высокая разрешающая способность АСМ позволяет применять данный метод исследования для широкого спектра образцов. В частности, данные полученные с АСМ могут дать информацию о топографических картах поверхности исследуемых объектов, а также анализировать физические свойства целого ряда образцов: пористых материалов, тонких пленок, наноструктур, полимеров и многих других.
АСМ предоставляет уникальную возможность для изучения фрагментации и отслаивания покрытий, визуализации адсорбированных частиц, анализа шероховатости после ионной или кластерной полировки, определения высоты напыленного слоя (ступеньки), а также получать трехмерное изображение исследуемого объекта.
Клиенты обсуждают технологии искусственного интеллекта и машинного обучения
Посмотрите это видео и узнайте о тенденциях в области машинного обучения и искусственного интеллекта от клиентов SAS и экспертов в сфере ИИ, а также об их прогнозах по дальнейшему развитию технологий искусственного интеллекта.
В банковской сфере ИИ действительно помогает повысить качество обслуживания клиентов: мы формируем для них актуальные предложения в нужное время и используем правильный канал коммуникации Пьер Монтанье (Pierre Montagnier) директор по потребительскому маркетингу, отдел аналитики и моделирования Bank of Montreal
Наследие 90-х годов
В России, как и в остальных странах СНГ, был приватизирован и начал развиваться простой бизнес. Крупные бизнесмены занимались получением сверхприбылей в сжатые сроки. Впоследствии они стали лоббировать изменения законодательства, которые помогали сохранять высокие доходы в своих нишах бизнеса.
Что касается высоких технологий — государство науку практически не финансировало. Это привело к “утечке мозгов”. Многие специалисты оказались за рубежом, где вносили свой вклад в развитие иностранного высокотехнологичного бизнеса. Отечественный же высокотехнологичный бизнес оказался совершенно незащищенным.
2. Исследование морфологии полимерных пленок
Широкое применение находят и в анализе полимерных пленок, таких как ПММА и других. Лежащих в основе процессов создания электронных компонент, к примеру современных процессоров.
Рисунок 1 - Пленка ПММА
Рисунок 2 - Полимерная пленка диска
Вон оно что!
Приведу свои доводы относительно того, чем так хорош ассемблер.
Ассемблер даёт полный контроль над кодом и обладает большей гибкостью, чем любой другой язык программирования (даже C/C++). На асме мы можем конструировать нашу программу, размещая блоки кода и данных как нам вздумается. Каждый генерируемый байт будет таким, каким мы хотим его видеть. Без лишнего runtime-кода стандартных библиотек. Правда, справедливости ради отмечу, что необходимость в этом может возникнуть лишь в весьма специфических случаях. Однако существуют аппаратные платформы с ограниченными ресурсами, где оптимизация кода важна и актуальна и в наши дни.
На ассемблере можно написать ВСЁ, он всемогущ! Вряд ли у вас получится создать MBR-загрузчик полностью на C или на чём-то ещё. Для работы с железом на низком уровне, программирования чипсетов зачастую может потребоваться ассемблер. Для внедрения кода в другие процессы (injection, не только с вредоносными целями), создания различных антиотладочных приёмов тоже необходим ассемблер. Или, скажем, для проделывания чего-то вроде этого. Для C/C++ имеются интринсики – функции для генерации отдельных инструкций процессора (есть ли что-то подобное для других языков программирования – не знаю, не встречал). Но их частое использование загромождает код (не проще ли тогда писать на чистом ассемблере?) А их отсутствие не позволяет нам контролировать генерируемый компилятором код (при этом, к слову говоря, Visual C/C++, GNU C/C++ и Clang будут генерировать разный код; и даже один и тот же компилятор с разными настройками выдаст различный результат).
Получаемый код даже самого умного и навороченного компилятора, как правило, можно оптимизировать (как по скорости, так и по размеру). К примеру, автоматическую векторизацию кода (приведение обычных скалярных вычислений к параллельным вычислениям с использованием SIMD: SSE, AVX и т.п.), компиляторы C/C++ делают весьма посредственно. А ещё можно изощриться и использовать неочевидные комбинации, сделав код короче и быстрее. Этим можно, конечно, заняться и на других языках, но на ассемблере больше простора для творчества. К тому же, это особый кайф, азарт, челлендж в некотором роде! Разве не прикольно написать программу, выполняющую полезные функции, весом менее 10 Кб? :) Для сравнения: VCL-программа на Delphi 10.2 Tokyo, создающая пустое окно без какого-либо полезного функционала, весит в release-версии целых 2 Мб (а в debug-версии… кхм, 11 Мб). На C++Builder 10.2 Tokyo release-версия такой же программы, не требующая внешних библиотек, получится размером ≈ 2.7 Мб. Аналогичная программа на fasm будет занимать всего пару килобайт.
Обычно одна строка кода на ЯВУ разворачивается в несколько (или даже десяток) инструкций процессора. А знаете ли вы о том, что некоторые инструкции процессора Intel требуют несколько строк для реализации на ЯВУ (на том же C/C++, если не использовать интринсики)? Если не знаете, просто поверьте на слово, а я, возможно, напишу об этом в одной из следующих статей. Приведу лишь один простой пример: аналоги инструкций rol, ror (существующих ещё в самых ранних процессорах i8086 с конца 70-х годов) появились только в стандарте C++20 в библиотеке bit (как функции std::rotl, std::rotr), а в большинстве других языков они вообще отсутствуют.
Есть такое направление компьютерного искусства: демосцена. Написать intro, уместив исполняемый файл в 256 байт [1, 2, 3, 4] (а то и 128, 64, 32 или даже ещё меньше) на чём-то отличном от ассемблера (ну или по крайней мере, без использования ассемблера для финальной корректировки кода) вы вряд ли сможете.
Ещё одна интересная область применения ассемблера – создание файлов данных с помощью макросов и директив генерации данных. К примеру, fasm позволяет создавать виртуальные данные и генерировать отдельные файлы (директива virtual), а также читать и изменять ранее сгенерированный код (директивы load, store). Есть даже примеры AES-шифрования файлов.
Без ассемблера не обойтись при исследовании (reverse engineering), а зачастую и при отладке программ.
В ассемблере есть особая магия и притягательность! Но справедливости ради скажу, что писать всегда на ассемблере – занятие не очень разумное с точки зрения времени, усилий, вероятности допустить ошибку и кроссплатформенности (я сам реже пишу на ассемблере, нежели на других языках). Не так часто нам требуется полный контроль над кодом и столь уж жёсткая оптимизация, когда экономия пары тактов процессора имеет критически решающее значение.
На том же C/C++ можно написать практически всё, что можно написать и на ассемблере, причём сразу под десяток платформ и ОС, включая и выключая отдельными опциями компилятора использование различных наборов инструкций, векторизацию, оптимизацию и пр.
Но иногда использование ассемблера действительно оправдано (пример). Часто ассемблер хорошо использовать в виде вставок в код на ЯВУ (посмотрите RTL-модули Delphi, там этого добра в изобилии). Да и использование интринсиков, как правило, не имеет смысла (или даже опасно) без знания ассемблера.
3. Изучение поверхностных дефектов материалов
Еще одним применением АСМ является исследование поверхностных дефектов, которые могут существенно влиять на изоляционное покрытие тонких металлических проводов, способствуя их оксидированию и снижению проводимости. Для диагностики точечных дефектов АСМ позволяет строить топографические карты и карты распределения высот поверхностных дефектов, включающих капли покрытия, микротрещины и т. д.
В целом можно утверждать, что метод АСМ является универсальным и эффективным средством определения поверхностных дефектов. Единственным недостатком этого метода является малое поле сканирования, существенно ограничивающее производительность измерительной системы. Задача определения поверхностных дефектов является важным этапом технического контроля различных изделий в промышленности.
Метод АСМ широко используется для анализа качества пленок аморфного кремния и контроля элементных соединений в тонкопленочных солнечных модулях (ТПСМ).
Где в России добывают палладий
Палладий является одним из самых ценных металлов на земле. Он относится к платиновой группе, имеет серебристо-белый цвет. Крупнейшее его месторождение находится в Норильске. Палладий получают путем переработки сульфидных руд таких металлов, как никель, серебро и медь.
Россия добывает более половины от мировой добычи палладия. Правда США закупает его у разных стран — Канады, ЮАР, а также сами добывают на Аляске. Однако Россия покрывает 35% от потребностей страны. Поэтому, в случае наложения ответных санкций, это так же станет серьезной проблемой.
На нашем Яндекс.Дзен-канале вас ждет еще больше увлекательных материалов, которые небыли опубликованы на сайте.
Кроме палладия Россия также может перестать поставлять гелий, фтор и скандий. В результате это может стать серьезным ударом по производству смартфонов, автомобильных запчастей и даже ракет. С учетом того, что на рынке полупроводниковой продукции и так наблюдается дефицит, выпуск данной продукции может быть поставлен под угрозу. Таким образом без высокотехнологичной продукции может остаться не только Россия, но и весь мир.
Разумеется, если США все равно введут санкции, проблему с чипами в России остановка поставок сырья не решит. Собственные заводы должны быть построены только к 2030 году, причем на них будут производиться чипы по 16-нанометровому техпроцессу, который уже сейчас считается устаревшим. К примеру, компания Intel представила Core i9, созданный по 14-нанометровому техпроцессу еще в 2018 году. Поэтому остается надеяться лишь на то, что до введения санкция дело все же не дойдет.
Патенты и конкуренция
Некоторые страны уже много лет занимают лидерские позиции на рынке микроэлектроники. При этом все свои технологии они “закрывают” патентами, в результате чего не позволяют делать то, что ими уже сделано. А если и позволяют, то ставят бизнес в зависимость от других государств.
Ярким тому примером являются российские процессоры “Эльбрус” и “Байкал”, производство которых оказалось под большой угрозой. Китайские производители не станут их выпускать вопреки санкциям, так как сами работают по зарубежным патентам. По этой причине в России в ближайшее время ожидается дефицит электроники и бытовой техники.
Все существующие технологии имеют патенты, которые принадлежат зарубежным компаниям
В результате выйти на рынок с аналогичным продуктом, в настоящее время, крайне сложно. Для этого необходимо разрабатывать совершенно новые технологии, либо риски сделают развитие бизнеса сомнительной затеей.
Где в России добывают неон
Неон представляет собой достаточно редкий газ, который не имеет цвета, запаха или вкуса, кроме того, он не вступает в химические реакции, то есть является инертным газом. Небольшое количество неона присутствует в воздухе, поэтому даже сейчас вы его вдыхаете.
Неон содержится в атмосфере
Надо сказать, что неон специально обычно не добывают. Он является одним из побочных продуктов, который образуется в результате сжижения и разделения воздуха в промышленности. Его получают в больших количествах на металлургических предприятиях России и Украины. Именно отсюда поставляется 90% неона для производства процессоров и микросхем. Причем большая часть газа поступает именно из России, а в Украине он только проходит очистку.
Почему неон необходим для производства чипов
Современные процессоры изготавливаются методом фотолитографии. Суть данной технологии заключается в получении необходимого рисунка на светочувствительной пленке методом засвета через фотошаблон (маску). Для этого на кремниевую пластину вначале наносится фоторезист, то есть светочувствительная поверхность. Она меняет свои свойства, когда на нее попадает свет определенной волны.
Неон используют не только для изготовления светящихся вывесок, но и при производстве процессоров
Затем эта пленка засвечивается через маску с заданным рисунком при помощи ультрафиолетового газового лазера. В итоге на фоторезисте отпечатывается рисунок. А причем тут неон, спросите вы? Он является основным инертным газом в газовой смеси, которая обеспечивает необходимую длину волны лазера.
Таким образом, без неона не будут работать лазеры, необходимые для производства чипов. Кроме того, неон используется при производстве LCD-мониторов и телевизоров.
Для чего используют палладий
Палладий часто используется в транзисторах графического процессора вместе с танталом для увеличения объема памяти чипа. Кроме того, палладий и сплавы палладия применяют для покрытия контактов. Его использование обусловлено высокой износоустойчивостью, а также коррозионной стойкостью.
Палладий — драгоценный металл, который применяют для покрытия контактов
Кроме того, палладий в большом количестве используется в автомобилестроения. Он применяется в катализаторах, которые обеспечивают дожиг отработанных газов и очистку в соответствии с принятыми нормами. Поэтому даже на бюджетных автомобилях катализатор является дорогостоящей деталью.
Быть или не быть?
Так, нужно ли изучать ассемблер современному программисту? Если вы уже не новичок в программировании, и у вас серьёзные амбиции, то изучение ассемблера, внутреннего устройства операционных систем и функционирования железа (особенно процессоров, памяти), а также использование различных инструментов для дизассемблирования, отладки и анализа кода полезно тем, кто хочет писать действительно эффективные программы. Иначе будет сложно в полной мере понять, что происходит «под капотом» любимого компилятора (хотя бы в общих чертах), как оптимизировать программы на любом языке программирования и какой приём стоит предпочесть. Необязательно погружаться слишком глубоко в эту тему, если вы пишете на Python или JavaScript. А вот если ваш язык – C или C++, хорошенько изучить ассемблер будет полезно.
Вместе с тем, необходимо помнить не только о «тактике», но и о «стратегии» написания кода, поэтому не менее важно изучать и алгоритмы (правильный выбор которых зачастую более важен для создания эффективных программ, нежели низкоуровневая оптимизация), шаблоны проектирования и многие другие технологии, без которых программист не может считать себя современным.
Читайте также: