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

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

    Это описание верно только для прерывания срабатывающего по фронту сигнала. Прерывание срабатывающее по уровню сигнала нигде не запоминается. Вне зависимости от того, было ли оно запрошено в то время, пока оно было запрещено, если оно не запрошено в момент разрешения прерывания -- прерывания не случится.

    Верно ли я понимаю, что микроконтроллер запоминает факт прерывания

    Верно для прерываний срабатывающих по фронту. Неверно для прерываний срабатывающих по уровню.

    не может этот флаг скинуть, пока как раз таки я снова не подключу прерывание и он тут же радостно мне его передает?

    Неверно в общем случае. Флаги запроса прерывания могут быть доступны через регистры, иногда эти регистры можно программно очищать.

    Возможно ли как-то переопределить данное поведение?

    У некоторых прерываний можно настроить, срабатывают они по уровню или по фронту. Например, у Atmel можно настроить как детектируются внешние прерывания INT0 и INT1 -- регистром EICRA.

    Или скинуть каким-то другим способом этот флаг?

    Опять же, на Atmel флаги внешних прерываний лежат в R/W регистре EIFR, в нужные биты которого можно записать 0, чтобы очистить запомненный запрос прерывания.
    Ответ написан
    2 комментария
  • Как скопировать несколько строк в режиме командной строки в vim?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я вызываю режим командной строки через shift : и пишу
    3,8yanka
    то есть, скопировать строки с 3 по 8 в регистре а, можно и без а.

    Я делаю то же самое в vim, добавив пробел между yank и a -- и всё работает. Вывод: проблема в vscode.
    Ответ написан
    Комментировать
  • Почему скрипт написанный на Bash отказывается работать?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Добрый вечер, написал скрипт на bash для авто-установки.

    #!/bin/sh

    /bin/sh может и не быть bash'ем.

    Не пойму почему он отказывается работать.

    Скрипты можно отлаживать: #!/bin/bash -ex
    Ответ написан
  • Почему в Alpine Linux невозможно ничего написать в консоли?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В чем может быть дело?

    Похоже на не-английскую раскладку клавиатуры.
    Ответ написан
    1 комментарий
  • Оцените код. Как можно заменить goto?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    while (size <=0)//проверка ввода
            goto check;//в случае неудачи, переход по метке check на 40 строку

    это
    if (size <= 0)
        break;


    goto mark;

    это просто continue; в первом случае и просто ничего во втором.
    Ответ написан
    Комментировать
  • Почему нельзя скомпилированную программу запустить на другой ОС?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему нельзя скомпилированную программу запустить на другой ОС?

    Учитывая что WINE и DOSBOX уже 300 лет в обед и windows subsystem for linux появился не вчера, вопрос, мягко говоря, странный. Можно запустить, если в "другой ОС" есть поддержка совместимости с ОС, для которой программа скомпилирована.
    Ответ написан
    2 комментария
  • Что делать если данные при передаче через сокеты сливаются?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что делать если данные при передаче через сокеты сливаются?

    При работе с потоковыми протоколами так и должно быть. Если приложение работает с сообщениями -- приложение должно само организовать себе фрейминг в потоке данных.

    Recieve

    receive
    Ответ написан
  • Возможно ли дехеширование при определенных условиях?

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

    Можно, если хеш биективный. Но для хорошего алгоритма хеширования нет возможности сделать это существенно быстрее перебора всех возможных значений h1.
    Ответ написан
    Комментировать
  • Почему асимметричное шифрование слабее симметричного?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    При одинаковой длине ключей, симметричных и асимметричных, криптостойкость алгоритмов разная. И криптостойкость симметричных выше. Асимметричных ниже. ...

    Как это объяснить?

    Это объясняется тем, что у симметричных и асимметричных алгоритмов разная природа.
    Симметричные (например AES) используют ключ для генерации преобразования входного блока в выходной. Количество бит в ключе напрямую определяет размер пространства преобразований -- 128-битный ключ даёт 2128 возможных значений выходного блока для каждого входного.
    Асимметричные используют ключ по-разному, поэтому нужно рассматривать конкретный алгоритм. RSA использует биты ключа для хранения произведения двух простых чисел. 128-битный ключ даёт 64-битные простые числа. Факторизация 128-битного числа не требует перебора 2128 вариантов и занимает на обычном современном железе порядка секунды.
    Ответ написан
    Комментировать
  • Как верифицировать ALPINE LINUX 3.9?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Но при проверки им
    gpg --verify ncopa.asc alpine-standard-3.9.0-x86_64.iso.sha256
    пишет что gpg: verify signatures failed: Неожиданная ошибка.


    alpine-standard-3.9.0-x86_64.iso.sha256 -- это просто sha256 от iso, там нет подписи. Подпись должна быть в файле с расширением .asc за кнопкой "GPG", но там 404.
    Судя по содержимому dl-cdn.alpinelinux.org/alpine/v3.9/releases/x86_64 подписи всё-таки есть для некоторых .iso
    Ответ написан
    3 комментария
  • Какую формулу комбинаторики использовать?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Посчитать количество нулей и единиц в исходном числе. Пусть это будут N0 и N1.
    Если нули не могут стоять спереди, значит спереди может стоять только единица. Если N1 > 0, уменьшить N1 на 1, иначе нет решений.
    Теперь нужно упорядочить N0 нулей и N1 - 1 единицу всеми возможными способами. Их будет (N0 + N1 - 1)!. Но поскольку все нули и все единицы одинаковы, то разных комбинаций будет в N0! * (N1 - 1)! раз меньше, (N0 + N1 - 1)! / (N0! * (N1 - 1)!). Это -- перестановки с повторениями. Для числа 100101 результат 10:
    100011, 100101, 100110, 101001, 101010, 101100, 110001, 110010, 110100, 111000.
    Ответ написан
    Комментировать
  • Обращение к обьекту через указатель?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    objaddr = objects + (sizeof(Object)*n);

    sizeof(Object) * не нужен, это не ассемблер.
    Ответ написан
    Комментировать
  • Как исправить ошибку Debag Error?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Мыслей нет, что делать не знаю

    нажать на "Прервать" и смотреть в отладчике, где этот abort(), почему он там и как программа туда попала.
    Ответ написан
    Комментировать
  • Почему не меняется адрес функции в разделе импорта?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    в чем может быть загвоздка

    Твой код вообще вызывается? Отрабатывает без ошибок? Или где первая ошибка?

    CreateProcessW

    Почему ты ожидаешь, что все сознательные и используют W, а не A?
    Ответ написан
  • Как передать аргументы в асм код и запустить его в другом процессе?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как лучше всего это сделать?

    Записать аргументы в память вместе с кодом, загрузить их из памяти в новом процессе по известному смещению от кода.
    Ответ написан
    4 комментария
  • Почему не срабатывает прерывание int 1ah?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ;1 вариант
    mov ah,02h
    int 1Ah
    inc cl
    mov ah,06h
    int 1Ah;


    Мы получаем текущее время, прибавляем к минутам единицу и настраиваем будильник (случаи, когда 59 минут можно не рассматривать)

    Время из int 1Ah возвращается в BCD. Чтобы увеличить счётчик минут на 1 inc cl недостаточно, нужно mov al, cl ; inc al ; daa ; mov cl, al.
    Ответ написан
    3 комментария
  • Как компилировать/установить модуль autosleep.c на debian?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В общем вопрос простой, как установить этот модуль в ядро без затрат здоровья!? Может кто то ставил? Может я что то явно делаю не так?

    Ты определённо что-то делаешь не так. Начиная с того, что autosleep -- это не модуль:

    $ grep -A1 PM_AUTOSLEEP kernel/power/Kconfig
    config PM_AUTOSLEEP
            bool "Opportunistic sleep"


    У модуля тип был бы не bool а tristate.
    Всё что ты можешь сделать -- это собрать новое ядро с этой опцией.
    Ответ написан
    Комментировать
  • Кто нибудь использовал технологию "autosleep" | "Opportunistic sleep"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    А RTFM -- не модно уже?:
    What:		/sys/power/autosleep
    Date:		April 2012
    Contact:	Rafael J. Wysocki <rjw@rjwysocki.net>
    Description:
    		The /sys/power/autosleep file can be written one of the strings
    		returned by reads from /sys/power/state.  If that happens, a
    		work item attempting to trigger a transition of the system to
    		the sleep state represented by that string is queued up.  This
    		attempt will only succeed if there are no active wakeup sources
    		in the system at that time.  After every execution, regardless
    		of whether or not the attempt to put the system to sleep has
    		succeeded, the work item requeues itself until user space
    		writes "off" to /sys/power/autosleep.


    Что у тебя в /sys/power/state?

    в файле /sys/power/autosleep -стоит "off", файл не редактируется

    Как редактируешь?
    Ответ написан
    7 комментариев
  • Почему ожидание завершения потока называется join?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему ожидание завершения потока называется join?

    Eсли бы слово fork не было уже занято, создание потока назвали бы fork. fork/join -- прекрасная пара.

    так сделано во всех языках программирования

    Чрезмерное обобщение -- источник абсолютно всех бед.
    Так сделано в языках ориентирующихся на POSIX, потому что в POSIX ожидание завершения потока -- это pthread_join. А в других языках сделано по-другому.
    Ответ написан
    1 комментарий
  • Создал класс в чистом проекте С++, но при попытке выделить память под него в main ловлю неразрешенный внешний символ. Почему?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    cpp файл
    template <typename T>
    Tree<T>::Tree()
    {
    }

    Как по-твоему компилятор во время компиляции этого cpp файла узнает, что ты захочешь работать с Tree<int> в каком-то другом файле?
    Только если ты в этой же единице трансляции сделаешь явное инстанцирование нужных тебе типов. Иначе объектный файл, получившийся в результате копиляции этого cpp файла будет (почти) пустым.

    Если переношу реализацию конструктора и деструктора в заголовок - все работает.

    ...и это -- типовое решение этой проблемы.
    Ответ написан
    2 комментария