EMUL

Signed multiplication

EMUL

Extended MULtiply, signed


[Syntax]

EMUL src, dest

 

 

[Operation]

dest2:dest = dest * src;

 

[Function]

-

This instruction multiplies dest by src, treating both as signed values.

-

The calculation is performed on src and dest as 32-bit operands to obtain a 64-bit result, which is placed in the register pair, dest2:dest (R(n+1):Rn).

-

Any of the 15 general registers (Rn (n: 0 to 14)) is specifiable for dest.

Note

The accumulator (ACC) is used to perform the function. The value of ACC after executing the instruction is undefined.

Register Specified for dest

Registers Used for 64-Bit Extension

R0

R1:R0

R1

R2:R1

R2

R3:R2

R3

R4:R3

R4

R5:R4

R5

R6:R5

R6

R7:R6

R7

R8:R7

R8

R9:R8

R9

R10:R9

R10

R11:R10

R11

R12:R11

R12

R13:R12

R13

R14:R13

R14

R15:R14

 

[Instruction Format]

Syntax

Processng Size

src

dest

Code size

(Byte)

EMUL src, dest

L

#SIMM:8

Rd (Rd=R0~R14)

4

L

#SIMM:16

Rd (Rd=R0~R14)

5

L

#SIMM:24

Rd (Rd=R0~R14)

6

L

#IMM:32

Rd (Rd=R0~R14)

7

L

Rs

Rd (Rd=R0~R14)

3

L

[Rs].memex

Rd (Rd=R0~R14)

3(memex == UB)

4(memex != UB)

L

dsp:8[Rs].memex

Rd (Rd=R0~R14)

4(memex == UB)

5(memex != UB)

L

dsp:16[Rs]memex

Rd (Rd=R0~R14)

5(memex == UB)

6(memex != UB)

[Flag Change]

This instruction does not affect the states of flags.

 

[Description Example]

EMUL #10, R2

EMUL R1, R2

EMUL [R1], R2

EMUL 8[R1].W, R2