Pull to refresh
62
0
Алексей Кутумов @prograholic

Руководитель команды разработки

Send message

Использовать значение ГИСЧ в качестве сида для ГПСЧ. Через определенное количество использований повторять такую процедуру

Часто целевая платформа содержит патченый компилятор

Я бы сказал, что наоборот, это крайне редко. Куча железок имеют только кроссы. Даже на тех же линуксах собирают кроссами, чтобы гарантированно запускаться на системах с нужной версией (g)libc

В принципе, можно сделать тулчейн не зависящий от gcc, нужно собрать compiler-rt, libunwind, libc++, libc++abi из состава llvm. Правда, это может быть довольно хлопотно для некоторых архитектур.

Gcc тулчейн хоть и неудобен, но зато собирается под гораздо более широкий набор платформ, чем полноценный clang тулчейн.

Как вариант, один раз написать или найти toolchain файл для cmake. В cmake PVS можно кучей разных способов инткгрировать

У windbg, кстати, есть .dbgdbg, но она, конечно, не спасет в вашей ситуации. Статья просто супер, спасибо!

Довольно интересно, спасибо. А почему вы не воспользовались dumpbin /disasm для получения ассемблерного кода? Если я правильно помню, то он еще и отладочные символы умеет потреблять, сами символы можно загрузить с помощью symchk

Я имею ввиду, что лучше билд систем не справится никто, а баги в любом софте есть.


Вообще я бы переформулировал свой посыл так: если уж и делать стат анализ с помощью ML, то кто это сделает лучше разработчиков текущих решений? Кто лучше вас знает теорию и практику этой области? Поэтому, хоть Андрей и написал, что мы не луддиты, но выглядит эта статья именно так, при всем уважении

Здравствуйте, статья интересная. В целом я согласен с выводами, но мне кажется что вы не совсем корректно обозначили скоуп ответственности ML в задаче анализа: например, препроцессированием должны заниматься билд системы, и это они делают довольно успешно, насколько я помню PVS тоже в конечном итоге работает с препроцессированным файлом и делает препроцессинг за него компилятор.


Построением AST тоже может заниматься не ML, к тому же уже есть готовые решения — ваш продукт, clang и пр.


Насчет обучения — можно его "легко" научить на том же гитхабе, только прогоните весь гитаре через стат анализаторы и вы получите критерии хорошего кода

Ну дык я и говорю, что можно :)

p.s. Вы правы, ваша формулировка допускает, что они могут быть :)
Мой комментарий был к предложению в статье, о том что полноценные гетерогенные контейнеры в C++ сделать нельзя. Можно! Правда реализация и недостатки не позволяют использовать это в production.

Что касается visitor, по-моему, по другому обойти гетерогенный контейнер не получится, так что в любой реализации будет visitor

Вот как можно сделать НАСТОЯЩИЕ гетерогенные контейнеры: https://gieseanw.wordpress.com/2017/05/03/a-true-heterogeneous-container-in-c/

А я и не пытался сравнивать. Просто от поддержки структурных исключений до поддержки плюсовых — пара шагов. Самое сложное то вы сделали — поиск обработчика.

Насколько я помню, плюсовые исключения можно сделать через структурные исключения, ну только там еще нужно будет функцию сделать, что-то типа _CxxThrowException
А разрешено ли подменять обработчики процессорных исключений согласно UEFI спеке?
Я понимаю, что сделать это можно, но насколько это легитимно?

На EDK-шной реализации UEFI спеки я бы еще понял, но на чистом UEFI — тут вопрос?
В целом, насколько я понял, UEFI специфики здесь нет. Скорее здесь информация о том как добавить поддержку структурных исключений для исключений процессора для PE образов, собранных компилятором MSVC.

Тоже самое в принципе, можно сделать и на BIOS окружении.

Вот кстати, ребята пошли еще дальше, и сделали поддержку плюсовых исключений в ядре Windows: правда проект скорее мертв чем жив, но посмотреть там есть на что.
А что вы хотите узнать про EFI приложение?

С точки зрения корутин, практически никаких отличий нет от того же драйвера (посмотрите на гитхабе файлы crt.cpp для драйвера и EFI приложения).

Компилятор MS начиная с VS2008 умеет собирать EFI бинарники, посмотрите проект EDK2. Файлы .vcxproj и efi.props — это по сути копия параметров сборки из EDK2, но только для MsBuild

Вообще EFI SDK — это только заголовочные файлы, хедера можно взять из того же EDK
Не знаю как вы, а я с нетерпением жду, когда Boost.Python обзаведётся приличным транслятором исключений
может быть вам попробовать самим написать такую реализацию и отправить ее в boost на ревью, мне кажется результат будет впечатляющим
К вопросу о помощи, где вы храните исходники? Если позволяет ваша лицензия, может выложите их на github, bitbucket, etc. Тогда больше вероятность, что вам помогут
Я собирал только под linux, но насколько я понял, поддерживается несколько платформ
Есть еще такая штука, как typeswitch, исходный код можно найти здесь. Правда эта библиотека делает немного другое, она позволяет осуществить диспетчеризацию по типам, вот пример использования:
int eval(const Expr& e)
{
    Match(e)
    {
        Case(const Value&  x) return x.value;
        Case(const Plus&   x) return eval(x.e1) + eval(x.e2);
        Case(const Minus&  x) return eval(x.e1) - eval(x.e2);
        Case(const Times&  y) return eval(y.e1) * eval(y.e2);
        Case(const Divide& z) return eval(z.e1) / eval(z.e2);
    }
    EndMatch
}
Или здесь

Причем сами авторы позиционируют данную библиотеку, как максимально быструю и эффективную.
> начальство было против данной замены (
Не повезло, сочувствую.

Кстати я как-то на работе нечаянно провел тест: я написал одну программу — демон, и забыл ее выключить (там тоже были sleep и все такое) и она крутилась на тестовом сервере и все про нее забыли (случайно наткнулся на нее), я посмотрел, что за несколько месяцев работы, она сожрала день процессорного времени — а это был только простой, по факту она ничего не делала. При этом висящий рядом демон ftpd сожрал не более нескольких минут процессорного времени. Меня эта ситуация в свое время очень мотивировала на обучение параллельному программированию, возможно это вам поможет

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity