トップページ > プログラム > 2015年05月05日 > p1RbtT4Y

書き込み順位&時間帯一覧

4 位/183 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000100032100018



使用した名前一覧書き込んだスレッド一覧
片山博文MZ ◆T6xkBnTXz7B0
デフォルトの名無しさん
逆コンパイラCodeReverseを作る
C言語なら俺に聞け(入門編)Part 127©2ch.net
「コンパイラ・スクリプトエンジン」相談室16

書き込みレス一覧

逆コンパイラCodeReverseを作る
291 :片山博文MZ ◆T6xkBnTXz7B0 [sage]:2015/05/05(火) 13:34:39.52 ID:p1RbtT4Y
CPU貸そうか?
C言語なら俺に聞け(入門編)Part 127©2ch.net
656 :デフォルトの名無しさん[sage]:2015/05/05(火) 17:24:29.20 ID:p1RbtT4Y
>>654
アドレス
逆コンパイラCodeReverseを作る
292 :片山博文MZ ◆T6xkBnTXz7B0 [sage]:2015/05/05(火) 17:34:29.60 ID:p1RbtT4Y
CPUレジスターや仮想的なアドレス空間の任意の抽象的な場所にアクセスするための全射なアドレスを文字列で表現する。
expressed address、略してexpr_addr。
expr_addrを解決すると未知の値、シンボル、もしくは具体的な値が得られる。
また、expr_addrから型の集合への写像を作ることができる。
逆コンパイラCodeReverseを作る
293 :片山博文MZ ◆T6xkBnTXz7B0 [sage]:2015/05/05(火) 17:47:11.75 ID:p1RbtT4Y
値の集合とシンボルの集合と型の集合が存在する。
値やシンボルはその格納場所(storage)によって類別できる。
格納場所は、スタック、ヒープ、レジスター、実行可能コード領域、その他のデータ領域などが挙げられる。
expr_addrから値やシンボルへの写像が存在する。
expr_addrから格納場所への写像が存在する。
逆コンパイラCodeReverseを作る
294 :片山博文MZ ◆T6xkBnTXz7B0 [sage]:2015/05/05(火) 18:06:31.59 ID:p1RbtT4Y
では、expr_addrの具体的な定義を決めよう。
(ea.1) expr_addrが数値ならばexpr_addrはexpr_addrが表す値の仮想アドレスを指し示す。
(ea.2) expr_addrがレジスターの名前ならばexpr_addrはそのレジスターの値が表す仮想アドレスを指す。
(ea.3) expr_addrが__cr.xxx[yy]といった文字列ならば、__cr.の後のxxxはストレージの名前であり、expr_addrはストレージxxxの(yy+1)バイト目を指し示す。
ここに、yyはexpr_addrである。
(ea.4) expr_addrに演算子+,-,*が含まれていれば、普通にexpr_addr上で足し算、引き算、掛け算を行う。
逆コンパイラCodeReverseを作る
295 :片山博文MZ ◆T6xkBnTXz7B0 [sage]:2015/05/05(火) 18:49:16.52 ID:p1RbtT4Y
x86/x64のスタックは逆向きに成長するから、__cr.stackは特別扱いしなければならない。
逆コンパイラCodeReverseを作る
296 :片山博文MZ ◆T6xkBnTXz7B0 [sage]:2015/05/05(火) 19:59:48.40 ID:p1RbtT4Y
>>295は間違い。昔はメモリーをけちるのが常だったが、
今となっては、スタックサイズ100KBくらいけちる必要はない。
たとえ失敗してもスタックサイズが可変ならば、やり直せばいい。
「コンパイラ・スクリプトエンジン」相談室16
228 :片山博文MZ ◆T6xkBnTXz7B0 []:2015/05/05(火) 23:02:55.34 ID:p1RbtT4Y
コンパイラーの品質保証は、数学で証明する時代だ!!!
Coqと数学でコンパイラーが作れる!!!
http://compcert.inria.fr/compcert-C.html


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。