Зачастую в процессе разработки собственных устройств или моддинга уже существующих, встаёт задача выполнения стороннего кода: будь то ваши собственные программы с SD-флэшек, или программы, написанные другими пользователями с помощью SDK для вашего устройства. Тема компиляторов и кодогенерации достаточно сложная: чтобы просто загрузить ELF или EXE (PE) программу, вам нужно досконально разбираться в особенностях вашей архитектуры: что такое ABI, релокации, GOT, отличие -fPIE от -fPIC, как писать скрипты для ld и т. п. Недавно я копал SDK для первых версий Symbian и основываясь на решениях из этой ОС понял, каким образом можно сделать крайне «дешевую» загрузку любого нативного кода практически на любом микроконтроллере, совершенно не вникая в особенности кодогенерации под неё! Сегодня мы с вами: узнаем, что происходит в процессе загрузки программы ядром Linux, рассмотрим концепцию, предложенную Symbian Foundation и реализуем её на практике для относительно малоизвестной архитектуры — XTensa (хотя она используется в ESP32, детали её реализации «под капотом» для многих остаются загадкой). Интересно? Тогда добро пожаловать под кат!
Читать полностью »
Рубрика «exe»
Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой: как загружать программы без знания ABI?
2024-01-05 в 8:01, admin, рубрики: Atmega, attiny, avr, bodyawm_ништячки, C, c++, cc, dll, elf, esp32, esp8266, exe, executable, gcc, gnu ld, ld, linker, pic, timeweb_статьи, xtensa, бинарные файлы, загрузчик, исполняемый файл, компоновщик, микроконтроллеры, микропроцессоры, программа, программы, системное программированиеКомпилируем быстрые консольные .exe приложения на PHP 8.1 в 2023 году, а почему бы и нет?
2023-03-13 в 8:01, admin, рубрики: c++, dll, enigma, exe, ffi, jit, php, PHP 8, timeweb_статьи, WinAPI, Блог компании Timeweb Cloud, интерпретатор, компиляция, консоль, приложение, разработка под windows, утилита, франкенштейнУ многих в своё время, наверное, было желание легкого написание консольных и оконных приложений. Ребята рунета иногда писали незаменимые приложения для решения мелких задач и делились на форумах, хотя некоторые из них и содержали костыли.
Однако времена меняются, и люди начали осознавать свои ошибки, переходя, скажем, на ООП.
Чтобы поностальгировать и продемонстрировать нового Франкенштейна, мы соберем полноценное консольное exe-приложение на PHP.Читать полностью »
Самоизоляция это отличное время приступить к тому, что требует много времени и сил. Поэтому я решил заняться тем, чем всегда хотел — написать свой компилятор.
Сейчас он способен собрать Hello World, но в этой статье я хочу рассказать не про парсинг и внутреннее устройство компилятора, а про такую важную часть как побайтовая сборка exe файла.
Читать полностью »
Почему 0x00400000 является базовым адресом по умолчанию для EXE
2014-10-19 в 12:54, admin, рубрики: exe, Windows 95, Windows NT, x86, базовый адрес, переключение контекста, разработка под windows, системное программированиеБазовым адресом по умолчанию для DLL является 0x10000000, но для исполняемых файлов это 0x00400000. Почему именно такое особое значение для EXE? Что такого особенного в 4 мегабайтах?
Это имеет отношение к размеру адресного пространства, отображаемого одной таблицей страниц в архитектуре x86, и такую конструкцию выбрали в 1987 году.
Единственным техническим требованием для базового адреса EXE является кратность 64 КБ. Но некоторые варианты базового адреса лучше, чем другие.
Цель выбора базового адреса состоит в минимизации вероятности, что модули будут перемещены. Это означает, что следует предотвратить столкновение 1) с другими объектами, которые уже в адресном пространстве (что и вызовет перемещение); 2) а также с объектами, которые могут появиться в адресном пространстве позже (форсируя их перемещение). Для исполняемых файлов избегать конфликта с объектами, которые могут появиться позже, означает уход из района адресного пространства, который может быть заполнен библиотеками DLL. Поскольку сама операционная система помещает файлы DLL в старшие адреса и базовым адресом по умолчанию для несистемных DLL является is 0x10000000, то базовый адрес для EXE должен быть где-то младше 0x10000000, и чем младше, тем больше места останется до того, как вы начнёте конфликтовать с библиотеками. Но насколько низко нужно заходить?
Читать полностью »
Странное поведение Task Manager в Windows Server 2012
2012-11-26 в 4:40, admin, рубрики: exe, microsoft, windows, Windows Server 2012, индусский код, ненормальное программирование, метки: exe, microsoft, Windows Server 2012, индусский кодКраткое содержание: история в картинках, как я «улучшал» Task Manager в Windows Server 2012
Преамбула
Началось всё с того, что я в тестовых целях (выяснить, есть ли принципиальное различие), поставил Windows Server 2012. Для тех, кто не знает, это такая Windows 8, только дороже. Ну, а ещё, от него можно оторвать GUI и поставить всякие разные роли.
Ну так вот, одна из наиболее приятных вещей в Windows 8 для меня — новый Таск Менеджер, и красивый и удобный. Какое же было моё удивление, когда я открыл его в WinServer 2012 и не увидел некоторых данных.
Вот пара картинок для понятности.
Читать полностью »
Делаем standalone exe на IronPython
2012-08-15 в 8:50, admin, рубрики: .net, exe, ironpython, python, windows, метки: .net, exe, ironpython, python, windows Иногда требуется написать маленькую программу, которая будет распространяться в виде исполняемого файла, и при этом не хочется, чтобы с программой ещё было море файлов. Один exe-шник и всё, да при этом хочется, чтобы его написание не занимало много времени (какой-нибудь лёгкий язык).
CPython в комплекте с py2exe или cx_Freeze не даёт требуемого результата: много файлов и большой размер программы, хотя и работает очень быстро.
Даже попробовал в Racket Creating Stand-Alone Executables, но хотелось всё же использовать Python, так как много наработок. Да и Racket тоже сгенерировал немало дополнительного «мусора».
Чистое решение смог получить в IronPython с помощью встроенного компилятора pyc. Даже IDE не потребовалась. Подробности под катом.
Читать полностью »
Системное администрирование / [Из песочницы] Удаленная установка программ с использованием Kaspersky Security Center
2012-03-05 в 9:11, admin, рубрики: exe, Kaspersky Security Center, MSI, Windows Installer, установка приложений, метки: exe, Kaspersky Security Center, MSI, Windows Installer, установка приложенийБольшое количество статей описывает — как удаленно установить приложение на несколько компьютеров в доменной сети (AD). Но многие сталкиваются с проблемой поиска или создания подходящих пакетов установки Windows Installer (MSI).
Действительно. Для того что бы установить всем пользователям группы, например, FireFox — необходимо или собрать MSI-пакет самостоятельно (довольно подробно описано в данной статье), или скачать на соответствующем сайте подходящий. Единственное, в первом случае — на самом-то деле — задача,Читать полностью »