Задать вопрос
  • Есть ли бесплатный аналог C++ Builder?

    @res2001
    Дмитрий X, Стоит разобрабться, потому что билдер практически никому на рынке сейчас не нужен. А Qt программисты востребованы. Просто посмотрите вакансии на хх.
    Купите книжку :)
  • Как написать многопоточность для своего ядра?

    @res2001
    Qreen, Я вовсе не считаю себя экспертом. Пришлось погрузиться в тему низкоуровневой работы с железом около 1.5 лет назад. Решал определенную задачу. Не настолько сложную, как написание ОС, но у меня ушло пол года. До этого никогда на таком уровне не работал.
  • Как написать многопоточность для своего ядра?

    @res2001
    Qreen, А оно там точно есть :)
    А кто говорил, что будет легко?
    Программировать на этом уровне довольно тяжелое и нудное занятие.
    Лично у меня больше времени уходило на изучение документации (и возможно исходников), чем на собственно программирование.
    При этом само программирование может быть достаточно тривиально, но что бы осознанно манипулировать нужными битами, нужно разобраться как устройство работает.
  • В чём отличие параметров команды mklink (/J, /D, /H)?

    @res2001
    На мой взгляд главное там в этом абзаце:
    Жёсткие ссылки действительны в пределах одного раздела, символьные — могут пересекать границы разделов. В связи с этим символьные ссылки могут поломаться, если структуру разделов поменять.

    Т.е нельзя сделать жесткую ссылку на файл в другом разделе.
  • Statements внутри списка инициализации конструктора?

    @res2001
    floppa322,
    statement, indirect - это как раз те англицизмы, переведя которые на русский одним словом, только ухудшит понимание, поэтому я бы не стал это делать

    Спорное утверждение. Вы не из штатов пишите?

    В списке инициализации вызывается конструктор obj, вы можете указывать любые параметры, которые принимает конструктор. Вызов конструктора это по сути вызов функции. Вы можете в параметрах произвольной функции написать все то, что вы пытаетесь передать в конструктор?

    То что вы предлагаете (объявление builder и прочее), можно вынести в вышестоящий код, который будет создавать экземпляр Example, и в конструктор Example передавать результат builder.build(), в списке инициализации просто передадите параметр конструктора Example в параметр конструктора obj.
  • Как написать многопоточность для своего ядра?

    @res2001
    Qreen,
    возможно ли использовать это в UEFI?

    Вообще без понятия :) В АРМах нет UEFI и вообще БИОСа как такового.
    Но по собственному опыту могу сказать, что все сторонние источники могут только как-то указать направление, за детальной информацией все равно надо идти в документацию производителя. Так что есть смысл сразу оттуда и начинать. Научитесь искать информацию на сайте интел, поймите как у них устроена документация, т.к. документов по разным частям архитектуры много.
    Например по вашей ссылке есть список регистров APIC, но для выполнения конкретных действий этого не достаточно - нужно описание каждого битового поля в регистрах, нужно понимать как вообще функционирует устройство.
    Можно еще качнуть ядро линукса и параллельно смотреть как у них там реализован данный функционал.
  • Как сортировать данные структуры по дате, если дата задаётся символьной строкой?

    @res2001
    Retr0Hacker, В каком виде у вас дата представлена во входных данных?
    Если вот прям текстом: "10 декабря 2021", то да, можете и так. В любом случае дату лучше преобразовать в числовое представление - так с ней вы можете делать любые действия, которые можно делать с датами. В текстовом представлении сделать толком ничего нельзя.
  • Как написать многопоточность для своего ядра?

    @res2001
    Qreen, Не знаю, как там у интела все устроено, не было с ними подобного опыта, больше с АРМами.
    Видимо вам надо начинать гуглить от архитектуры процессора Intel 64: https://www.intel.com/content/www/us/en/developer/...
    В описании разных частей архитектуры могут быть варианты, зависящие от конкретной модели (или поддержки процессором какой-то технологии), сверяетесь со спецификацией процессора и выбираете ваш вариант описания.
  • Как написать многопоточность для своего ядра?

    @res2001
    Qreen, Обычно начинать надо с Technical Reference Manual. Да, это документация от производителя процессора.
    Берете модель конкретного вашего процессора и ищите по нему доку.
    Например, если процессор АРМ, то начинаете с документации от производителя железки (АРМы много кто делает, кроме самого АРМа), а там будут ссылки на документацию от АРМ, а у АРМа то же целая пачка этих документов.
    С интелом проще - они сами делают свои железки, так что вся документация в одном месте.
  • Как написать многопоточность для своего ядра?

    @res2001
    Qreen, Берете мануал по процессору и начинаете его изучать.
  • Как написать многопоточность для своего ядра?

    @res2001
    У вас есть несколько ядер проца - запустите на каждом ядре какой-либо код, вот вам и многопоточность.
    Но для ОС, нужен как минимум планировщик, который сможет по таймеру на каждом ядре отдельно снимать один поток с выполнения и запускать другой.
    Структуры, описывающие потоки, надо хранить в какой-то потокобезопасной (а лучше lock-free/wait-free) очереди с приоритетами. Планировщик, снимая поток с выполнения на конкретном ядре, добавляет его в конец очереди, извлекает из очереди самый приоритетный первый поток и ставит его на выполнение на данное ядро.
  • Как скопировать файлы по дате изменения посредством bat?

    @res2001
    unk1nD000, Кстати, копировать можно с помощью xcopy, она умеет воспроизводить иерархию подкаталогов
  • Как скопировать файлы по дате изменения посредством bat?

    @res2001
    unk1nD000, Не плохо для первого раза!
    Каталоги можете сразу создавать, с перенаправлением вывода ошибок в nul. На существующие каталоги md просто ругнется.
  • Почему вылезает сообщение "make: «build» не требует обновления"?

    @res2001
    Rag’n’ Code Man, Может лучше сразу использовать более современные инструменты типа cmake или чего-то в этом роде (их сейчас много)?
    Но, конечно, базовые принципы makefile надо знать, т.к. много проектов собирается на них.
  • Трёхмерный массив с разными размерами внутренних массивов?

    @res2001
    В случае массива указателей вполне работает двойная индексация [i][j], но размеры, конечно, придется контролировать самому.
    В целом использовать вложенные вектора проще и в духе С++.
  • Какую архитектуру выбрать под линукс (AMD Ryzen 3 4300U)?

    @res2001
    Что есть какой-то выбор?
    Указав конкретный проц, вы уже выбрали архитектуру. Вопрос не актуален.

    Если вы про выбор между x86 и x86_64, то х86 на более менее современных процах (выпущенных не более 10 лет назад) не актуален, конечно, при определенных дополнительных условиях по железу (но это не ваш случай явно).
  • Почему вылезает сообщение "make: «build» не требует обновления"?

    @res2001
    Вообще, помнится, когда я последний раз использовал makefile, то цели для получения объектных файлов делал по маскам имен файлов:
    ${OBJ_DIR}/%.o: ${SOURCE_DIR}/%.c
      тут команды для компиляции

    На сколько помню такая конструкция работает, даже если исходники лежат где-то глубже в подкаталоге от ${SOURCE_DIR}. В этом случае при сборке объектников должна воспроизводится иерархия каталогов исходников. Создавать подкаталоги для объектных файлов, конечно, нужно самому, тут же до вызова компилятора.
  • Почему вылезает сообщение "make: «build» не требует обновления"?

    @res2001
    Если запускаю второй раз

    Что бы make что-то пересобрал надо изменить исходник, иначе make справедливо считает, что уже собрано, о чем вам и сообщает.
    Зачем вы вызываете в compile makeи? Можно же просто указать зависимость от другой цели (смотри ниже).
    В этом случае определение переменной OBJECTS будет не корректно, т.к. в начальном состоянии (когда сборка очищена), у вас нет ни одного объектного файла и OBJECTS будет пустой. Ее надо определять через SOURCES, заменой расширения.
    Конструкция, на сколько помню такая:
    OBJECTS = ${SOURCES: .o=.c}
    И т.к. у вас объектные файлы лежат в другом каталоге надо изменять и путь. Посмотрите описание функции ${subst}
    Что бы компилятор сразу создавал объектные файлы в нужном каталоге используйте опцию -o, тогда не нужна будет команда mv.

    Цель compile можно сделать так:
    link: build ${OBJECTS}
    команды для link
    
    compile: link
    нет тела
  • Как в C определить размер двумерного массива?

    @res2001
    Это будет длина первой размерности, для второй размерности так:
    sizeof(arr[0])/sizeof(arr[0][0])
  • Как передать массив в функцию С++ ( пишет no matching function to call)?

    @res2001
    edward_freedom, С++ - видите кресты (плюсы) после С, вот это о них речь :-)