Я хоть и поздно увидел, но добавлю.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Bill 05 декабря 2004 г. 13:46
В ответ на: Подскажите pls, что означает подчеркивание, двойное подчеркивание, а так же знак вопроса в определении имен пременных и меток, например _abc, __abc, ?abc ну и теперь настоящий знак вопроса? отправлено изучающий СИ 04 декабря 2004 г. 22:37

В компиляторе (в любом) используются определенные соглашения по именованию служебных функций, т.е функций, вызов которых генерируется компилятором. В имена функций могут входить любые символы, которые разрешены синтаксисом ассемблера (не Си), в том числе и символы '?'. То же самое относится и к меткам. Они генерируются компилятором автоматически.
Маленький пример:


_NOnes::
; {
push bc
; register char count;
;p_lastbyte = pdata + sizeof (*pdata) - 1 - ext_net + 3;
; if (lng < 123L)
ld hl,(_ext_net)
add hl,hl
push hl
ld hl,(_pdata)
inc hl
inc hl
pop de
call CSUB$U
ld de,6
add hl,de
ld (_p_lastbyte),hl

.psect $$INIT
$3: .word 173, 0

.psect
ld hl,_lng
call CGET$L
ld hl,$3
call C$LT$L
; if (flt > 0.5)

jp p,$2
ld hl, 173
call CCVI$L
ld hl,_lng
call CPUT$L

$2:
.psect $$INIT
$5: .flt2 0.5

.psect
ld hl,_flt
call CGET$F
ld hl,$5
call C$GT$F
jp p,$4
.psect $$INIT
$6: .flt2 0.5
.psect
ld hl,$6
call CGET$F
ld hl,_flt
call CPUT$F
$4:


Я использовал следующие соглашения. К именам функций пользователя и и стандартным фнкциям библиотеки добавляюся символы '_'. Имена служебных функций начинаются с символа C(Compiler). Далее название операцции (GET, PUT, ADD, SUB) и символ $, последний символ определяется тип операции (L-long, U-unsigned, F-float, ...). Имена меток состоят из симола $ и числа, которое просто увеличивается при создании новой метки, это позволяет имя метки делать уникальным в пределах всего модуля.
По поводу совместного использования asm и Си. Обычно в документации на компилятор имеется раздел, в котором приводятся все необходимые сведения. Они касаются и соглашений по именованию функций, и механизмов передачи параметров в функцию, и механизмов возврата значений функциями и т.д. Советую найти в руководстве этот раздел и внимательно с ним ознакомиться.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru