K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
> コード生成部分を作っています。基本部以外がほとんど新たなプログラムに >なっています。下にバイトコードの変更およびコードのディスアセンブラです。 > もしお時間が有りましたら見て、何か気になる点が有りますでしょうか? >--- 修正したバイトコード ------------ > {"push_int_4byte", "i", 1}, // 直接持に変更 > {"push_double_8byte", "d", 1}, // 直接持に変更 >// 今考えると、リアル値を持つのはまずい? >--- 追加したバイトコード ------------ > {"push_sysval_int", "s", 1}, // システムグローバル変数アクセス用 > {"push_sysval_double", "s", 1}, // > {"push_sysval_str", "s", 1}, // > {"pop_sysval_int", "s", -1}, // > {"pop_sysval_double", "s", -1}, // > {"pop_sysval_str", "s", -1}, // > >-------------------------------------------------------- >int main(int p1,int p2) >{ > string[] msg = { "asd","qwe","zzz"}; > int[] i1 = {1,2,65537}; > double d1; > d1 =3.1; >} >-------------------------------------------------------- > ↓ >コード生成後のダンプ > ↓ > ↓ 上のコード修正で、constデータは文字列だけになりました。 >-------------------------------------------------------- >1:*** 関数情報ダンプ ****************** >1:--- int main(int p1, int p2) >1:*** ローカル変数の表示 no = 3 *** >1: 0:string [] msg >1: 1:int [] i1 >1: 2:double d1 >1:*** 文字列定数 数 = 3 *** >1: 0: "asd" >1: 1: "qwe" >1: 2: "zzz" >1:*** 使用予定のスタックサイズ = 10 >1:*** 関数コードのディスアセンブラ size = 45 >1: 0 push_string_ptr 0 >1: 3 push_string_ptr 1 >1: 6 push_string_ptr 2 >1: 9 new_array_literal_object 3 >1: 12 pop_stack_object 2 >1: 15 push_int_1byte 1 >1: 17 push_int_1byte 2 >1: 19 push_int_4byte 65537 >1: 24 new_array_literal_int 3 >1: 27 pop_stack_int 3 >1: 30 push_double_8byte 3.100000e+000 >1: 39 pop_stack_double 4 >1: 42 push_int_1byte 0 >1: 44 return >1:*** 行情報 数 = 5 *** >1: 3: from 0 size 15 >1: 4: from 15 size 15 >1: 6: from 30 size 12 >1: 8: from 42 size 2 >1: 7: from 44 size 1 >1:*** end of main() -------------- >-------------------------------------------------------- >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!