• Как понять чего не хватает системе при сборке wine?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как понять чего конкретно не хватает

    если сообщения об ошибке в консоли недостаточно, то в каталоге, где выполнялся configure остаётся файл config.log с подробным логом действий, текстом программы, которая сгенерировала ошибку, командной строкой компилятора и его сообщением об ошибке. Можно посмотреть туда.
    Ответ написан
    Комментировать
  • Книга о последних версиях ядра Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Например, в них нет файла kernel/sched.c

    например git log -- kernel/sched.c легко объяснит, что с этм файлом случилось.

    насколько критично, что я буду изучать ядро по данной книге, т.е. по устаревшей версии ядра?

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    "11 22 22 33 33 33"
    Должно вывестись:
    "11 occurs 1 times
    22 occurs 2 times
    33 occurs 3 times"
    но "33 occurs 3 times" не выводится в консоль. В чем может быть причина?

    if (val == currVal) ++cnt;
                else 
                {
                    std::cout << currVal << " occurs " << cnt << " times " << std::endl;

    В том, что после 3го "33" по-прежнему выполняется ветка if (val == currVal) ++cnt;.
    Ответ написан
    3 комментария
  • Срываются ли вызовы функций выгрузки библиотек?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    При краше приложения вызывается ли функция выгрузки у библиотек?

    Если приложение валится от необработанного исключения, то, согласно описанию RaiseException, действие по умолчанию -- вызов ExitProcess. При завершении приложения через ExitProcess у загруженных библиотек будет вызван DllMain с кодом DLL_PROCESS_DETACH.
    Ответ написан
    Комментировать
  • Почему в VIM не работает перемещение вверх и вниз?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Перемещение по стрелками и буквам ( j k ) вниз и вверх не работает.

    в любом файле или в одном конкретном? Может быть этот файл состоит из одной единственной строки? Что о нём говорит wc -l <имя файла>?
    Ответ написан
    Комментировать
  • Как сортировать данные структуры по дате, если дата задаётся символьной строкой?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как сортировать данные структуры по дате, если дата задаётся символьной строкой?

    Строки вида yyyymmdd можно сортировать с помощью qsort сравнивая их функцией strcmp.
    Ответ написан
    Комментировать
  • Как можно игнорировать элементы строки?

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

    ты написал что-то непонятное.

    надо сравнить если символ не входит в диапазон 31h-39h, то надо идти дальше по элементу массива

    это можно сделать например так:

    metka:  
    
        mov ax,0
        mov al, StringT[si]
        sub al, 49
    
        jl next      # перейти к следующей цифре, если код текущей меньше '1'
        cmp al, 9
        jnl next     # перейти к следующей цифре, если текущая больше 9
    
        mov bl, al
        shl bl, 1 ;умножение на 2, т.к. размер адреса - 2 байта
        
        xor ax, ax
        
        mov dx, offset List[bx]
        mov ah, 09h
        int 21h
    next:
        add si, 1
        loop metka
    Ответ написан
  • Почему вылезает сообщение "make: «build» не требует обновления"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему вылезает сообщение «make: «build» не требует обновления»?

    ну и для ответа на оригинальный вопрос: потому что правило
    build: $(SOURCES)

    говорит, что каталог build зависит только от исходных файлов. Команды mv *.o ./build и rm -rf build/* делают его новее исходников, поэтому make считает, что обновлять его не надо.
    Ответ написан
    Комментировать
  • Как "распаковать" параметры из переменной в bash-скрипте?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Так происходит, потому что подстановки в bash нерекурсивные. Т.е. если результат подстановки создаёт новую конструкцию, с которой произошла бы подстановка, будь она записана в исходном тексте скрипта, bash не будет её интерпретировать. Это ограничение можно обойти с помощью функции eval, которая интерпретирует свой параметр по всем правилам bash. Т.е. пример из вопроса можно записать так:
    du -sh ~ --exclude=$(eval echo $HOME/{$excludes})
    Оборотная сторона такого решения -- $excludes становится частью скрипта, и если он контролируется извне, туда легко можно всунуть rm -rf /* как побочный эффект.
    Ответ написан
    1 комментарий
  • Как добавить лист в лист при помощи cons?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    (cons 1
       (cons
         (cons 2 (cons 3 '()))
         (cons (cons 4 (cons 5 '())) '())))
    Ответ написан
    Комментировать
  • Почему время выполнения следующих SIMD инструкций такое?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я не нашёл ничего почитать, но нашёл рекомендацию использовать llvm-mca, и для вариантов кода использующих SSE/AVX она дала мне показатели производительности которые совпали с наблюдаемыми на практике. Cоответственно, при желании можно почитать исходники llvm-mca (и добраться до модели пайплайна где-то в недрах llvm).

    Почему пятый вариант не выполняется в 4 раза быстрее, чем первый?

    Потому что скорость выполнения связана со сложностью опкодов. Так, выполнение vmulpd в пятом варианте занимает 4 такта и полностью перекрывается с остальными инструкциями цикла, так что даже нет смысла делать его короче, меняя add+cmp+jne на sub+jne.
    Ответ написан
    2 комментария
  • Как правильно вывести массив символов?

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

    программа выводит пустую строку, потому что в tmp -- пустая строка. Потому что i = strlen(str) помещает в i индекс 0-терминатора строки str, а не последнего символа перед ним. И в конце строки tmp сейчас нет 0-терминатора, так что puts(tmp) выведет мусор после перевёрнутой строки, если поправить инициализацию i.
    Ответ написан
    3 комментария
  • Как понять, почему не работает ни один браузер в linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    можно попробовать запустить firefox под strace а потом внимательно почитать лог начиная с конца в поисках ошибок доступа. Типа того: strace -fvo trace firefox
    Ответ написан
    Комментировать
  • Можно ли эмулировать Raspberry Pi 4 в Qemu?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    (чтобы не тратить время).
    Нужно для сборки приложения для RPi4 без железа. Кросскомпиляцию не осилил.

    С целью "чтобы не тратить время" лучше осилить кросс-компиляцию. Потому что производительность эмулируемого на x86 arm-устройства так себе.
    Ответ написан
    Комментировать
  • Почему при работе с бинарными файлами .exe вызвал срабатывание точки останова СИ?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Первая функция работает, а при вызове второй функции - "срабатывание точки останова" при присвоении переменной fp указателя на поток - при вызове функции fopen(). Помогите разобраться с проблемой не понимаю, где ошибка.

    Вторая функция как-то очень сильно завязана на первую: arr она не инициализирует и считает, что там достаточно места для содержимого файла. Но это всё происходит после заявленной проблемы.
    В первой функции вызовы gets читают строчки неограниченной длины в какие-то поля твоей структуры. Определения структуры ты не привёл, но мой магический шар говорит, что gets вполне может вылезти за пределы полей в которые он читает и поломать кучу. Можно попробовать заменить gets(x) на fgets(x, sizeof(x), stdin).
    Ответ написан
  • Как создать массив с ведущими нулями в Bash?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    for i in ${hr[@]}; do
    echo ${hr[i]}
    done

    Bash думает, что если число начинается с 0, то оно в восьмеричной системе счисления и числа 8 в ней нет. Что делать?

    Выбрать, что же именно у тебя лежит в массиве -- строчки или индексы. И если выбрал строчки, то не интерпретировать их тут: echo ${hr[i]} как индексы. А если выбрал индексы, то следовать правилам написания чисел.

    Я бы сделал так:
    #!/bin/bash
    
    hr=(00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23)
    
    for i in ${hr[@]}; do
    echo $i
    done
    Ответ написан
    Комментировать
  • Qemu как правильно запускать vm?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как запустить vm в молчаливом режиме, без открытия ее консоли?

    -nographic -serial none -monitor none
    есть для mipsel какие либо акселераторы, типа kvm?

    Есть, но надо понимать, что kvm требует, чтобы гостевая архитектура совпадала с хостовой, т.е. qemu для этого нужно запускать на mips-хосте.
    Ответ написан
  • Как найти длину массива?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    MaxSymb Db 9
    RealSymb Db ?
    StringT db 1 dup (' ')

    Здесь должно быть StringT db 9 dup (' '), иначе ввод затрёт то что там дальше в памяти лежит.

    я пытался и делать так mov cx, InBuff[0] , mov cx, InBuff[1] без разницы.

    Эти инструкции загружают 16-битный регистр из памяти, а значение длины -- 8-битное. Правильно было бы как-нибудь так: mov cl, [RealSymb]

    len equ $ - StringT - не выходит, тоже 1 выдаёт

    Это вообще определяет константу, значение которой равно разности текущего адреса и адреса StringT. Если это делать в твоей программе сразу следом за определением StringT, то 1 и получится, потому что длина StringT у тебя -- 1 байт.
    Ответ написан
    6 комментариев
  • С++: Ошибка потоков как исправить?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Client arr_all[numeric_limits<int>::max()];

    Это сильно, статический массив на 2 млрд индексов...

    main.cpp:(.text+0x527): перемещение обрезано по месту: R_X86_64_32 у неопределённого символа «.bss»
    main.cpp:(.text+0x536): перемещение обрезано по месту: R_X86_64_32 у неопределённого символа «.bss»

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

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    unordered_map<string, button>::const_iterator it_button;
    ...
    it_button->second.hoverReact(m, w); //проблема

    Почему second это CONST button? Почему не просто button?

    Потому что const_iterator же.
    Ответ написан
    Комментировать