¿Por qué las instrucciones x86-64 en los registros de 32 bits ponen a cero la parte superior del registro completo de 64 bits?

En elx86-64 Tour de los manuales de Intel, Yo leo

Quizás el hecho más sorprendente es que una instrucción comoMOV EAX, EBX Automáticamente pone a cero los 32 bits superiores deRAX registro.

La documentación de Intel (3.4.1.1 Registros de uso general en modo de 64 bits en la arquitectura básica manual) citada en la misma fuente nos dice:

Los operandos de 64 bits generan un resultado de 64 bits en el registro de propósito general de destino.Los operandos de 32 bits generan un resultado de 32 bits, con extensión cero a un resultado de 64 bits en el registro de propósito general de destino.Los operandos de 8 y 16 bits generan un resultado de 8 o 16 bits. Los 56 bits superiores o los 48 bits (respectivamente) del registro de propósito general de destino no son modificados por la operación. Si el resultado de una operación de 8 bits o 16 bits se destina al cálculo de direcciones de 64 bits, extienda explícitamente el registro al total de 64 bits.

En los ensamblajes x86-32 y x86-64, instrucciones de 16 bits, como

mov ax, bx

no muestre este tipo de comportamiento "extraño" de que la palabra superior de eax está en cero.

Así, ¿por qué se introdujo este comportamiento? A primera vista, parece ilógico (pero la razón podría ser que estoy acostumbrado a las peculiaridades del ensamblaje x86-32).

Respuestas a la pregunta(2)

Su respuesta a la pregunta