Существуют ли соглашения о кодах для сборки (в основном PIC)?[закрыто]

StackOverflow https://stackoverflow.com/questions/946950

Вопрос

Существуют ли соглашения о кодах для сборки (в основном PIC)?

Это было полезно?

Решение

мне удалось найти Руководство по стилю языка ассемблера (PDF) которые могут вас заинтересовать.

Другие советы

При написании ассемблера это очень полезно и совсем не перебор Комментируйте каждую строку

Это зависит от того, программируете ли вы на ассемблере или используете компилятор c для создания сборки. Если важна производительность, не используйте компилятор c, напишите ассемблер самостоятельно.

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

    start:   movlw   0x24      //  \
             movf    count     //   put 24 into count


    MyCount: decfsz  count     //decrement count and exit if done
             goto    myCount   //do the loop
             goto    exit      //count is done exit

это типичная кодировка: первый столбец для указателей адреса, следующий для команды и связанных с ней переменных. Обычно вы определяете переменные в разделе заголовка перед фактической программой, но это зависит от используемого вами ассемблера.некоторые не предоставляют вам опцию указателя переменной, и вам придется использовать прямую ячейку памяти.если вы посмотрите на закомментированный код, выходящий из дизассемблера, это будет выглядеть так.

    0020  movlw  0x24
    0021  movf   0x25     // 0x25 = memory address of count
    0022  decfsz 0x25
    0023  goto   0x0022   // loop back to 0x22 until count = 0
    0024  goto   0x01FF

затем вы закомментируете это, обязательно сгруппируйте свой код, используйте 'nop' для смещения кода на хорошие круглые числа, например, начните с адреса 20, оставив адреса между 2 и 20 свободными для прерываний и тому подобного.В зависимости от чипа я пишу много кода для 12f675, поэтому обычно использую именно эту модель.

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

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

Надеюсь, это кому-то поможет.

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

также проверьте другие проекты, у большинства из них будет уродливый код;но вы найдете драгоценный камень или два.

я никогда не программировал на PIC, но любил читать код.я смутно помню «ОС реального времени» с действительно приятным и понятным потоком выполнения.не помню, насколько последовательным был стиль кодирования, но я бы начал с этого.

лучше прочитать большинство из них, и когда это будет так же легко, как проза, тогда ты найдешь свой стиль

Я поддерживаю Джейсона С. Используйте компилятор C, если это возможно, даже если в конечном итоге вам придется встроить несколько строк ассемблера в файл «.c», используя ключевое слово «__asm».

Если вам необходимо писать целые программы на ассемблере для PIC, рекомендуемое соглашение о вызове функций:Список PIC:Пейджинг PIC и PCLATH.

Это действительно будет зависеть от модели PIC, которую вы используете.Например, для PIC16 и PIC18 есть множество примеров сборки, которые легко найти в сети.

Однако такие модели, как PIC24 и PIC32, гораздо больше ориентированы на C.Существует множество примеров PIC на языке C, которые можно найти на веб-сайте для вашей конкретной модели PIC.Эти модели PIC все еще можно программировать на ассемблере, но в Интернете очень мало примеров того, как это сделать.Лучший ресурс для этого находится в MPLAB в разделе «Справка», проверьте «Содержимое справки» любого ассемблера, который использует ваша модель PIC.Здесь вы увидите несколько примеров, а также инструкции о том, как программировать на ассемблере PIC и выполнять простые задачи PIC, такие как определение памяти или запись макросов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top