Перейти к содержанию
    

PV`

Новичок
  • Постов

    3
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Всё будет так-же, т.е. если {...} надо обязательно писать {...}; _main: dw 65535 ;tst.c: 3: void main(void) ;tst.c: 4: { ;tst.c: 5: if (test!=0) { test=0x55; } movf _test,w,c bz l2 movlw 85 movwf _test,c movlw 170 ;# movwf _test,c;# l2: ;tst.c: 10: LATC=test; movff _test,3979 ;volatile ;tst.c: 11: } goto start Данная "фича" наблюдается и в: PICC-18 COMPILER V9.50PL3 PICC-18 PRO V9.61 От сего и ищется “стандарт” ассемблерной вставки HI-TECH :)
  2. С общей рекомендацией “Делайте лучше асмовские модули” согласны многие, но в жизни всегда есть “другой случай” :) По моей последней практике, при большом количестве разовых проектов, бывают случаи, когда проще или быстрее впихнуть вставку на asm и глянуть листинг, чем описывать и отлаживать внешние ассемблерные модули, тем более вызываемые только через call с тусовкой параметров через память… Снос крыши компилятора контролируем. И к описанному примеру есть безобидное решение – вставка дополнительного “;”. Для этого и тему создал. PS: Никакой войны кто круче - СИ или АСМ и кто быстрее и оптимальнее созданет внешние ПП на asm :smile3009:
  3. Баг или фича с #asm после if в PICC-18 STD 9.51PL1? Пользую: MPLAB IDE v8.10, HI-TECH PICC-18 STD Release Notes for Version 9.51PL1, chip=18F258 Пример1 (asm вставляется в if): main.c: #include <pic18.h> near unsigned char test; void main(void) { if (test!=0) test=0x55; #asm movlw 0AAh movwf _test,c #endasm LATC=test; } Listing: _main: ; errata NOP at function entry point dw 65535 ;tst.c: 5: if (test!=0) test=0x55; movf _test,w,c bz l2 movlw 85 movwf _test,c movlw 170 ;# movwf _test,c;# l2: ;tst.c: 10: LATC=test; movff _test,3979 ;volatile ;tst.c: 11: } goto start Пример2 (добален только ";" и asm вставляется уже после if): #include <pic18.h> near unsigned char test; void main(void) { if (test!=0) test=0x55;; #asm movlw 0AAh movwf _test,c #endasm LATC=test; } Listing: _main: ; errata NOP at function entry point dw 65535 ;tst.c: 5: if (test!=0) test=0x55;; movf _test,w,c bz l2 movlw 85 movwf _test,c l2: movlw 170 ;# movwf _test,c;# ;tst.c: 10: LATC=test; movff _test,3979 ;volatile ;tst.c: 11: } goto start Есть ли какой стандарт на данную тему?
×
×
  • Создать...