mul32.s

来自「AVR下的ICC所有函数库代码」· S 代码 · 共 37 行

S
37
字号
	.text
mpy32s::
mpy32u::
  rcall long_prolog
  rcall tstzero1    ; this along with next step are optional
  breq  donemul     ; gives slightly early (one loop) exit if multiplier is zero
  clr   r8
  clr   r9
  clr   r10
  clr   r11
  rcall tstzero2    ; this along with next step are optional
  breq  moveresult  ; gives larger early exit if multiplicand is zero
loopbegin:
  lsr   r19
  ror   r18
  ror   r17
  ror   r16
  brcc  donebit
  add   r8,r24
  adc   r9,r25
  adc   r10,r26
  adc   r11,r27
donebit:
  lsl   r24
  rol   r25
  rol   r26
  rol   r27
  rcall tstzero1
  brne  loopbegin
moveresult:
  mov   r16,r8
  mov   r17,r9
  mov   r18,r10
  mov   r19,r11
donemul:
  rjmp  long_epilog

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?