• У нас длинные руки: 7 зарубежных площадок, на которых можно найти удалённую работу
    0

    На хабре уже есть такие статьи, вот например: https://habr.com/post/132432, и да нужно все что перечислили, хотя и некоторые перечисляют в битках, сам уже два года так работаю.И работают очень даже охотно, если вы хороший спец и можете решить их задачи.

  • C/C++. Способ разбора командной строки
    0

    Может быть уже и не надо, тоже была задача код с Java в С++ CLI перекодить, тоже думал про boost (т.к. нужен был cross-paltform) или велосипед. В итоге не хотелось из-за этой не большой таски boost тащить и сделал велосипед :), т.к. хотелось полегче и попроще все-таки. Парсит вроде всё, опции, параметры, подкоманды, вот исходники, если еще интересно можете посмотреть, поюзать: https://github.com/gera-gas/ApplicationHelpers/tree/master/Source/CmdLine

  • Работа с commons-cli 1.2
    0

    Не знаю актуально ли еще :). Есть в boost как написал 'kzn', под nix getopt, Ну вот и мой вариант, парсит (вроде :)) все, опции, параметры, подкоманды: https://github.com/gera-gas/ApplicationHelpers/tree/master/Source/CmdLine

  • Как запустить программу без операционной системы
    0

    В 64К только ранняя. Самое сложное из RAM stage проворачивается, инициализация, нумерация, назначение ресурсов всех деавайсов, + ROM всякие запускаются, например для видюхи и драйвера для Ethernet, чтобы WAN обеспечивать, т.е. кода там очень даже прилично)

  • Как запустить программу без операционной системы
    0

    у winbond на чипсет AMD760g боис 2 мегабайта идет.

  • Как запустить программу без операционной системы
    0

    На многоядерных процах читается бит из MSR регистров, и то ядро, которое является загрузочным, получит бит BSP установленным в 1, остальные ядра в ноль.

  • Как запустить программу без операционной системы
    0

    Да, первые инструкции исполняются из микросхема биоса, но только если не ошибаюсь первые 64 К, дальше уже проключается через регистры южного моста, сколько нужно мэпить, т.к. размер микросхем биоса разный.


    Потом (уже в относительно современных процах) используется кэш 2-го уровня как память, т.к. его можно проключить в режим сквозной записи и все что пишется в память (которой пока нет) будет отражено в кэш.


    Ну а потом проключается RAM, делается её POST и дальше все из RAM.
    Это очень кратко, на самом деле все куда сложнее)

  • Как узнать какие цветы дарить девушке, если у нее двигается только голова и она не может говорить?
    +3

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


    Что очень радует, это то, что Вы высоко социальный человек. Несмотря на все имеющийся трудности Вы не просто готовы их устранять, а главное главное помочь остальным избавиться от них.


    Ваша статься мне дала серьезный повод к переоценке взгляда на жизнь.
    Так уж сложилось, что у меня с детства очень хорошая память и я помню себя с 2-х лет,
    и пока я читал Вашу статью, я вспомнил как в детстве я не мог нарадоваться возможности побеситься.
    Мне казалось что в мире просто не существует ничего совершенней, чем мое тело, и это просто высшая инженерия, говоря современными словами. Но прошло время и эти воспоминания отошли на задний план, а на передний пришли материальные ценности и т.п.


    Так что спасибо Вам за статью, после прочтения которой я вспомнил, кто я есть.


    А для решения технической составляющей проблемы, которую Вы здесь изложили, я думаю нужен системный подход., Нужно расписать задачу в целом: составляющие, необходимые для его реализации (какое железо, софтовые задачи и т.п), и конечно уже готовые реализации в OpenSource.


    Если я как разработчик ПО для встраиваемых систем могу Вам чем-то помочь, пишите мне на email: gera_box@mail.ru

  • Руководство новичка по эксплуатации компоновщика
    +2

    Хорошая статься. Автор молодец, я прочитал с удовольствием.


    Еще одно исправление: LD_LIBARRY_PATH наверно имелось ввиду LD_LIBRARY_PATH
    По загрузке кода немного дополню, если не возражаете на примере powerpc архитектуры,
    инструментарий GNU:


    файлик crt0.S который пришлёпывается к программе для начальной инициализации
    имеет код для зачистки .bss, sbss и т.п., а для того-чтобы секция не загружалась,
    надо в атрибутах выставлять (NOLOAD), загрузчик это видит и пропускает её,
    если например вы добавили свои секции и не хотите чтобы они загружались.


            /*  clean sbss section */
        lis     5,  .LCTOC1@h
        ori     5,  5,  .LCTOC1@l
    
        lwz     6,  .lsbss_start(5)
        lwz     7,  .lsbss_end(5)
    
        cmplw       6,  7
        beq mk_clean_bss

    а потом в .init пробегает по секции .ctors, где хранятся адреса
    глобальных конструкторов:


    static fptr_t ctors_list[1] __attribute__((section(".ctors.begin"), __used__)) = { (fptr_t) -1 };
    static fptr_t ctors_end[1]  __attribute__((section(".ctors.end"),   __used__)) = { (fptr_t)  0 };
    
    void __do_global_ctors_aux ( void )
    {
        fptr_t  *fp;
    
        for( fp = ctors_list + 1; *fp != 0; fp++ )
            (**fp)( );
    }

    ну и еще конечно функция __gxx_personality для компоновки исключений в секцию .eh_frame
    А при адресации в .so, насколько я помню используется секция .got (Global Offset Table), было бы
    неплохо если бы вы еще статью по этому поводу написали, было бы интересно её прочесть.


    Успехов!

  • Легковесный конструктор парсеров с интерактивным режимом
    0
    В названии хотелось как-то отразить, что парсер разрабатывался не для промышленных масштабов. Спасибо, учту.