Jump to content

    

VladislavS

Свой
  • Content Count

    943
  • Joined

Community Reputation

0 Обычный

About VladislavS

  • Rank
    Знающий
  • Birthday 05/07/1976

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

3171 profile views
  1. А о каких регистрах идёт речь вас почему не интересует?
  2. Тип контроллера в свойствах проекта указывается. Эта настройка и на компиляцию, и на отладку влияет.
  3. Кто мешает им ещё и прошивать все выпускаемые устройства и никому не давать прошивку?
  4. Над разработкой устроиства трудятся схемотехники, топологи, констукторы, технологи и т.д. И только хитрожопые программисты, даже неспособные защитить прошивку, почему-то хотят "всю жизнь получать гонорар". Я пониааю, когда голое ПО, которое без защиты больше одного раза не продашь. Но прошивка с каждой железкой продаётся. И програмист имет (или не имет, тут дело труового договора) точно такие же права как остальные разработчики.
  5. Полагаю, что там где гордо красуется asm должно быть тело функции { }.
  6. Разрядность поля в дескрипторе, определяющее размер буфера, 13 бит. Это совпадает с описанием.
  7. Что-то вы всё усложняете. F072-CDC.rar
  8. Где вы эти проблемы находите? Всё прекрасно работает на 6-м компилятора, с С++17. Уверен, что и на вашем секретном контроллере всё будет работать.
  9. И всё же, виноват порванный презерватив. IAR 9.10.1 #include <atomic> struct FocQ { union { struct { uint32_t amplitude; uint32_t angle; }; std::atomic<uint64_t> ampl_angle; }; int64_t reduI; }; __attribute__ ((aligned (4))) FocQ focQ; На результат влияет либо наличие atomic, либо выравнивание на 8. __packed влияет на выравнивание и соответственно на результат.
  10. Вы слишком много хотите от компилятора. Меня, например, больше напрягает, когда он (по моей указке) молча вот так делает constexpr uint8_t *x = (uint8_t *)1; volatile uint64_t y = *(uint64_t *)x; MOVS R0,#+1 LDRD R0,R1,[R0, #+0] STRD R0,R1,[SP, #+0]
  11. Что именно в приведении к (u64 *) говорит о том что до приведения там всё было выровнено?
  12. Когда программист начинает мудрить с упаковками, выравниваниями и приведениями типов указателей, то компилятор правильно делает, что перестраховывается. Ну не смог он на 100% гарантировать, что SRD в этом месте будет по слову выровнен. Пусть уж лучше два str будет. У меня был на компиляторе ARM v6 случай, когда я схлопотал LDM с невыровненым адресом из-за приведения типов указателей.