Код
а также использую "функции"
asm(".macro SetCE0 lun");
asm(" push {r0, luncode}");
asm(" SetLunCode lun");
asm(" str luncode, [PORT,Icmdrclr]");
asm(" pop {r0, luncode}");
asm(".endm");
1. Макрос это не функция! Макросы в асм это почти тоже самое что и дефайны в Си.
2. А разве можно в асмовских вставках использовать директивы ассеблера? никогда не видел и не делал. Раньше, когда писал на асме, макросы определял в .inc-файлах, которые прицеплял к .asm. Тут получается строки обрабатывает препроцессор Си, потом копилятор, потом (чтобы развернуть директивы асма) препроцессор асма, а потом уже ассемблер. Но вот обработка препроцессором асма меня что-то смущает. А есть ли она?
3.Что Вам мешает добавить в проект асмовский файл, в котором написать функции в соответствии с соглашениями СИ?
4. Или определить сишные дефайны, в которых будете вызывать асмовские вставки?
Код
#define SetCE0(lun) do{ \
asm(" push {r0, luncode}"); \
asm(" SetLunCode lun"); \
asm(" str luncode, [PORT,Icmdrclr]"); \
asm(" pop {r0, luncode}");\
while(0)
Сообщение отредактировал alexeyv - Oct 24 2014, 03:17