2016-09-01から1ヶ月間の記事一覧

自作エミュレータで学ぶx86アーキテクチャ 3.10 条件分岐命令

https://github.com/mas454/x86emujc、jz、joなどの命令はフラグレジスタの値を元にジャンプするかどうかを 判断しています。 (define (make-jx is-flag) (lambda (emu) (if (is-flag emu) (eip-add emu (+ (get-sign-code8 emu 1) 2)) (eip-add emu 2)))) m…

自作エミュレータで学ぶx86アーキテクチャ 3.10 cmp

https://github.com/mas454/x86emu (define (cmp-r32-rm32 emu) (let ([modrm (make <modrm>)]) (parse-modrm emu modrm) (let* ([r32 (get-r32 emu modrm)] [rm32 (get-rm32 emu modrm)] [result (+ r32 (num32->2complement rm32))]) (update-eflags-sub emu r32 </modrm>…