instrucción mul (Multiply)

Finalidad

Multiplica el contenido de dos registros de propósito general y almacena el resultado en un tercer registro de propósito general.

Nota: La instrucción mul sólo está soportada en la arquitectura de la familia POWER ®.

Sintaxis

Bits VALOR
0 - 5 31
6 - 10 RT
11 - 15 RA
16 - 20 RB
21 OE
22 - 30 107
31 RC
Familia POWER ® 
mul NT1, RA, RB
mul. NT1, RA, RB
mulo NT1, RA, RB
mulo. NT1, RA, RB

Descripción

La instrucción mul multiplica el contenido del registro de propósito general (GPR) RA y GPR RBy almacena los bits 0-31 del resultado en el GPR NT1 de destino y los bits 32-63 del resultado en el registro de MQ .

La instrucción mul tiene cuatro formas de sintaxis. Cada formulario de sintaxis tiene un efecto diferente en el campo 0 de registro de condición y en el registro de excepciones de punto fijo.

Elemento Descripción
Formulario de sintaxis Desbordamiento Excepción (OE) Punto fijo Registro de excepciones Registro Bit (Rc) Condición Registro de campo 0
mul 0 Ninguna 0 Ninguna
mul. 0 Ninguna 1 LT,GT, EQ, SO
mulo 1 SO, OV 0 Ninguna
mulo. 1 SO, OV 1 LT,GT, EQ, SO

Las cuatro formas de sintaxis de la instrucción mul no afectan nunca a Carry bit (CA) en el registro de excepciones de punto fijo. Si el formulario de sintaxis establece la excepción Overflow Exception (OE) en 1, la instrucción establece los bits Summary Overflow (SO) y Overflow (OV) en el Registro de excepciones de punto fijo en 1 si el producto es superior a 32 bits. Si el formulario de sintaxis establece el bit de registro (Rc) en 1, entonces el valor de cero de (LT) cero, mayor que (GT) cero e igual a (EQ) cero en el campo de registro de condición 0 refleja el resultado en los 32 bits de orden bajo del registro de MQ .

Parámetros

Elemento Descripción
RT Especifica el registro de propósito general de destino donde se almacena el resultado de la operación.
RA Especifica el registro de propósito general de origen para la operación.
RB Especifica el registro de propósito general de origen para la operación.

Ejemplos

  1. El siguiente código multiplica el contenido de GPR 4 por el contenido de GPR 10 y almacena el resultado en GPR 6 y el registro de MQ :
    
    # Assume GPR 4 contains 0x0000 0003.
    # Assume GPR 10 contains 0x0000 0002.
    mul 6,4,10
    # MQ Register now contains 0x0000 0006.
    # GPR 6 now contains 0x0000 0000.
    
  2. El siguiente código multiplica el contenido de GPR 4 por el contenido de GPR 10, almacena el resultado en GPR 6 y el registro de MQ , y establece el campo 0 de registro de condición para reflejar el resultado de la operación:
    
    # Assume GPR 4 contains 0x0000 4500.
    # Assume GPR 10 contains 0x8000 7000.
    mul. 6,4,10
    # MQ Register now contains 0x1E30 0000.
    # GPR 6 now contains 0xFFFF DD80.
    # Condition Register Field 0 now contains 0x4.
    
  3. El código siguiente multiplica el contenido de GPR 4 por el contenido de GPR 10, almacena el resultado en GPR 6 y el registro de MQ , y establece los bits de desbordamiento y desbordamiento de resumen en el registro de excepciones de punto fijo para reflejar el resultado de la operación:
    
    # Assume GPR 4 contains 0x0000 4500.
    # Assume GPR 10 contains 0x8000 7000.
    # Assume XER = 0.
    mulo 6,4,10
    # MQ Register now contains 0x1E30 0000.
    # GPR 6 now contains 0xFFFF DD80.
    # XER now contains 0xc000 0000.
    
  4. El siguiente código multiplica el contenido de GPR 4 por el contenido de GPR 10, almacena el resultado en GPR 6 y el registro de MQ , y establece los bits Overflow, Overflow y Carry de resumen en el registro de excepciones de punto fijo y el campo 0 de registro de condición para reflejar el resultado de la operación:
    
    # Assume GPR 4 contains 0x0000 4500.
    # Assume GPR 10 contains 0x8000 7000.
    # Assume XER = 0.
    mulo. 6,4,10
    # MQ Register now contains 0x1E30 0000.
    # GPR 6 now contains 0xFFFF DD80.
    # Condition Register Field 0 now contains 0x5.
    # XER now contains 0xc000 0000.