Задать вопрос
Ответы пользователя по тегу Программирование
  • Почему i? Почему переменную, используемую в циклах, обычно называют именно i?

    15432
    @15432
    Системный программист ^_^
    Пошло из математики (Xi, Yj), продолжилось в Фортране (начиная с имени i переменные по умолчанию интовые были), потом все как-то привыкли
    Ответ написан
    Комментировать
  • Подключение мышки к FPGA плате DE2-115?

    15432
    @15432
    Системный программист ^_^
    Ну что ж, если задача стоит именно так, то:

    1. Сделать проект с софт-процом NIOS-II
    2. Добавить в него драйвер CY7C67200 для работы с USB устройствами
    3. Добавить USB стек (инициализация устройств, работа с эндпоинтами)
    3. Добавить драйвер HID (парсинг дескрипторов, определение что за устройство подключили)
    4. Добавить драйвер мыши (с колбэками на нажатие кнопок и передвижение)
    5. Написать небольшую программку и скомпилить под NIOS-II для реакции на мышиные кнопки
    6. Соединить это всё в один проект и залить в ПЛИСину

    Где это всё взять - хз, может есть готовые примеры. Несмотря на то, что звучит просто, каждый из пунктов может занять дни, недели, месяцы. С мышью PS/2 всё сильно проще, поэтому уточнил в комменте.
    Ответ написан
    2 комментария
  • Что именно дают миллиарды транзисторов в процессоре для работы программы?

    15432
    @15432
    Системный программист ^_^
    1) Больше фич. Всякие AVX, MMX, а также умная конвейеризация, Hyper-Threading, спекулятивное исполнение, предсказание веток - при правильном применении сильно ускоряет вычисление
    2) Больше ядер. В один кристалл всё больше процессорных ядер запихивают, можно распараллелить задачи, тоже получим прирост в скорости работы
    3) Больше кэш-памяти. Та самая SRAM, которая входит в процессор и тоже состоит из транзисторов. Сильно ускоряет работу с памятью и задержки выполнения инструкций
    4) Больше контроллеров. В процы сейчас встраивают всё, что попало - шины данных, контроллер DRAM, PCIE, северный мост, отдельное ядро сопроцессора (Intel ME, AMD PSP), GPU и даже NPU где-то добавляют. Тоже считается за "больше транзисторов".
    Ответ написан
    4 комментария
  • Можно ли повредить ОЗУ программой?

    15432
    @15432
    Системный программист ^_^
    Программой, запущенной с правами администратора, можно:
    - убить жёсткий диск/ssd (стерев его прошивку)
    - убить процессор (выставив слишком высокое напряжение питания)
    - вывести из строя видеокарту (стерев прошивку)
    - сломать материнскую плату (стерев биос или выставив высокие напряжения на чипсете)

    всё это достаточно сложно сделать, не везде возможно (например, у Intel больше аппаратных защит, у некоторых HDD прошивка подписана и её так просто не испортить и т.д.), и мало кому нужно.

    Оперативку сломать можно было во времена DDR2 (перезаписать SPD EEPROM), сейчас они почти все залочены на read-only, по превышению напряжения ОЗУ вряд ли помрёт, они достаточно надёжные, так что можете считать DDR наиболее неубиваемой частью ПК
    Ответ написан
    9 комментариев
  • Как запустить mp4 файл из ресурсов в проигрывателе C++?

    15432
    @15432
    Системный программист ^_^
    Можно сохранить во временный файл и открыть.
    Ответ написан
    Комментировать
  • Почему никак не узнать исходный код игры?

    15432
    @15432
    Системный программист ^_^
    Эмм ну допустим вы приготовили салат. Нарезали крабовые палочки, кукурузку всыпали, намешали особый соус по своему рецепту. И поставили на стол - нате, хавайте.

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

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

    15432
    @15432
    Системный программист ^_^
    Мне вот интересно, столько яп существует, и каждый для разных задач.
    Многие ЯП пересекаются в задачах. Просто инструменты.

    Это чтож получается, можно сделать все, что угодно благодаря программированию?
    Всё, что может исполнить ЦПУ.

    А чего нельзя сделать с помощью программирования?
    Любой материальный объект. Здание, животное, планету.
    Ответ написан
    6 комментариев
  • Как считать два байта числа?

    15432
    @15432
    Системный программист ^_^
    для 32-битных что-то типа такого. надо считать байты и развернуть их (вы же на x86 программу делаете? он little endian).
    unsigned int ReadBig32(FILE * in_file)
    {
        unsigned char temp[4];
        fread(temp, 1, 4, in_file);
        unsigned int result = temp[3] | (temp[2] << 8) | (temp[1] << 16) | (temp[0] << 24);
        return result;
    }
    Ответ написан
    Комментировать
  • Что в программировании значит: изучить на уровне железа, или на уровне софта?

    15432
    @15432
    Системный программист ^_^
    На уровне железа - реализовано в низкоуровневой прошивке девайса или вообще аппаратно, в виде неперешиваемых микросхем. Например, трансивер USB, преобразующий пакет данных в битовое кодирование 8b/10b. Изменить сложно или невозможно.

    На уровне софта - реализовано программно в драйвере или приложении, которое взаимодействует с устройством.
    Например, копирование файла на USB флешку. Изменить легко - перекомпилить программу.

    сорри, прочитал ваш вопрос как "изменить"

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

    например, чтобы скопировать файл на USB флешку вам достаточно изучить работу с fopen(), fwrite(), fclose() - это уровень софта.
    Чтоб понять как реально производится запись на USB флешку и создать свою USB флешку, нужно знать как работает NAND, что нужно для подключения и передачи по USB, какие там бывают типы пакетов, формат пакетов, вплоть до написания своей прошивки
    Ответ написан
    1 комментарий
  • Возможно глупый вопрос. Но как делают точные калькуляторы, когда есть ограничения на диапозон типов данных (int,doble и т.д.)?

    15432
    @15432
    Системный программист ^_^
    Есть библиотеки для работы с большими числами (bigdigits.c), которые хранят числа в многобайтовых массивах.
    Ограничения на типы данных, да и сами типы данных вводятся спецификацией языка программирования.
    Ответ написан
    Комментировать
  • Как происходит разбиение данных на TCP сегменты?

    15432
    @15432
    Системный программист ^_^
    в случае двухбайтовых символов unicode/utf? Конечно может, по любому смещению может поделиться. Поэтому в заголовках http используется разделитель \r\n, а для тела указывается явный размер, чтобы принимающая сторона точно знала, что еще не весь http запрос принят и нужно принимать дальше, и не начинать парсить
    Ответ написан
    Комментировать
  • Как ОС управляет ядрами CPU?

    15432
    @15432
    Системный программист ^_^
    Отключение ядер процессора происходит в BIOS, способы различаются в зависимости от модели и производителя. Обычно это установка битов в каком-либо PCI Config Space регистре чипсета.

    На этапе запуска компьютера, активно только 0 ядро (0 поток в случае SMT), оно начинает исполнятся с адреса FFFFFFF0, где на этот момент находится образ BIOS (UEFI). Остальные ядра (потоки) находятся в состоянии WFS (Wait For Startup Inter-Processor Interrupt, ожидание внутрипроцессорного прерывания начала работы). В процессе загрузки, происходит настройка механизма многопоточности самой операционной системы, контексты, очереди, таблицы и так далее. В том числе для каждого процессора (потока) создаются Idle циклы, в которых каждый будет крутиться в ожидании новых задач. Как только все настроено, через SIPI (Startup Inter-Processor Interrupt) пробуждаются остальные ядра и им передается адрес этого самого Idle цикла.
    А потом операционная система добавляет в очередь задач задачи, требующие выполнения и при очередном периодическом прерывании у ядра происходит смена контекста и начинает выполняться эта задача.. как именно это устроено в Windows и кто решает, какому ядру назначить задачу - не знаю. Где-то в ядре (ntoskrnl.exe)

    Про кеш зависит от процессора. Например, в Ryzen кеш общий для процессорного блока из четырех ядер. В модели 1500 4 ядра, отключено по 2 ядра у каждого блока, при этом кеш не урезается, а вот в 1400 ядер тоже 4, но отключена одна из двух сборок целиком, поэтому кеш вдвое меньше
    Ответ написан
    Комментировать
  • Зачем в данном случае прописывать len-1?

    15432
    @15432
    Системный программист ^_^
    Не нужно там len-1, getline не учитывает терминирующий ноль.
    On success, getline() and getdelim() return the number of characters
    read, including the delimiter character, but not including the
    terminating null byte ('\0').
    Ответ написан
  • Можно ли установить фиксированную частоту опроса положения мыши в Windows10?

    15432
    @15432
    Системный программист ^_^
    Windows не опрашивает положение USB мыши. Как только мышь сдвигается, она отправляет USB пакет с разницей координат. Драйвер получает эту информацию и корректирует положение курсора. "Опрос" на уровне USB происходит примерно раз в миллисекунду или чаще (зависит от контроллера).

    Вот PS/2 мышь система именно опрашивает (периодически читает значение в порте), но с какой частотой это происходит я не в курсе, драйвер нужно смотреть. Без замены драйвера поменять частоту также не получится.
    Ответ написан
  • Как вывести значения в обратном порядке?

    15432
    @15432
    Системный программист ^_^
    Записать значения в вектор, а потом вывести в любом порядке
    Ответ написан
  • Как пробивать НАТ?

    15432
    @15432
    Системный программист ^_^
    TCP / UDP hole punching, статей куча
    Ответ написан
    Комментировать
  • Как правильно извлечь числа из битового поля?

    15432
    @15432
    Системный программист ^_^
    Правильно. Ведущие нули не нужны, просто 0xFF или 0xFFFF. Но можно проще:

    struct BitField{
        union{
            int value;
            struct{
                int a:8;
                int b:8;
                int c:16;
            };
        };
    };
    
    BitField MyBits;
    MyBits.a = 4; //fill the internal bit structure
    MyBits.b = 7;
    MyBits.c = 5;
    cout << MyBits.value; //print the full int representation
    Ответ написан
    6 комментариев
  • Как происходит чтение с файловой системы?

    15432
    @15432
    Системный программист ^_^
    В Windows драйвера находятся в ядре. Новый поток не создается, драйвер лишь обрабатывает поступающие запросы на чтение и перебрасывает их другим драйверам, например, usb mass storage или ahci. Которые, в свою очередь, взаимодействуют с хост-контроллерами USB или ATA.
    Сам вызов ReadFile блокирует выполнение программы до завершения операции (но можно и асинхронно)
    Ответ написан
    4 комментария
  • Какая есть литература по обработке видео?

    15432
    @15432
    Системный программист ^_^
    www.ixbt.com/divideo/avisynth1.shtml
    при необходимости всегда можно написать свой плагин на C++
    по фильтрации шума - из простейших, фильтр Гаусса, медианный и билатеральный.

    есть лекции с нашего спецкурса по сжатию видео и анализу и обработке 3D видео.. но это несколько другое
    Ответ написан
    Комментировать