Ответы пользователя по тегу C
  • Почему код выполняется с ошибкой?

    @Mirn
    потому что указатель "a" непонятно куда указывает, а ты в это непонятно куда ещё пытаешься ввод с клавиатуры организовать, и в итоге получаешь непонятно что.
    Ответ написан
    2 комментария
  • Какие есть компиляторы си, которые могут генерировать "сырые" бинарники?

    @Mirn
    например в сборке GNU GCC для ARM есть такая утилита как objcopy, она конвертирует форматы, в том числе может перегнать ELF в голый бинарник, например так:
    arm-none-eabi-objcopy -O binary "Boot_F4_fast_uart.elf" "Boot_F4_fast_uart.bin"
    так что советую ознакомиться с маном на objcopy
    https://sourceware.org/binutils/docs/binutils/objc...
    Ответ написан
    1 комментарий
  • Есть ли в области системного программирования такие задачи, для которых целесообразно только использование ассемблера?

    @Mirn
    в микроконтроллерах АРМ асм тоже не нужен: есть хорошие компиляторы и оптимизаторы типа gcc, keil, iar. Есть библиотеки с готовыми асм вставками от производителя проца - арм консорциума. Итог писать на асме не нужно никогда и ничего. Очень и очень иногда использовать спец либы ДСП может да, с стилем "псевдо-ассемблер на си" когда инлайн-функциями записаны асм команды обрабатывающие вектор. Но обычно уже все свёртки, фурье и тд очень быстрый уже есть. И оптимизировать там - всё равно что биться голой об стену и воевать с компилятором насколько близко ты его догонишь.

    Но если так хочется:
    Есть соглашения как писать ассемблерный код, какие регистры волатильные какие нет, как организовывать стековый фрейм и тд и тп. И если всего этого придерживаться, то выйдет очень долго и нудно, а результат очень сильно разочарует.

    Да раньше для арм МК писали на асме код запуска, куски RTOS, обработка исключений, но с освоением кортекса, формата LD и секций gcc даже это стало не нужно вообще.
    За свою практику (7 лет на арм) я ни разу на асме не писал. Нужно быстродействие - ставь FPGA.
    Ответ написан
    Комментировать