THINK

note: 自作x86エミュレータ

12/6/2020

前回のend of program後に EBPの値が0にならないのはバグでした。

neg

これを書いてる時点で3章12節まで進めているんですが、 前回の endbr64同様に本書では紹介されていない命令が出てきたので...
Intelマニュアルによると指定したレジスタを2の補数で置換する命令とのことだったので、サクッと実装(フラグ周りの変更は放置中)

色々バグ

32bitsに対して8bitsの値を入れているために上24bitsが0埋めになることによるバグが潜んでいたので... (後はoverflowとか)
C言語って2の補数のマイナス値をu8 -> u32したときに0埋めではなく1埋めになるんですかね? (あとCPUも)
ndisasm使って眺めて見ても上位24bitsに対して何かしているように見えず... (なんででしょう)

Rustだからか、値の扱いが色々と難しい(適当に扱えない)