ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
4 декабря
1092498 Топик полностью
Zikon (12.04.2021 08:56, просмотров: 457) ответил Evgeny_CD на Спасибо! Однако компилятор будет весьма нетривиальным для такой архитектуры.
При использовании расширенной системы команд - компилятор будет очень тривиальным 

Добавляется стек данных через индексный регистр FSR2

И все команды начинают работать с этим локальным "окном"


Если зафиксировать банк 0 (для Q серии - банк 5) в регистре банка BSR - то получаем 256 байт глобальных переменных

а в основном используем локальные переменные через окно FSR2

довольно оригинально получаем C-подобные подпрограммы

;  div word on byte  unsigned
;  input:  divident - word, divider - byte  stack  
;  output:  quotient - word, remainder - byte  stack    
locals	    set	    2    
dividentH   set	    locals+3
dividentL   set	    locals+2
divider	    set	    locals+1
remainder   set	    locals
counter	    set	    locals-1
	    
udiv16_8:    
    pushl	0	; remainder
    pushl	16	; counter
udiv_0:    
    rlcf	[dividentL]
    rlcf	[dividentH]
udiv_1:
    rlcf	[remainder]
    
    bc		udiv_3
    movf	[divider], W
    subwf	[remainder], W
    bnc		udiv_neg
    movwf	[remainder]
    bra		udiv_neg
udiv_3:
    movf	[divider], W
    subwf	[remainder] 
    bsf		STATUS, C
udiv_neg:
    rlcf	[dividentL]
    rlcf	[dividentH]
udiv_4:
    decfsz	[counter]
    bra		udiv_1
    
    movss	[remainder],[divider]
    _ret_unlnk	locals



_ret_unlnk  - это макрос на расширенную команду  "addulnk"