• Как сделать аргументы цели в Makefile?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Логичнее всего передавать параметры цели через переменную. Типа того:
    $ cat Makefile
    CONTAINER ?= all
    restart:
            @echo 'Restarting $(CONTAINER)'
    $ make restart
    Restarting all
    $ make restart CONTAINER=web
    Restarting web
    Ответ написан
    2 комментария
  • Как распаковать архив(без сжатия) из нескольких частей, если нет места на HDD на Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как его можно разархивировать?

    Я бы сделал как-нибудь так:
    for f in backup.* ; do cat $f ; rm -f $f ; done | tar -x
    Ответ написан
    Комментировать
  • Что больше? 1073741024 или 2147483648?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    на сегодня уже хватит программирования?

    на сегодня уже хватит программирования. Речь о размере объекта (в байтах), а каждый элемент массива int наверняка занимает хотя бы 4 байта.
    Ответ написан
    Комментировать
  • Что значат эти стрелочки в книге Роберта мартина?

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    На OSDev Wiki прочитал что работать с pci невозможно из защищённого режима в котором я и "сижу".

    где именно прочитал? Прочитай внимательно ещё раз. Для взаимодействия с конфигспейсом PCI на x86 нужно использовать порты ввода/вывода 0xCF8 и 0xCFC. Через них можно настроить BARы PCI-устройства, т.е. разместить его регистры/память в физическом адресном пространстве.

    Как тогда войти в виртуальный режим?

    в какой "виртуальный" режим?
    Ответ написан
    Комментировать
  • Почему не перегружается оператор присваивания (программа даже не работает)?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert

    Ошибка LNK2019 ссылка на неразрешенный внешний символ "public: __thiscall cd::cd(void)" (??0cd@@QAE@XZ)

    говорит о том, что не найдена реализация конструктор класса cd без параметров.
    Ответ написан
    Комментировать
  • Как через sed awk удалить # в 50 и 54 строках?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    sed "s/#listen_addresses = 'localhost'/listen_addresses = 'желаемый адрес'/;s/#port = 5432/port = желаемый_порт/"
    Ответ написан
    Комментировать
  • Почему ядро паникует?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему ядро паникует

    непосредственная причина: сдох init (attempted to kill init в первой строчке), из-за сигнала (do_signal в стеке вызовов).

    Упавший код:
    $ echo 'Code: 0f 7f 44 17 f0 f3 0f 7f 07 c3 48 83 fa 40 77 16 f3 0f 7f 07 f3 0f 7f 47 10 f3 0f 7f 44 17 f0 f3 0f 7f 44 17 e0 c3 48 8d 4f 40 <f3> 0f 7f 07 48 83 e1 c0 f3 0f 7f 44 17 f0 f3 0f 7f 47 10 f3 0f 7f' | scripts/decodecode
    Code: 0f 7f 44 17 f0 f3 0f 7f 07 c3 48 83 fa 40 77 16 f3 0f 7f 07 f3 0f 7f 47 10 f3 0f 7f 44 17 f0 f3 0f 7f 44 17 e0 c3 48 8d 4f 40 <f3> 0f 7f 07 48 83 e1 c0 f3 0f 7f 44 17 f0 f3 0f 7f 47 10 f3 0f 7f
    All code
    ========
       0:   0f 7f 44 17 f0          movq   %mm0,-0x10(%rdi,%rdx,1)
       5:   f3 0f 7f 07             movdqu %xmm0,(%rdi)
       9:   c3                      retq   
       a:   48 83 fa 40             cmp    $0x40,%rdx
       e:   77 16                   ja     0x26
      10:   f3 0f 7f 07             movdqu %xmm0,(%rdi)
      14:   f3 0f 7f 47 10          movdqu %xmm0,0x10(%rdi)
      19:   f3 0f 7f 44 17 f0       movdqu %xmm0,-0x10(%rdi,%rdx,1)
      1f:   f3 0f 7f 44 17 e0       movdqu %xmm0,-0x20(%rdi,%rdx,1)
      25:   c3                      retq   
      26:   48 8d 4f 40             lea    0x40(%rdi),%rcx
      2a:*  f3 0f 7f 07             movdqu %xmm0,(%rdi)             <-- trapping instruction
      2e:   48 83 e1 c0             and    $0xffffffffffffffc0,%rcx
      32:   f3 0f 7f 44 17 f0       movdqu %xmm0,-0x10(%rdi,%rdx,1)
      38:   f3 0f 7f 47 10          movdqu %xmm0,0x10(%rdi)
      3d:   f3                      repz
      3e:   0f                      .byte 0xf
      3f:   7f                      .byte 0x7f
    
    Code starting with the faulting instruction
    ===========================================
       0:   f3 0f 7f 07             movdqu %xmm0,(%rdi)
       4:   48 83 e1 c0             and    $0xffffffffffffffc0,%rcx
       8:   f3 0f 7f 44 17 f0       movdqu %xmm0,-0x10(%rdi,%rdx,1)
       e:   f3 0f 7f 47 10          movdqu %xmm0,0x10(%rdi)
      13:   f3                      repz
      14:   0f                      .byte 0xf
      15:   7f                      .byte 0x7f

    судя по всему это какая-то часть memcpy или функции типа того.
    Возможные причины, в порядке, кажущемся мне наиболее вероятным: баг в init либо дырявая память.
    Ответ написан
    Комментировать
  • Nasm - почему не загружается более одного сектора диска?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Загрузчик нормально работает при загрузке 1 сектора

    Вот я собрал твой загрузчик, записал его в бут-сектор, добил двумя секторами мусора и загрузил с такого диска qemu. Выглядит так, будто бы всё работает:
    $ nasm test.s -o test
    $ head -c 2b /dev/urandom >> test
    $ hexdump -Cv test | tail -n2
    000005f0  49 93 ad 56 25 97 25 82  61 1d d9 a1 66 2a cb 19  |I..V%.%.a...f*..|
    00000600
    $ qemu-system-i386 -hda test -gdb tcp::1235 -S

    В другом терминале, см этот ответ на вопрос "как в gdb посмотреть 16-битный код выполняющийся в qemu":
    $ wget https://gist.githubusercontent.com/MatanShahar/1441433e19637cf1bb46b1aa38a90815/raw/2687fb5daf60cf6aa8435efc8450d89f1ccf2205/target.xml


    Далее в том же терминале:
    $ gdb
    (gdb) set tdesc filename target.xml
    warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
    of GDB.  Attempting to continue with the default i8086 settings.
    
    (gdb) target remote :1235
    (gdb) set disassembly-flavor intel
    (gdb) b *0x7c32
    Breakpoint 2 at 0x7c32
    (gdb) c
    Continuing.
    
    Breakpoint 2, 0x00007c32 in ?? ()
    (gdb) x/2i $pc
    => 0x7c32:      int    0x13
       0x7c34:      jb     0x7c3e

    -- тут я остановился прямо перед командой чтения. Дальше:
    (gdb) tb *0x7c34
    Temporary breakpoint 3 at 0x7c34
    (gdb) c
    Continuing.
    
    Temporary breakpoint 3, 0x00007c34 in ?? ()
    (gdb) x/16x 0x13f0
    0x13f0: 0x49    0x93    0xad    0x56    0x25    0x97    0x25    0x82
    0x13f8: 0x61    0x1d    0xd9    0xa1    0x66    0x2a    0xcb    0x19

    прочитанные байты по адресу куда должен был попасть конец второго сектора совпадают со случайными данными которые я записал в конец образа диска.

    Ну и на экране всё мило, надпись "Loading kernel...." выводится, надпись "Kernel.bin not found!" не выводится.

    Но вообще, если начать придираться, то в процедуре read_sector не инициализирован dl, так что неизвестно, с какого именно устройства происходит попытка чтения в твоём неработающем случае. Можно добавить mov dl, 80h для выбора первого ЖД, для определённости.
    Ответ написан
    Комментировать
  • No match for 'operator=' c++ ошибка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    massiv operator=(massiv &w)

    должно быть
    massiv& operator=(const massiv &w)
    const в параметрах -- важен.
    Ответ написан
    Комментировать
  • AT&T синтаксис доступен только GNU Assembler-y (gas)?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как я понял GAS нельзя установить на Windows.

    Понял неправильно. Он есть и в составе mingw и в составе cygwin и несложно его кросс-компилировать под венду самому.
    Ответ написан
    Комментировать
  • Cannot rewrite branches: You have unstaged changes. Git. Как исправить??

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    You have unstaged changes.

    Закоммитить, внести в stash или удалить несохранённые изменения.
    Ответ написан
    5 комментариев
  • Что нужно и на каком уровне знать в математике чтобы читать Дональда Кнута?

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

    ну так следи за изложением и углубляйся в соответствующую математику когда становится непонятно, а не листай страницы просто так.
    Ответ написан
    Комментировать
  • Откуда берется "OK" в виртуальном терминале?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    откуда взялся тот OK?

    пришёл от модема, в ответ на AT-команду.
    Ответ написан
  • Как продолжить выполнение кода, не дожидаясь завершения потока?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    типа того:
    #include <iostream>
    #include <thread>
    #include <vector>;
    
    using namespace std;
    
    void go(int p) {
      while (1) {
        cout << p << endl;
      }
    }
    
    void main() {
      thread *t[3];
    
      for (int i = 0; i <= 2; i++) {
        t[i] = new thread(go, i);
        cout << 123;
      }
      for (int i = 0; i <= 2; i++) {
        t[i]->join();
        delete t[i];
      }
    }
    Ответ написан
    Комментировать
  • Почему программа крашится, когда использую map?

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

    в чём угодно. Никакой полезной информации для её диагностирования в твоём вопросе не содержится.
    Минимально полезным был бы стектрейс крэша.
    Ответ написан
    Комментировать
  • Как вызвать из C++ программы функции на ассемблере?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как вызвать из C++ программы функции на ассемблере?

    extern "C" void number1();
    …
    int main()
    {
    number1();
    }

    Именно так.
    Ответ написан
    Комментировать
  • [SOLVED] Makefile + чтение значения переменной из консоли + dch - как это сделать?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    dch -v $$VERSION
    должно работать.
    Потому что
    export VERSION=$(shell read -p "Version: ";echo $$REPLY)
    экспортирует переменную внутри shell, а $(VERSION) ссылается на переменную make а не на переменную shell.

    Как вариант, подойдет `make dchv 1.3.4` , но научить makefile такое делать - лютый геморрой :(

    не нужно этого делать, потому что это "против шерсти". Правильнее было бы сделать так: make dchv VERSION=1.3.4 и выкинуть код по вводу переменной VERSION из правила dchv, т.е. оставить только dch -v $(VERSION)
    Ответ написан
    2 комментария
  • Какой тип данных используется для чисел с фиксированной запятой на C?

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

    Нет такого стандартизированного типа данных.

    мне нужно провести вычисления с фиксированной запятой

    Логичнее всего использовать какой-нибудь целочисленный тип.
    Ответ написан
    2 комментария
  • Как решить проблему с преобразованием переменной?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    error C2664: "int system(const char *)": невозможно преобразовать аргумент 1 из "std::basic_string,std::allocator>" в "const char *"
    как можно исправить этот баг

    system((zi + path).c_str());
    Ответ написан
    Комментировать