Рубрика «gcc» - 11

в 5:18, , рубрики: c++, gcc, метки: ,

C++ / GCC Profile-guided optimization
Profile-guided optimization (далее PGO) — техника оптимизации программы компилятором, нацеленная на увеличение производительности выполнения программы. В отличии от традиционных способов оптимизации анализирующих исключительно исходные коды, PGO использует результаты измерений тестовых запусков оптимизируемой программы для генерации оптимального кода. Тестовые запуски выявляют какие части программы исполняются чаще, а какие реже. Преимущество такого подхода в том что компилятор не строит предположений при выборе способа оптимизации, а базируется на реальных данных, собранных во время выполнения программы. Необходимо учитывать то, что тестовыеЧитать полностью »

Есть одна мощная, но малоизвестная техника — thunking. В двух словах, суть ее в следующем: во время работы программы динамически создается новая функция на основе существующей — thunk. Новая функция может иметь другой набор параметров или выполнять какие-то вычисления с параметрами, прежде чем передать их исходной функции.
Эта техника используется в оконном фреймворке ATL. Как известно, функционирование UI в Windows построено на обмене сообщениями между окнами. Окно хранит указатель на функцию обработки сообщений, которая соответствует следующему прототипу:
LRESULT WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

ATL объявляет базовый класс дляЧитать полностью »

Вдохновившись статьёй Привет из свободного от libc мира, я так же решил проделать нечто подобное. Чтобы не заниматься этим бесцельно, я решил поставить перед собой следующую задачу. Сделать программу, выводящую какую-нибудь простую строку, вроде «ELF, hello!». Разобраться с тем, как именно она будет представлена в исполняемом файле. Ну и попутно, постараться уложиться в 100 байт.
Для начала, стандартный helloworld на C++
#include
using namespace std;
int main()
{
cout << "ELF, hello!n";
return 0;
}

Компилируем, смотри размер:$ g++ test.cpp -static && ls -s -h a.out
1,3M a.out
Сколько, сколько? 1.3 Мб? Для вывода одного единственное сообщения размером в 12 байт? Хм… Ладно,Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js