Рубрика «компиляция» - 4

Компилируем код из кода для воспроизведения гонки двух процессовКласс CSharpCodeProvider позволяет программе на C# компилировать код на C#. Обычный вопрос – «зачем». Обычные ответы:

  1. исполнение кода, данного пользователями, как на ideone.com,
  2. «ну мало ли зачем» и
  3. «а это уже отдельный вопрос»

Сегодня мы используем этот класс для удобного воспроизведения гонки двух процессов.
Читать полностью »

Одним холодным майским днем от скуки решил я таки приступить к изучению этого удивительного языка — Brainfuck'a.
Его интерпретаторы публиковали на Хабре уже очень много раз.
Но мне хотолось изучить поглубже сам язык и алгоритмы на нем, а не писать очередной интерпретатор. Поэтому было решено сделать из мухи слона компилятор какого-нибудь высокоуровневого языка в brainfuck.
Однако очень быстро начался реальный brainfuck: отсутствие оператора if, отсутствие произвольного доступа к ячейкам и куча других проблем сразу свалилась на меня. Пришлось повременить с высокоуровневым языком и сделать для начала ассемблер, в который и будет компилироваться высокоуровневый язык.
О реализации ассемблера под катом.
Читать полностью »

Шведский студент Джестер Огвист (Jesper Öqvist) получил в универе домашнее задание: написать самую маленькую программу C, которая вылетает с ошибкой (segfault). Обычно студенты в таких ситуациях используют деление на ноль.

int main()
{
    return 1/0;
}

Из этого кода ещё можно удалить пару байтов, если вместо инструкции использовать присвоение значения переменной.

int main()
{
    i=1/0;
}

Читать полностью »

Это перевод статьи «How to trick C/C++ compilers into generating terrible code?», автор оригинала — Aater Suleman.

На курсе архитектуры ЭВМ мне сказали, что процессор похож на машину. Руль и педали — это ISA, двигатель — микроархитектура, а программа — водитель. Продолжая эту аналогию, скажу, что использование компьютера похоже на управление машиной через пульт дистанционного управления. Пульт — это клёвая вещь, но в то же время важно понимать, как он работает. Даже в профессиональном ПО я видел много примеров кода, который может смутить даже самый умный компилятор. В этой статье я расскажу об основных методах запутывания компиляторов.

Читать полностью »

Иногда при компиляции программы из исходников и применение команды make или make install появляются сообщение типа: ''Нет правила для сборки цели `install'. Останов.''
Предлагаю изящное решение не раз помогавшее мне.
Читать полностью »

Внимание(!) Эта инструкция не позволит создать вам сразу полнофункциональную прошивку, но даст вам возможность начать работать над ней.
Примечание: исходники занимают примерно 6 Гб. Вам нужно около 25 ГБ свободного места чтобы скомпилировать 1 билд и до 80 Гб (или больше) для полного комплекта сборки.

Перед началом компиляции Jelly Bean на Ubuntu необходимо пройти несколько шагов по настройке компьютера, чтобы получить готовый инструмент.
Читать полностью »

Linux для всех / -O2 глоток свежего воздуха
Технический прогресс достиг по истине не бывалых высот. Еще совсем не давно мы задумывались о мегагерцах, а сегодня многоядерные системы уже нас не удивляют. Этот ошеломительный рост позволил совершить скачок современным компьютерным технологиям: абстракций становится больше; языки все больше интерпретируются нежели компилируются. Все подчинено принципу написано однажды — работает всегда и везде.
Мое увлечение программированием на С++ подсказывает, что если программу настроить (заточить) под конкретное оборудование, то и работать она будет быстрее. А между тем большинство Linux дистрибутивов по прежнему собирается под i386Читать полностью »


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