憂鬱な午後のひととき

5月31日_

MASMでalign 32

普通にalign 32とするとエラー. デフォルトでは16までらしい. 何故そんな制約が. 使えるようにするには別のtextセグメント(たとえば_text$x)を用意してそこで定義する. $xは無視されてtextセグメントに統合される. 新しく作ったsegumentはcreate属性を指定しないと実行できない. めんどい.

_text$x segment align(64) execute
align 32
...
_text$x ends
5月30日_

CPUのレイテンシとスループット

基本だけどとりあえず. 本題は次のFMA.

5月29日_

getexpとgetmant

AVX-512では浮動小数点数の指数部と仮数部の取得に自分でがんばってマスクやビットシフトする必要はなかったんだな.

5月26日_

ぶらぶら

14kmぐらい歩いた. 明け方誰もいないところを歩くのはちょっと怖かった.

5月25日_

山下り

22kmぐらい歩いた. 結構お尻周りに負担がかかるな.

5月24日_

missing .note.GNU-stack section implies executable stack

何かなと思ったら自分で作ったASMには「.note.GNU-stack section」をつけるか--noexecstackをつけるかしないといけないそうだ. Hardened/GNU stack quickstart参照. s_xbyakでも対応した.

ついでにnasmで「%ifidn __OUTPUT_FORMAT__,macho64」でmacOSであることを判定できることも知った.

5月23日_

Pythonでfloat32

Pythonでfloatの値をfloat32の値に変換するを書いた.

5月19日_

marp

markdownをプレゼン形式に変換してくれる. 「npx marp --preview s_xbyak.md」でリアルタイム表示. なかなか便利だ.

5月17日_

Pythonでfloat32

x64用主要アセンブラの構文差異クイズを書いた. マニアックすぎるけど.

5月16日_

fmath::log

s_xbyakによるfmath::logのリライトが動き出した.

5月15日_

s_xbyak

s_xbyak紹介記事を書いた.

5月12日_

Intel SDM

s_xbyakのためにSDMからなんとかニーモニックのオペランド一覧を取得しようとしてるのだけど, 例外ケースが多くて難しい. 厳密マッチさせると結構取りこぼす. ゆるくマッチさせて余計なものを取り除く方がよさそう.

5月8日_

微調整

nasm/gas/masmの出力を見つつ修正が続く. macOSだけのアンダースコアの扱いが結構めんどい.

5月7日_

ripまわりの修正

xbyakと同じ仕様でなかったので修正. MASMはrip指定が無いのか(常にrip?). なんかよう分からん.

5月6日_

二度寝

最近ずっと朝御飯を食べたら眠気が強くてまた寝てしまう. しんどい.

5月5日_

メモリに対するマスク

s_xbyakでvmovups ptr(rax)|k1, zmm0みたいな表記に対応した.

5月3日_

コーチャンフォー若葉台店

以前から気にはなっていたけど遠いので行かなかった巨大本屋に行ってみた. 駅前めちゃくちゃ広い. 何故か電気屋さんがいっぱい. 本屋もすごく広かった. ただBGMがジャズっぽくアレンジされたクラシック(?)などでうるさく感じた. 食べ物屋さんがドトールしか無くてこれだけ広いのだからもうちょっとあってもいいのに, 近場にも前々なさそうで残念だった.

5月2日_

gas/nasm/MASM

AVX-512のマスクレジスタやブロードキャストまわりの文法が思っていたよりそれぞれのアセンブラで異なっていた. 対応するの面倒すぎる.

5月1日_

MASMのバグ?

vcvtpd1dqはgasだとxwordやywordで指定するのではなくニーモニックにxやyがつくのだった. 一覧とか無いかとvcvtpd1dqxでググったら最初に出てきたページは昔自分がobjdumpのバグ報告をしたやつだった.

MASMでxwordやywordをどうやって識別するのかいろいろ試したけど分からなかった. とりあえずフィードバックしてみた.


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