Показано с 1 по 10 из 1349

Тема: Hardella IDE

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    В 1.6.1 стоит нажать по сообщению (ну, в нижней части "ошибки компиляции") "broken reference VariableReference ...". Будет понятно "в каком месте программы" собственно ошибка.
    "broken reference VariableReference ..." у меня то же нет.
    Изображения Изображения

  2. #2

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    "broken reference VariableReference ..." у меня то же нет.
    Это уже ошибка "IllegalStateException: RegAlloc...".
    Означает "не хватило регистров".

  3. #3

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Это уже ошибка "IllegalStateException: RegAlloc...".
    Означает "не хватило регистров".
    Владимир, сколько у PRU регистров и сколько байт в регистре ?

  4. #4

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    Владимир, сколько у PRU регистров и сколько байт в регистре ?
    https://hardella.com/docs/pru/featur...9A110-%D0%9C02

    Объём регистровой памяти: около 30 DWORD регистров (около 120 байт)

  5. #5

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    А если переменная объявлена как WORD, то она займет полрегистра, а вторые полрегистра будут не использованы и пропадут зря ?

  6. #6

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    А если переменная объявлена как WORD, то она займет полрегистра, а вторые полрегистра будут не использованы и пропадут зря ?
    Зря они не пропадут.

    В ошибке "нехватки регистров" на самом деле есть полная распечатка того, какие переменные и в каких регистрах хранились.
    Если вы скопируете в буфер обмена строку с ошибкой "RegAlloc", и вставите её, например, в блокнот, то увидите, что там довольно много текста.

  7. #7

    По умолчанию

    Владимир, у PRU кроме регистровой памяти есть оперативная память (ОЗУ). Значит есть возможность сохранять регистровую память в ОЗУ. Это надо делать после отработки каждого ФБ, т.е. перед началом выполнения ФБ читаем ОЗУ в регистры, а после выполнения ФБ сохраняем регистры в ОЗУ. В этом случае будет возможность выполнять в программе PRU разные ФБ и не будет никакой каши в регистровой памяти. Каждый ФБ сможет использовать для своих нужд до 30 регистров. Время выполнения программы PRU увеличиться, зато можно будет писать более сложные программы.

    Еще лучше вместо ОЗУ использовать стековую память, если она имеется.
    Последний раз редактировалось IVM; 19.01.2018 в 14:18.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •