четверг, 1 мая 2014 г.

Про оптимизации, безопасность и "нормальные языки".

В конце 2013 года вышла довольно интересная статья "Towards Optimization-Safe Systems: Analyzing the Impact of Undefined Behavior" про то как компиляторы, применяя различные агрессивные оптимизации убирают проверки безопасности. Хочу поделиться своими мыслями на этот счёт.

пятница, 28 марта 2014 г.

Эльбрусы. Новые и не очень.

Недавно сгонял на выставку "Новая электроника - 2014", где меня целенаправленно интересовал стенд МЦСТ. Особенностью этого стенда было то, что на нём представлен новый процессор "Эльбрус-4С". Он нём и ещё о паре забавных железок расскажу под катом.

суббота, 21 декабря 2013 г.

Шпаргалка по сборке gcc

Оставлю тут шпаргалку по сборке gcc из транка:

$ # скачаем исходники
$ svn checkout svn://gcc.gnu.org/svn/gcc/trunk gcc
$ cd gcc
$ # соберём компилятор
$ mkdir obj bin
$ cd obj
$ ../configure
$ make -j2
$ make DESTDIR=/anywhere/gcc/bin/ install
$ # а теперь пересоберём его самим собой, но с уже интересующими нас опциями
$ make clean
$ rm * -rf
$ ../configure CC="
/anywhere/gcc/bin/usr/local/bin/gcc" CXX="/anywhere/gcc/bin/usr/local/bin/g++" CFLAGS="$CFLAGS -O3" CXXFLAGS="$CXXFLAGS -O3" LIBS="-L/anywhere/gcc/bin/usr/local/libs $LIBS"
$ make -j2
$ make DESTDIR=
/anywhere/gcc/bin_opt/ install

понедельник, 18 ноября 2013 г.

Установка Gentoo на шифрованный раздел

Решил поэкспериментировать с шифрованием разделов в gentoo. Т.к. не нашлось готовых мануалов, по которым бы всё сразу завелось пришлось долго гуглить и ходить по граблям. В посте будет полное описание данного процесса. Нет, не неуклюжего хождения по граблям, а готового решения, которое сработало на моём ноутбуке.

пятница, 1 ноября 2013 г.

Ошибка в комментарии

На старых фронтэндах был простой способ получить ошибку в плохо написанном комментарии. Связано это с триграфами. Сам столкнулся с такой на старой версии edg - фронтэнда, который используется в компиляторе intel.

$ cat test.c

/**
 * ??!
 */

int main(){}


$ lcc_i test.c
lcc: "test.c", line 2: error: support for trigraphs is disabled
          [-Werror=trigraphs]
   * ??!
     ^

1 error detected in the compilation of "test.c".


Подробней о проблемах с триграфами можно почитать на вики. Тут интересен вопрос "а почему вообще возникает такая проблема?". Фишка кроется в стандарте, раздел 5.1.1.2 Translation phases. Грубо говоря препроцессирование делится на 6 стадий. При этом триграфы разворачиваются на первой стадии, а комментарии удаляются только на 3-ей.

На современных компиляторах такой проблемы замечено не было.

воскресенье, 6 октября 2013 г.

Если octave при запуске выдаёт такое:
On entry to octave parameter number 13 had an illegal value
то скорей всего он был собран с ключом -ffast-math. Эта опция допольно деструктивная, включается только руками или по -Ofast. Придётся для конкретно этого пакета (у меня он называется sci-mathematics/octave) включать -fno-fast-math.

вторник, 1 октября 2013 г.

LLVM vs. GCC

Кто круче Шварценеггер или Сталлоне GCC или LLVM? Этот вопрос уже давно мучает многих людей на форумах. На эту тему можно много рассуждать, рассматривая с разных сторон. Но существуют относительно объективные критерии оценки.