憂鬱な午後のひととき

11月23日_

APX対応17

ccmpacc対応.

GitHub issueで大昔に作ったmsoffice-crypto.exeで非圧縮3.5GiBのエクセルファイルを扱ったらbad allocationが出たというissue. そんなの知らんがなとしか.

11月22日_

ccmpaccの仕様

マニュアルにはEVEX.ND=1であるべきというのにxedではそのフラグを立てるとエラー. どっちが正しいのか分からないので質問した. → マニュアルのミスだったもよう. 8月に更新されてたの気がつかなかった.

11月21日_

APX対応16

crc32やrotationまわり対応完了.

11月20日_

APX対応15

1byte opecodeのみがrex2でr16, ..., r31対応できる. 2, 3byteプレフィクスがついてたらエラーにしないとおかしなバイトコードを生成してしまう.

11月17日_

APX対応14

2opのneg/notなどに対応.

11月16日_

APX対応13

1opのdiv/idiv/imul/mul/neg/not_対応. 一つずつ微妙に違うの困る. notだけNF対応してないのは何故だろう.

11月12日_

APX対応12

inc, decが正しく動くようになった.

.
11月11日_

APX対応11

sarx, shlx, shrx, rorxの中でrorxだけVEX-map3というものらしい. こいつだけのためにフラグを追加.

11月10日_

APX対応10

andnの正しいエンコーディングが分からない. 結局いろんなパターンのバイトコードを出力させてXEDが正しく逆アセンブルできるのを探した. それでようやく動いた. MAPが何になるのかニーモニックの説明だけでは分からない.

11月9日_

APX対応9

eflagsを抑制するEVEX.NF=1なモードが動くようになった. まだアセンブラレベルでの構文はなさそう(Intel XEDの逆アセンブル結果が変わらない)なので勝手にT_nfでやることにした.

struct Code : Xbyak::CodeGenerator {
  Code(bool nf) {
    xor_(eax, eax); // CF = 0
    mov(eax, -1);
    if (nf) {
      add(eax|T_nf, eax, 1); // CFは変わらない
    } else {
      add(eax, eax, 1); // CF = 1
    }
    adc(eax, 0); // eax = CF ? 1 : 0
    ret();
  }
};

sde -futureで動くのを確認できてうれしい.

11月8日_

APX対応8

APX拡張をしやすいやり方はどうしたらよいか試行錯誤しながらXbyakの古いコードをひたすらリファクタリング. 大分すっきりしてきた. かなりカオスだったからなあ.

11月7日_

質問メール

mcl/blsなどはGitHubのissueを立ててほしいな. ついつい答えてしまうのも悪いのだろうけど.

11月2日_

APX対応7

adcxはうまくいったけどadoxは駄目と思ったらプレフィクスとppフラグの扱いがミスってた.


御意見は光成滋生<herumi@nifty.com>までお願いします