「6.1 ARM命令セット」のページ中の乗算命令mulに関する説明に下記の誤りがあったため,修正しました.また,配布コード中のarm_spec.mlにある該当する型定義も,それに合わせて修正する必要があります.

[誤]

  • mul r1, r2, addr: r2にaddrを掛けた結果をr1に格納

  • arm_spec.ml

    type instr =
        ...
      | Mul  of reg * reg * addr
        ...
    ...
    let string_of_instr instr =
      ...
      | Mul (r1, r2, a) ->
          emit_instr "mul" [string_of_reg r1; string_of_reg r2;
                            string_of_addr a]
      ...
    

[正]

  • mul r1, r2, r3: r2にr3を掛けた結果をr1に格納

  • arm_spec.ml

    type instr =
        ...
      | Mul  of reg * reg * reg
        ...
    ...
    let string_of_instr instr =
      ...
      | Mul (r1, r2, r3) ->
          emit_instr "mul" [string_of_reg r1; string_of_reg r2;
                            string_of_reg r3]
      ...
    

– 馬谷