В конце 2013 года вышла довольно интересная статья "Towards Optimization-Safe Systems: Analyzing the Impact of Undefined Behavior" про то как компиляторы, применяя различные агрессивные оптимизации убирают проверки безопасности. Хочу поделиться своими мыслями на этот счёт.
четверг, 1 мая 2014 г.
пятница, 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.
Подробней о проблемах с триграфами можно почитать на вики. Тут интересен вопрос "а почему вообще возникает такая проблема?". Фишка кроется в стандарте, раздел 5.1.1.2 Translation phases. Грубо говоря препроцессирование делится на 6 стадий. При этом триграфы разворачиваются на первой стадии, а комментарии удаляются только на 3-ей.
На современных компиляторах такой проблемы замечено не было.
$ 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? Этот вопрос уже давно мучает многих людей на форумах. На эту тему можно много рассуждать, рассматривая с разных сторон. Но существуют относительно объективные критерии оценки.
Подписаться на:
Сообщения (Atom)