>>856
Intelの日本語マニュアルには処理の疑似コードが載ってる。
これによると、上半分というのは、各命令で使うレジスタサイズの上半分とわかる。
8,16,32bitそれぞれ場合によって上半分の長さが変わるのでそう書くしかない。
だから64bitの場合の上半分は上位32bitになる。

操作
IF (NumberOfOperands = 1)
 THEN IF (OperandSize = 8)
  THEN
   AX ← AL ? SRC (* signed multiplication *)
   IF AL = AX
    THEN CF ← 0; OF ← 0;
    ELSE CF ← 1; OF ← 1;
   FI;
  ELSE IF OperandSize = 16
   THEN
    DX:AX ← AX ? SRC (* signed multiplication *)
    IF sign_extend_to_32 (AX) = DX:AX
     THEN CF ← 0; OF ← 0;
     ELSE CF ← 1; OF ← 1;
    FI;
   ELSE (* OperandSize = 32 *)
    EDX:EAX ← EAX ? SRC (* signed multiplication *)
    IF EAX = EDX:EAX
     THEN CF ← 0; OF ← 0;
     ELSE CF ← 1; OF ← 1;
  FI;
FI;