;## # FUNCTION FIX_MPY
;## # FRAME AUTO ( __PAD11) size 1, offset -1
;## # REGISTER ARG ( a) size 2, REGISTER R1
;## # REGISTER ARG ( b) size 2, REGISTER R2
;## # ARG Size(0) Auto Size(1) Context Size(5)
._type 307,'x',269,2
._type 307,'m','a',0,269
._type 307,'m','b',0,269
._func 'FIX_MPY','G',1,307,$FIX_MPY,0
._inspect 'F', 's', "FIX_MPY", "$FIX_MPY", 'G', 6
.align
._line 303
;## # C_SRC : {
.glb $FIX_MPY
$FIX_MPY:
enter #01H
._block
._var 'a','A',269,0
._var 'b','A',269,0
._var 'c','A',292,0
._line 305
;## # C_SRC : int32 c = ((int32)a * (int32)b) >> 14;
._block
._var 'a','R',269,6
._var 'b','R',269,7
mul.w R2,R1 ; b
._eblock
sha.l #-8H,R3R1
sha.l #-6,R3R1
._line 307
;## # C_SRC : b = c & 0x01;
mov.w R1,R0
and.w #0001H,R0 ; b
._block
._var 'b','R',269,5
._line 309
;## # C_SRC : a = (c >> 1) + b;
sha.l #-1,R3R1
add.w R1,R0 ; a
._eblock
._block
._var 'a','R',269,5
._line 312
;## # C_SRC : return a;
._eblock
exitd
das der Auszug aus dem listing. Scheint genauso gemacht, wie du
vorgeschlagen hast, schade.
Trotzdem vielen Dank.