• Какой бекэнд выбрать для компилятора?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Думали сделать фронтенд для gcc

    Можно прицепиться к libgccjit.

    хочется как-то этот проектик доделать и разместить на просторах интернета…
    Думали сделать фронтенд для gcc, но этот самый gcc опубликован под GPLv3, т.е. придется нам раскрыть исходный код IDE и самого языка, чего делать не хочется.

    Исходный код требуется раскрывать только обладателям бинарников. Если размещение на просторах интернета -- это онлайн IDE, то бинарника ни у кого нет, следовательно код раскрывать не нужно.

    Однако, предоставление исходников, особенно под свободной лицензией обычно выгодно самим проектам, которые это делают.
    Ответ написан
    Комментировать
  • Как добавить к тексту слово, после последнего совпадения через sed?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Необходимо добавить после ips_addr_1 слово ips_addr_2, нужно чтобы было совпадение по последнему слову

    sed 's/\(.*ips_addr_[0-9]\)/\1 ips_addr_2/'
    Ответ написан
    Комментировать
  • Как собрать приложение на языке программирования C++, используя CMake?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как мне организовать систему сборки, чтобы любой пользователь мог запустить приложения, имея .exe файл и папку data ( aka DATA_DIR )

    Для этого нужно научить приложение находить папку data. Сейчас ты, похоже, используешь полный путь из DATA_DIR. Возможно ты хочешь искать data относительно положения исполняемого файла. Это должно быть в логике приложения, я не вижу, как тебе может помочь система сборки, если пользователи не будут пересобирать приложение.
    Ответ написан
    4 комментария
  • Microprocesor Simulator 5v32 | Как прописать в коде управление змейкой через клавиатуру?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    этот кусочек я нашла с клавиатурой но к сожалению не работате:

    этот кусок рассчитан на PC и его контроллер клавиатуры. Наверняка в этом Microprocesor Simulator 5v32 какая-то другая схема подключения клавиатуры. Я не нашел никаких вменяемых ссылок на этот симулятор, чтобы посмотреть. Тебе прийдётся либо разобраться самой как подключена клавиатура, либо предоставить больше информации об этом.
    Ответ написан
    Комментировать
  • Как настроить внешнее прерывание Arduino?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Подскажите, сайтик с нормальным решением

    Вот пример идущий вместе с этой библиотекой, который делает то, что ты описал.
    Ответ написан
    Комментировать
  • Как добавить отдельную папку в новую ветку?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    при следующем добавлении git add client (когда уже на другую ветку переключился) ничего не происходит

    Так если ты добавил каталог со всем содержимым в одну ветку, а потом переключился на другую ветку, в которой их не было, они будут удалены из рабочей копии. Простой вариант обойти это -- скопировать каталог перед переключением веток, переключить, скопировать обратно.
    Ответ написан
    Комментировать
  • Avr-gcc почему не работает обращение к полям структуры по индексу в цикле?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    если просто вручную написать обращение по индексу, то всё работает корректно
    Почему такое может быть

    Если посмотреть в сгенерированный код (я компилировал командой
    avr-gcc -mmcu=atmega2560 -DF_CPU=8000000 -fverbose-asm -S test.c
    ), то можно увидеть, что он не обращается к массиву power_5v, а все константы просто подставлены как непосредственные значения в инструкции. Я думаю, что по этой причине.

    как это исправить

    Нужны детали: версия компилятора, опции компиляции.
    Ответ написан
    Комментировать
  • Как экспортировать экземпляр класса из DLL при LoadLibrary?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я вижу проблему в определении класса module::module. Ты хранишь экземпляры этого класса в векторе, но у него нет конструкторов копирования и операторов присваивания. А это значит, что созданный здесь временный объект module::module будет там же и разрушен с вызовом FreeLibrary и потерей актуальности всех статических указателей в модуле который был загружен. Среди которых будут указатели на таблицы виртуальных функций для классов определённых в этом модуле.
    Ответ написан
    4 комментария
  • Является ли большое использование Slab память на сервере виртуализации утечкой?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    использует много slab-памяти (90Гб), согласно выводу atop, является ли это утечкой памяти

    Не обязательно. SLAB -- это механизм динамического выделения памяти внутри ядра для объектов одинкаового размера. Можно посмотреть на распределение памяти по типам SLAB-кешей командой slabtop, чтобы примерно понять, кем эта память используется. Жизненный цикл SLAB-кешей выделенных драйвером зависит от логики этого драйвера и может быть дольше, чем, например, жизненный цикл виртуальных машин. На утечку может указывать например то, что SLABы остаются после выгрузки драйвера который их создал.
    Ответ написан
    Комментировать
  • Работа с рисованием в Qt. Почему не получается рисовать после оператора if?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Не нужно делать setChecked(false) в обработчике paintEvent, потому что paintEvent случается довольно таки асинхронно по отношению к событиям генерируемым UI.
    Ответ написан
    1 комментарий
  • Что не так вроде программа написана верно но при запуске просто экран программы без рисунка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ; инициализация библиотеки Turbo Graphics
        MOV AH, 00h
        INT 10h

    Написано "инициализация библиотеки", а выглядит как просто вызов функции прерывания int 10h BIOS set video mode. Если это и правда инициализация библиотеки, то она (библиотека) должна уже быть загружена на этот момент. Дальше ты вызываешь другие нестандартные функции этого же прерывания, в отсутствие библиотеки они делают совсем не то, что написано в комментариях.

    ; завершение работы с графикой
        MOV AH, 00h
        INT 10h

    Даже если предыдущий код что-то нарисовал, в этом месте режим экрана переключается с графического на текстовый и всё исчезает?
    Ответ написан
    2 комментария
  • Почему при подключении по ssh с ключем требует пароль?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    от чего это тогда зависит?

    Зависит от того, куда ты положил файл authorized_keys с открытым ключом. Если ты положил его в ~root/.ssh -- можешь заходить от имени root, если в ~user/.ssh -- можешь заходить от имени user.
    Ответ написан
    2 комментария
  • Почему нет ошибок, но ничего не выводит?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    struct message{
        int id;
        char* data;
    };
    …
    send(fds[i].fd, &msg, sizeof(msg), 0)

    Этот send отправляет клиенту не данные, а указатель. Указатель на данные, которых у клиента нет.

    // Add new socket to poll array
                fds[nfds].fd = new_socket;
                fds[nfds].events = POLLIN;
                nfds++;
            }
     
            // Check for data from clients
            for (int i = 1; i < nfds; i++) {
                if (fds[i].revents & POLLIN) {


    Здесь ты добавил сокет в массив дескрипторов полл и сразу проверяешь, не установлен ли у него revents. Но это поле в этот момент не инициализировано. Мало того, ты просишь ожидать POLLIN, но клиент никогда ничего не отправляет серверу, поэтому и сервер не дождавшись POLLIN никогда ничего не отправляет клиенту.

    struct pollfd fds[1];
        fds[0].fd = sock;
        fds[0].events = POLLOUT;
        if (poll(fds, 1, -1) <= 0) {
            perror("poll failed");
            exit(EXIT_FAILURE);
        }
        if (!(fds[0].revents & POLLOUT)) {
            perror("connect failed");
            exit(EXIT_FAILURE);
        }
    
        // Receive message from server
        while ((valread = read(sock, &msg, sizeof(msg))) == -1 && errno == EAGAIN);


    Здесь ты ждёшь до POLLOUT, но после этого начинаешь читать. Это малость нелогично, потому что наличие данных для чтения показывается флагом POLLIN. POLLOUT же на свежеустановленном соединении есть сразу, поэтому чтение тупо вертится в цикле while пока не прийдут данные.

    как это можно попробовать подебажить понять что не так, что происходит

    Можно тупо повставлять печать в ключевые места, что да, соединение установлено, соединение принято, полл завершился успехом, данные отправлены, данные приняты.
    Ответ написан
    Комментировать
  • Как реализовать виртуальный кеш, tlb?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как реализованы в kvm qemu virtualbox бош и другие

    В KVM -- никак, KVM использует фичу хостового процессора известную как 2-stage translation, при этом на первой стадии хостовый процессор выполняет трансляцию гостевого виртуального адреса в гостевой физический, аппаратно.

    В QEMU -- я тебе уже писал как, с деталями и ссылочками в код. Но ты вместо того чтобы задавать конкретные вопросы опять начинаешь говорить что там всё сложно и непонятно.

    Какой там алгоритм замещения(Или его там нету).

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

    void* translate(int acid, int addr){

    Похож на реализацию собственного TLB QEMU, только там нет ASID и в качестве тега используются все биты виртуального адреса кроме младших (обычно младших 12, но может быть меньше, если у эмулируемой архитектуры есть страницы меньшего размера).
    Ответ написан
    Комментировать
  • Вставку слова перед заданным словом?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    TARGET_WORD DB 'World', '$'

    Твой TARGET_WORD не заканчивается нулём, а условие успешного окончания поиска у тебя такое:

    CMP TARGET_WORD[BX], 0
    JE FOUND


    Ну и дальше тоже не всё гладко:

    LEA DI, TARGET_STRING
    ADD DI, BX

    BX в случае успеха -- это длина искомой строки, если её прибавить к TARGET_STRING, то получится какая-то фигня, если искомая строка была не в начале TARGET_STRING (как у тебя).

    CMP AL, 0
    JE AFTER_MAKE_SPACE

    И TARGET_STRING у тебя не заканчивается нулём, так что этот цикл будет работать дольше чем надо.

    STOSB

    Ты не загрузил в ES сегмент в котором лежит TARGET_STRING.

    LEA DI, INSERT_WORD
    LODSB
    MOV AH, 0
    INSERT_WORD_LOOP:
    STOSB

    У тебя здесь перепутаны местами SI и DI, ты копируешь TARGET_STRING в INSERT_WORD, а не наоборот.

    в идеале дайте исправленый код

    С этим на фриланс.
    Ответ написан
    Комментировать
  • STM32 ловит HardFault_Handler на операторе += как починить?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Вопрос номер раз: как такое вообще произошло?

    Насколько я понимаю STM32F207xx не поддерживает инструкцию uxtah, потому что это инструкция Thumb2 не реализованная в CortexM3.

    Вопрос номер два: как такое фиксить?

    Подозреваю, что ключом -march=, вероятно -march=armv6.
    Ответ написан
    1 комментарий
  • Как это можно пофиксить?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как это можно пофиксить?

    Можно внести поле SDL_RendererRenderer в структуру struct structTile.
    Ответ написан
    Комментировать
  • Какие минимальные знания С++ должны быть, чтобы начать изучать Unreal Engine 5?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что мне стоит делать дальше?

    Изучать обе параллельно.

    какие минимальные знания С++ должны быть, чтобы начать изучать Unreal Engine 5

    Понимание синтаксиса и способность читать документацию.
    Ответ написан
    Комментировать
  • Как git изменяет содержимое файла?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Он находит физическую копию или же у него есть инструкция, по которой он возвращает файл в нужное состояние с нужным содержимым при помощи хэша?

    У него есть инструкция (коммит содержит ссылку на дерево, дерево содержит имена и атрибуты файлов и ссылки на их содержимое -- хеши блобов) и он находит физическую копию с помощью хеша, поскольку git -- это простое хранилище ключ-значение. Подробности: раз, два.
    Ответ написан
    Комментировать
  • Как работает данный алгоритм проверки числа на простоту и какой у него Big O??

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как работает данный алгоритм проверки числа на простоту

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