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であることを判定できることも知った.
marp
markdownをプレゼン形式に変換してくれる.
「npx marp --preview s_xbyak.md」でリアルタイム表示. なかなか便利だ.
Pythonでfloat32
x64用主要アセンブラの構文差異クイズを書いた.
マニアックすぎるけど.
fmath::log
s_xbyakによるfmath::logのリライトが動き出した.
Intel SDM
s_xbyakのためにSDMからなんとかニーモニックのオペランド一覧を取得しようとしてるのだけど, 例外ケースが多くて難しい.
厳密マッチさせると結構取りこぼす. ゆるくマッチさせて余計なものを取り除く方がよさそう.
微調整
nasm/gas/masmの出力を見つつ修正が続く. macOSだけのアンダースコアの扱いが結構めんどい.
ripまわりの修正
xbyakと同じ仕様でなかったので修正.
MASMはrip指定が無いのか(常にrip?). なんかよう分からん.
二度寝
最近ずっと朝御飯を食べたら眠気が強くてまた寝てしまう. しんどい.
メモリに対するマスク
s_xbyakでvmovups ptr(rax)|k1, zmm0みたいな表記に対応した.
コーチャンフォー若葉台店
以前から気にはなっていたけど遠いので行かなかった巨大本屋に行ってみた.
駅前めちゃくちゃ広い. 何故か電気屋さんがいっぱい.
本屋もすごく広かった. ただBGMがジャズっぽくアレンジされたクラシック(?)などでうるさく感じた.
食べ物屋さんがドトールしか無くてこれだけ広いのだからもうちょっとあってもいいのに, 近場にも前々なさそうで残念だった.
gas/nasm/MASM
AVX-512のマスクレジスタやブロードキャストまわりの文法が思っていたよりそれぞれのアセンブラで異なっていた.
対応するの面倒すぎる.
MASMのバグ?
vcvtpd1dqはgasだとxwordやywordで指定するのではなくニーモニックにxやyがつくのだった.
一覧とか無いかとvcvtpd1dqxでググったら最初に出てきたページは昔自分がobjdumpのバグ報告をしたやつだった.
MASMでxwordやywordをどうやって識別するのかいろいろ試したけど分からなかった.
とりあえずフィードバックしてみた.