ページへ戻る

+ Links

− Comments

 印刷 

hideyosi​/hidetol8計画 :: OSASK計画

osaskwiki:hideyosi/hidetol8計画

さて・・・どうしたものか・・・w

これはかなり時間をかける予定。やりたいことがいっぱいあるからw

(途中であきらめてリリースする可能性大w)

Page Top

.g01計画 anchor.png

分かっているだけでもかなりのものがefg01対応化しており、さらにバージョンアップしているのでもう一気にg01(ようは最新となるはず)にあげちゃう!

(EXE化とかじゃなくて生粋の.g01化)

30日本.g0化
aksaaksa1aaksa
bim2g01--bim2g01
bim2hrbbim2hrbbim2hrb
bin2objbin2obj0bin2obj
bin2ucc--bin2ucc
cpy--cpy
cpyc--cpyc
gas2naskgas2naskgas2nask
golib00golib00golib00
makefntc--makefntc
makefntmakefntmakefnt
mtek2org--mtek2org
nasknasknask
naskconv0naskconv0naskconv0
obj2binobj2bi4cobj2bin
rjcg01--rjcg01
sjisconvsjisconvsjisconv
tekmin0--tekmin0
tekmin1--tekmin1
Page Top

独立パッケージ anchor.png

意図して孤立させているものは別。以下。

  • Asuka
  • bim2bin
  • edimg
  • t5lzma
  • qemu

qemuを除いて今回は前バージョンのまま

Page Top

バージョンアップ! anchor.png

  • qemuを最新の0.10.6に
  • UPXを最新に近いものに
Page Top

bim2binワンパック化 anchor.png

これが最大に厄介ではある。まず、lzma SDKを現行のものを使って5tlzmaを作り直す(PDSになるぞ!)。うまくいったらtek5圧縮部をbim2bin内に内臓してt5lzmaは廃止に。

Page Top

互換性維持を捨てる anchor.png

ファイル名を互換維持のために元のままにしてるよね。(aska.exeやnask.exe)

もうそれをやめちゃう。hidetol_6で在来物(OSASKやCD収録はりぼて)はコンパイルできるようにしてるんだから。

新しいものだってファイル名直せばそれで使える。それくらいは自分でやってちょ!

また、Win9x系列のものは廃止。どうしてもほしければhidetol_6使うかなんかして自分でやってちょ!

Page Top

Asuka Ver2.0計画 anchor.png

こんなこっといっいな♪ でっきた ら いーいな♪

今のAsukaはC++で作られてるので28GOではコンパイルできない。(これが別パッケージになってる理由)

・・・これさぁ・・・C化ってできないもんか???

そうすれば28GO_Kに収められるからすっきりするし、うまくいけば気をよくしたKタンが.g01化してくれたりなんかして???www

Page Top

さて実行してくか・・・ anchor.png

Page Top

28GO_G anchor.png

ここのソースはcpp0とcc1およびcc1plusが入ってるね。でさ・・・

こいつだけ、ソースがでかいんだよなぁ。ダウンロード実験の時、時間かかってしょうがない!(解凍も)

cc1plusが今後使われたり改良される可能性は限りなく低いんでね? 

なので、いっそ、ソース抜いちゃおうかとwww

せっかくなのでちょっと。28GOcppoに必要なファイル郡。

2010/01/25  15:36            18,137 auto-host.h
2010/01/25  15:36               896 config.h
2010/01/25  15:36             3,030 cppdefault.c
2010/01/25  15:36             3,507 cppdefault.h
2010/01/25  15:36             8,405 cpperror.c
2010/01/25  15:36            26,987 cppexp.c
2010/01/25  15:36            35,075 cppfiles.c
2010/01/25  15:36             4,075 cpphash.c
2010/01/25  15:36            16,370 cpphash.h
2010/01/25  15:36            66,928 cppinit.c
2010/01/25  15:36            59,246 cpplex.c
2010/01/25  15:36            54,627 cpplib.c
2010/01/25  15:36            23,283 cpplib.h
2010/01/25  15:36            48,283 cppmacro.c
2010/01/25  15:36            14,156 cppmain.c
2010/01/25  15:36            15,671 defaults.h
2010/01/25  15:36           111,857 except.c
2010/01/25  15:36             7,648 except.h
2010/01/25  15:36             8,669 hashtable.c
2010/01/25  15:36             3,144 hashtable.h
2010/01/25  15:36             4,921 hwint.h
2010/01/25  15:36               207 insn-constants.h
2010/01/25  15:36            91,249 insn-flags.h
2010/01/25  15:36             1,412 intl.c
2010/01/25  15:36             1,579 intl.h
2010/01/25  17:09            97,072 libcpp.lib
2010/01/25  15:36             6,517 line-map.c
2010/01/25  15:36             4,948 line-map.h
2010/01/25  16:41             4,690 Makefile
2010/01/25  15:36             9,877 mbchar.c
2010/01/25  15:36             1,606 mbchar.h
2010/01/25  15:36             6,662 mkdeps.c
2010/01/25  15:36             2,734 mkdeps.h
2010/01/25  15:36             8,068 prefix.c
2010/01/25  15:36             1,226 prefix.h
2010/01/25  15:36            17,680 system.h
2010/01/25  15:36               173 version.c
2010/01/25  15:36               118 version.h

28GOcc1に必要なの・・・

2010/01/25  15:36            82,996 alias.c
2010/01/25  15:36            42,362 attribs.c
2010/01/25  15:36            18,137 auto-host.h
2010/01/25  15:36            26,469 basic-block.h
2010/01/25  15:36             7,203 bb-reorder.c
2010/01/25  15:36            19,389 bitmap.c
2010/01/25  15:36            12,411 bitmap.h
2010/01/25  15:36             6,781 builtin-attrs.def
2010/01/25  15:36             8,218 builtin-types.def
2010/01/25  15:36           130,313 builtins.c
2010/01/25  15:36            16,728 builtins.def
2010/01/25  15:36            22,535 c-aux-info.c
2010/01/25  15:36           134,692 c-common.c
2010/01/25  15:36             5,090 c-common.def
2010/01/25  15:36            34,570 c-common.h
2010/01/25  15:36             4,149 c-convert.c
2010/01/25  15:36           249,039 c-decl.c
2010/01/25  15:36             1,417 c-errors.c
2010/01/25  15:36            85,124 c-format.c
2010/01/25  15:36             3,729 c-lang.c
2010/01/25  15:36            41,367 c-lex.c
2010/01/25  15:36             1,209 c-lex.h
2010/01/25  15:36            10,356 c-objc-common.c
2010/01/25  15:36           214,224 c-parse.c
2010/01/25  15:36            14,136 c-pragma.c
2010/01/25  15:36             1,977 c-pragma.h
2010/01/25  15:36            22,266 c-semantics.c
2010/01/25  15:36            16,157 c-tree.h
2010/01/25  15:36           227,906 c-typeck.c
2010/01/25  15:36            27,628 caller-save.c
2010/01/25  15:36           155,730 calls.c
2010/01/25  15:36            18,009 cfg.c
2010/01/25  15:36            33,698 cfganal.c
2010/01/25  15:36            26,098 cfgbuild.c
2010/01/25  15:36            53,518 cfgcleanup.c
2010/01/25  15:36            15,265 cfglayout.c
2010/01/25  15:36             1,326 cfglayout.h
2010/01/25  15:36            23,575 cfgloop.c
2010/01/25  15:36            58,697 cfgrtl.c
2010/01/25  15:36           444,322 combine.c
2010/01/25  18:21           103,133 combine.o
2010/01/25  15:36             4,742 conditions.h
2010/01/25  15:36               896 config.h
2010/01/25  15:36            15,670 conflict.c
2010/01/25  15:36            15,428 convert.c
2010/01/25  15:36             1,076 convert.h
2010/01/25  15:36             3,030 cppdefault.c
2010/01/25  15:36             3,507 cppdefault.h
2010/01/25  15:36             8,405 cpperror.c
2010/01/25  15:36            26,987 cppexp.c
2010/01/25  15:36            35,075 cppfiles.c
2010/01/25  15:36             4,075 cpphash.c
2010/01/25  15:36            16,370 cpphash.h
2010/01/25  15:36            66,928 cppinit.c
2010/01/25  15:36            59,246 cpplex.c
2010/01/25  15:36            54,627 cpplib.c
2010/01/25  15:36            23,283 cpplib.h
2010/01/25  15:36            48,283 cppmacro.c
2010/01/25  15:36           250,371 cse.c
2010/01/25  15:36            37,913 cselib.c
2010/01/25  15:36             2,309 cselib.h
2010/01/25  15:36            90,174 dbxout.c
2010/01/25  15:36             1,021 dbxout.h
2010/01/25  15:36             2,540 debug.c
2010/01/25  15:36             6,059 debug.h
2010/01/25  15:36            15,671 defaults.h
2010/01/25  15:36            42,172 dependence.c
2010/01/25  15:36           102,761 df.c
2010/01/25  15:36            11,361 df.h
2010/01/25  15:36            44,015 diagnostic.c
2010/01/25  15:36               373 diagnostic.def
2010/01/25  15:36            12,814 diagnostic.h
2010/01/25  15:36            29,278 doloop.c
2010/01/25  15:36            19,709 dominance.c
2010/01/25  15:36            17,346 dwarf2.h
2010/01/25  15:36            25,376 dwarf2asm.c
2010/01/25  15:36             2,931 dwarf2asm.h
2010/01/25  15:36           379,147 dwarf2out.c
2010/01/25  15:36             1,285 dwarf2out.h
2010/01/25  15:36           237,178 dwarfout.c
2010/01/25  15:36           142,702 emit-rtl.c
2010/01/25  15:36             1,718 errors.h
2010/01/25  15:36           111,857 except.c
2010/01/25  15:36             7,648 except.h
2010/01/25  15:36            48,759 explow.c
2010/01/25  15:36           156,841 expmed.c
2010/01/25  15:36           347,971 expr.c
2010/01/25  15:36            31,879 expr.h
2010/01/25  15:36           112,995 final.c
2010/01/25  15:36            21,210 flags.h
2010/01/25  15:36           133,678 flow.c
2010/01/25  15:36           251,287 fold-const.c
2010/01/25  15:36           255,535 function.c
2010/01/25  15:36            25,033 function.h
2010/01/25  15:36             5,278 gcov-io.h
2010/01/25  15:36           208,910 gcse.c
2010/01/25  15:36            17,972 genrtl.c
2010/01/25  15:36            20,016 genrtl.h
2010/01/25  15:36            19,592 ggc-common.c
2010/01/25  15:36            43,400 ggc-page.c
2010/01/25  15:36             9,290 ggc.h
2010/01/25  15:36            63,318 global.c
2010/01/25  15:36            11,192 graph.c
2010/01/25  15:36             1,099 graph.h
2010/01/25  15:36               229 gstab.h
2010/01/25  15:36             1,315 gsyms.h
2010/01/25  15:36            61,982 haifa-sched.c
2010/01/25  15:36            17,723 hard-reg-set.h
2010/01/25  15:36             5,597 hash.c
2010/01/25  15:36             4,868 hash.h
2010/01/25  15:36             8,669 hashtable.c
2010/01/25  15:36             3,144 hashtable.h
2010/01/25  15:36             1,352 hooks.c
2010/01/25  15:36             1,096 hooks.h
2010/01/25  15:36             4,921 hwint.h
2010/01/25  15:36           389,761 i386.c
2010/01/25  15:36            81,451 ifcvt.c
2010/01/25  15:36             1,695 input.h
2010/01/25  15:36             1,793 insn-addr.h
2010/01/25  15:36             4,592 insn-attr.h
2010/01/25  15:36           988,099 insn-attrtab.c
2010/01/25  15:36            16,626 insn-codes.h
2010/01/25  15:36               412 insn-config.h
2010/01/25  15:36               207 insn-constants.h
2010/01/25  15:36           413,064 insn-emit.c
2010/01/25  15:36            69,072 insn-extract.c
2010/01/25  15:36            91,249 insn-flags.h
2010/01/25  15:36            22,918 insn-opinit.c
2010/01/25  15:36           431,045 insn-output.c
2010/01/25  15:36               671 insn-peep.c
2010/01/25  15:36         1,227,452 insn-recog.c
2010/01/25  15:36           105,432 integrate.c
2010/01/25  15:36             8,435 integrate.h
2010/01/25  15:36             1,412 intl.c
2010/01/25  15:36             1,579 intl.h
2010/01/25  15:36            65,669 jump.c
2010/01/25  15:36             6,775 langhooks-def.h
2010/01/25  15:36             8,286 langhooks.c
2010/01/25  15:36             6,933 langhooks.h
2010/01/25  15:36            44,758 lcm.c
2010/01/25  18:55         4,646,954 libbackend.lib
2010/01/25  18:09            97,072 libcpp.lib
2010/01/25  15:36             8,342 libfuncs.h
2010/01/25  15:36             6,517 line-map.c
2010/01/25  15:36             4,948 line-map.h
2010/01/25  15:36             4,091 lists.c
2010/01/25  15:36            80,898 local-alloc.c
2010/01/25  15:36           334,496 loop.c
2010/01/25  15:36            16,555 loop.h
2010/01/25  15:36             8,939 machmode.def
2010/01/25  15:36             5,995 machmode.h
2010/01/25  15:36             9,877 mbchar.c
2010/01/25  15:36             1,606 mbchar.h
2010/01/25  15:36             6,662 mkdeps.c
2010/01/25  15:36             2,734 mkdeps.h
2010/01/25  15:36           157,341 optabs.c
2010/01/25  15:36            10,819 optabs.h
2010/01/25  15:36               181 options.h
2010/01/25  15:36            21,825 output.h
2010/01/25  15:36             2,342 params.c
2010/01/25  15:36             4,002 params.def
2010/01/25  15:36             3,209 params.h
2010/01/25  15:36            29,598 predict.c
2010/01/25  15:36             4,220 predict.def
2010/01/25  15:36             1,511 predict.h
2010/01/25  15:36             8,068 prefix.c
2010/01/25  15:36             1,226 prefix.h
2010/01/25  15:36            18,933 print-rtl.c
2010/01/25  15:36            23,194 print-tree.c
2010/01/25  15:36            36,306 profile.c
2010/01/25  15:36           151,319 real.c
2010/01/25  15:36            17,686 real.h
2010/01/25  15:36            92,753 recog.c
2010/01/25  15:36             9,783 recog.h
2010/01/25  15:36            84,991 reg-stack.c
2010/01/25  15:36            80,443 regclass.c
2010/01/25  15:36            76,217 regmove.c
2010/01/25  15:36            54,158 regrename.c
2010/01/25  15:36             8,897 regs.h
2010/01/25  15:36           238,998 reload.c
2010/01/25  15:36            15,136 reload.h
2010/01/25  15:36           320,221 reload1.c
2010/01/25  15:36           127,333 reorg.c
2010/01/25  15:36            40,868 resource.c
2010/01/25  15:36             2,108 resource.h
2010/01/25  15:36             4,157 rtl-error.c
2010/01/25  15:36            19,617 rtl.c
2010/01/25  15:36            46,315 rtl.def
2010/01/25  15:36            85,494 rtl.h
2010/01/25  15:36            78,912 rtlanal.c
2010/01/25  15:36            13,432 sbitmap.c
2010/01/25  15:36             5,692 sbitmap.h
2010/01/25  15:36            48,960 sched-deps.c
2010/01/25  15:36             9,715 sched-ebb.c
2010/01/25  15:36            12,684 sched-int.h
2010/01/25  15:36            91,622 sched-rgn.c
2010/01/25  15:36            23,861 sched-vis.c
2010/01/25  15:36            53,060 sdbout.c
2010/01/25  15:36               925 sdbout.h
2010/01/25  15:36            23,901 sibcall.c
2010/01/25  15:36            83,363 simplify-rtx.c
2010/01/25  15:36            37,727 ssa-ccp.c
2010/01/25  15:36            22,962 ssa-dce.c
2010/01/25  15:36            66,530 ssa.c
2010/01/25  15:36             2,616 ssa.h
2010/01/25  15:36             9,369 stab.def
2010/01/25  15:36           197,862 stmt.c
2010/01/25  15:36            67,272 stor-layout.c
2010/01/25  15:36             4,854 stringpool.c
2010/01/25  15:36            17,680 system.h
2010/01/25  15:36             7,154 target-def.h
2010/01/25  15:36             8,282 target.h
2010/01/25  15:36               578 timevar.h
2010/01/25  15:36             2,779 tm-preds.h
2010/01/25  15:36               122 tm_p.h
2010/01/25  15:36           159,578 toplev.c
2010/01/25  15:36             5,483 toplev.h
2010/01/25  15:36            15,536 tree-check.h
2010/01/25  15:36            24,157 tree-dump.c
2010/01/25  15:36             2,965 tree-dump.h
2010/01/25  15:36            47,099 tree-inline.c
2010/01/25  15:36             1,592 tree-inline.h
2010/01/25  15:36           138,337 tree.c
2010/01/25  15:36            41,525 tree.def
2010/01/25  15:36           131,273 tree.h
2010/01/25  15:36               481 typeclass.h
2010/01/25  15:36           148,071 unroll.c
2010/01/25  15:36           152,960 varasm.c
2010/01/25  15:36             2,865 varray.c
2010/01/25  15:36            11,029 varray.h
2010/01/25  15:36               173 version.c
2010/01/25  15:36               118 version.h
2010/01/25  15:36            55,043 vmsdbgout.c
2010/01/25  15:36            25,660 winnt.c
2010/01/25  15:36            13,860 xcoffout.c

いらないと思われるファイル達。

cpディレクトリ内
2010/01/25  15:34           176,585 call.c
2010/01/25  15:34            15,048 cfns.h
2010/01/25  15:34           255,601 class.c
2010/01/25  15:34             4,299 cp-lang.c
2010/01/25  15:34            11,975 cp-tree.def
2010/01/25  15:34           190,445 cp-tree.h
2010/01/25  15:34            39,521 cvt.c
2010/01/25  15:34           466,028 decl.c
2010/01/25  15:34             2,005 decl.h
2010/01/25  15:34           162,934 decl2.c
2010/01/25  15:34            11,308 dump.c
2010/01/25  15:34            78,045 error.c
2010/01/25  15:34            25,427 except.c
2010/01/25  15:34             3,843 expr.c
2010/01/25  15:34            14,078 friend.c
2010/01/25  15:34           107,563 init.c
2010/01/25  15:34            47,149 lex.c
2010/01/25  15:34             3,410 lex.h
2010/01/25  15:34               329 Makefile
2010/01/25  15:34            73,898 mangle.c
2010/01/25  15:34            32,018 method.c
2010/01/25  15:34             6,174 operators.def
2010/01/25  15:34             9,936 optimize.c
2010/01/25  15:34           442,688 parse.c
2010/01/25  15:34             2,361 parse.h
2010/01/25  15:34           322,662 pt.c
2010/01/25  15:34             6,496 ptree.c
2010/01/25  15:34            10,533 repo.c
2010/01/25  15:34            45,877 rtti.c
2010/01/25  15:34            82,452 search.c
2010/01/25  15:34            73,561 semantics.c
2010/01/25  15:34            42,716 spew.c
2010/01/25  15:34            70,234 tree.c
2010/01/25  15:34           219,474 typeck.c
2010/01/25  15:34            42,890 typeck2.c

gccディレクトリ内
2010/01/25  15:36            12,446 cppmain.n
2010/01/25  15:36            10,559 dwarf.h
2010/01/25  15:36             3,024 halfpic.h
2010/01/25  15:36             1,514 stack.h
2010/01/25  15:36             6,913 vmsdbg.h
2010/01/25  15:36             8,004 xcoffout.h

総ソース18MBが3MB近く減ったぞw これでいっちゃうかw

あと、生成されるものも、cc1・cpp0から、28GOcc1・28GOcpp0に名前変更~。 宣言通り、もう互換性とかは基本無視しまするw

Page Top

28GO_K anchor.png

まず、いくつかのものが.g01化してるので当然efg01相当がいるよね。 h_efg01とかってかなりグレーなので、近々Usageとかを搭載して、hijk Ver1.7をリリースして、これを載せる予定。

Page Top

aksa anchor.png

とりあえずソースをg01のものに入れ替え。

コンパイル実験はまだでけた。ついでに名前もakusAに変更。

バージョン表記搭載まだなんだけど・・・なんぞこれ? この異常に複雑なUsage表示!??

・・・まいったなぁ・・・Usageのメッセージなんぞでかく占めたくないってんで複雑な関数になってる。efg01側の解析からやらにゃならん。どうしたもんだこれ・・・

static unsigned char cmdusg[] = {                     ベタ書きに変換!
	0x86, 0x50,                                        0x86, 0x5c, 0,
		0x88,                                            0x88,              in:input-file
		0x02, 'o', 'f', 's', 0x11, '#',                  0x0c, 2, 'o', 'f', 's', 0x1c, 1, '#',   
		0x11, '-', 'r', 0x20,                            0x1c, 1, '-', 'r', 0x20,
		0x02, 'e', 'i', 'p', 0x11, '#',                  0x0c, 2, 'e', 'i', 'p', 0x1c, 1, '#',
		0x00, 'd', 0x11, '#',                            0x0c, 0, 'd', 0x1c, 1, '#',
		0x02, 'l', 'i', 'n', 0x11, '#',                  0x0c, 2, 'l', 'i', 'n', 0x1c, 1, '#',
	0x40                                                  0x40
};

ばんざーい! 解析できたーーーーー!!!!!

・・・バージョン表記はefg01側で考えないといけないのね・・・・・・・orz

結論!!! 今回はバージョン表記は見送りまする。まずhidetol_8で完成させて、次回にhijkの内部をイジってなんとかしまるす。(それしかなさそうだもんなぁ~)

Page Top

bim2g01 anchor.png

追加した。

でけた!

Page Top

bim2hrb anchor.png

乗せかえた。

でけた!

Page Top

bim2obj anchor.png

乗せかえた。

でけた!

Page Top

bim2ucc anchor.png

追加。

でけた!

Page Top

cpyとcpyc anchor.png

追加。

でけた!

Page Top

gas2nask anchor.png

追加。同時にtools*とfunc内のgas2nask関連のものを削除

でけた!

Page Top

golib00 anchor.png

追加。同時にtools*とfunc内のgolib00関連のものを削除

でけた!

Page Top

makefontc anchor.png

名前が違うな・・・追加。同時にmakefontを削除

でけた!

makefntcを採用。aska版はまた今度・・・

Page Top

mtek2org anchor.png

追加。

でけた!

Page Top

Nasuka anchor.png

追加。同時にtools*とfunc内のnask関連のものを削除

でけた!

Page Top

naskconv0 anchor.png

追加。同時にtools*とfunc内のnaskconv関連のものを削除

でけた!

Page Top

obj2bim anchor.png

載せ変え。同時にautodec関連のものを削除

でけた!

Page Top

rjcg01 anchor.png

追加。

でけた!

Page Top

sjisconv anchor.png

追加。同時にtools*とfunc内のsjisconv関連のものを削除

でけた!

Page Top

toolstdc・toolw32 anchor.png

このディレクトリは空になったので削除

Page Top

g01libcとg01libc1 anchor.png

内部にはオブジェクトファイルあり。ライセンスの確認が必要なので棚上げ

  • g01libc内の_chkstk.oは例の条件付GPLのヤツと同一であることを確認。なので、在来の28GO_G内のものを流用してくみ上げるよう、インストーラーを工夫する。(つかり28GO_Kからは除外する)
  • g01libc1内のものはみんなKタン作であることを確認。(考えてみれば、.nasや.askを書くヒトなんてKタンくらいではなかろうかとwww)
Page Top

gas2naskに例の問題が? anchor.png

g01化された最新(たぶん)のgas2naskに例の

skip:adcl       %edx, 20(%ecx)
skip:adcl       %edx, 20(%esi)

エラーが出ることが判明。これを修理。

その意味では初のg01アプリのバージョンアップwつーことになるかな? www

・・・あれ? 前のと違うじゃんこれ!

Page Top

検証 anchor.png

以前にも似たバグがあった。今、手動でbim2bin.cを中間コンパイルしてbim2bin.gasを作ってみた。みてみると・・・

あったあった。二箇所。 つまり、上記のエラーは、gas2naskが 「そんなオペランド知らんぞ!訳せないぞ!」とこういっているわけ。っということは、GASのオペランドと、Nasuku(NASM互換?)のオペランドをつき合わせて書いてあげればいい・・・ということかな???

(前回と違い、今回はgas2naskのソースは最新。うへぇ~! こまったぁ・・・・)

これはようするに、i386 CPUのオペランドとニーモニックの一覧表がないとどーしよーもないぞおぉぉ!!! orz

だれかそういうのの載ってるURL教えてけれ!!

ググっても全然みつからないよ・・・orz・・・

Page Top

手がかりがあったぞ anchor.png

adclは、拡張加減算と呼ばれるものらしい。

・・・やっとこさ、NASMの解説サイトを見つけたんだが・・・・

http://ryujin.kuis.kyoto-u.ac.jp/~nobu/study/nasm/nasm.html

これからこれを読むのか・・・頭クラクラしてきた・・・

Page Top

お得意のやっつけ変化球 anchor.png

実験的にadclの行を抜いてgas2naskしてみた。するってーと、Nasukaとしてはこんな文法になることがわかった。

_rc_encode0:                               _rc_encode0:
	pushl	%ebp                           	PUSH	EBP
	movl	%esp, %ebp                     	MOV	EBP,ESP
	movl	8(%ebp), %ecx                  	MOV	ECX,DWORD [8+EBP]
	shrl	4(%ecx)                        	SHR	DWORD [4+ECX],1
	cmpl	$0, 12(%ebp)                   	CMP	DWORD [12+EBP],0
	jne	L4079                              	JNE	L4079
	movl	4(%ecx), %eax                  	MOV	EAX,DWORD [4+ECX]
	xorl	%edx, %edx                     	XOR	EDX,EDX
	addl	%eax, 16(%ecx)                 	ADD	DWORD [16+ECX],EAX
;	adcl	%edx, 20(%ecx)
L4079:                                     L4079:
	movl	4(%ecx), %eax                  	MOV	EAX,DWORD [4+ECX]
	cmpl	$16777215, %eax                	CMP	EAX,16777215

また、adcl、そしてそれに良く似たaddl命令の働きがわかって来た。上記の例で解る通り、addlはgas2naskで翻訳できていて、さらにそのパターンがわかる!

 GASソース Nasuka(NASM風)ソース
addl命令 addl  %eax  16(%ecx)  ADD  DWORD[16+ECX] EAX

これらの比較から、まだ未確認だがこういう予測が立ってきた・・・

  • 多くの命令は、GASの場合、おケツにlが付いているだけ。
  • 第一オペランドと第二オペランドが逆

・・・つーことはだよ? x86に、ADCという命令がダイレクトにあれば、addl(ADD)と同じ翻訳でいいんでないのか?これ????

Page Top

出ました!乱暴者!!! anchor.png

どうもx86には、ADCという命令はあるっぽい(まだ、調べきっていないのだが)。・・・だったらさぁ・・・・

さっき出来た.nasに、手書きでADC命令を書きこんでNasukaにかけ、bim2binをでっち上げてみる!!!!

さぁ!動くか!? うごくのかあぁぁぁぁ!!!!

動いちゃうんだからやめられないよなホントwwww

  •  -osacmp -tek0 正常動作。出力ファイルに違いがない!
  •  -osacmp -tek1 正常動作。出力ファイルに違いがない!
  •  -osacmp -tek5 正常動作。出力ファイルに違いがない!

完璧だ・・・私は完璧だ! 今日から戦闘力10万の完璧超人を名乗らせてもらおう!! 

Page Top

貴様風情に北斗1800年の歴史を極めることなどできない anchor.png

・・・でさ・・・gas2naskどうすんのよ・・

・・・・・・・・・・・・・orz・・・・・・・・・・・・・・・

さてgas2naskのソースを眺めてると、acDl(ADD)命令の定義が二箇所ある。さらに各々の定義部に、one_param、tow_paramという名前がつけられている。

・・・これは、オペランドが一個しかないもの、2個あるものっていう定義なのだろうか? もしそうなら、addl命令は、オペランドがひとつの場合と二つの場合があり、3つってのはない・・・そうなるが・・・

ふむ。大体合ってると思う。one_param内にはCALLやJPがあるが、tow_param内にはないし。

しかしそうなると、ADDにはオペランドが一個っていう場合がある・・・のかなぁ。そういう用法が見つからない。むむむ・・・

あぁぁぁっと!勘違いだ! ADDにはパラメータ一個は存在しない! それは、FADDだ!!

うーん・・・ADDに対してFADDはFPUを使っての命令・・・と。で、その場合はパラメータ一個もありうる・・・(まだ未確認)

しかし、逆に、これのCF関連命令であるADCに、FADCっていう命令はみつからないぞ? もしかしてない??

たぶんこれで合っているはず。adcl(ADC)命令には、パラメータ一個のパターンは存在しない!!!!

なので、たぶん、adclの定義はtwo_param内に追加すればいいはず!

Page Top

ソース内の定義の意味は? anchor.png

gas2naskのソース内では、たとえばaddlの場合、

		"1addb    ADD",
		"4addl    ADD",
		"2addw    ADD",

こんなことをしている。先頭の数値とお尻の一文字。これはどういう意味なんだろう?? お尻はほとんど関係なくADDに翻訳されているんだが、頭の数値はなんだんだろうこれ・・・

Page Top

いけた?でもわかんねw anchor.png

		"1addb    ADD",
		"4addl    ADD",
		"2addw    ADD",
		"4adcl    ADD",

もうわっかんないので無理やりこんなことしてみたら、ちゃんと.nasが正しく出力されたぞ?? いいのか? 本当にこれでいいのか???www

Page Top

復帰~ anchor.png

うーん・・・思うところもあるけど、本来の目的であるhidetol_8を完成させる観点から、ちょっとこれで突き進めちゃおう・・・

(どーせこれは、GOでもなんでもない。28GOであり、hidetolなんだから・・・<オープン アゲイン!!!

Page Top

そんなわけで第一期完成 anchor.png

実行ファイル

[添付]

ソース

[添付]

まだOSASKもなんもコンパイルしてません・・・自分自身のソースを自分でコンパイルできるようになったってレベル

Page Top

OSASKコンパイル anchor.png

・・・ダメでした・・・orz・・・

で、問題を検証してみたんだけど、どうもpokonがおかしい。で、どの段階でおかしいかってーと、obj2bimだってことが解った。pokon0.objまでの段階ではまったく同じバイナリなんだけど、こいつをobj2bimでpokon0.bimにすると違いが出ちゃう。

  • 差を見てみると、なんとかくだけど規則的に差が出ているように見える・・・
  • そもそも、ほんのわずかだけど、サイズが異なる

でね。こりゃ、obj2bimがバグってるのかぁ?っていうと、winman0ではこれが起きてないんだよなぁ・・・(winman0はこの後のbinでもまったく同じバイナリになってる)

・・・どゆことなんだべか???

おぉぉっとぉ! 動いたぞ!!!

二つの差。それは、rulファイル(各々専用)。ちょっとヤマカンでやってみたのよ。mak_pk0.txtを!

元々のmak_pl0.txt     こうしますた!
STK_PK_AT = 1m        STK_PK_AT = 64k
STK_PK_TW = 1m       STK_PK_TW = 64k
STK_PK_NE = 1m       STK_PK_NE = 64k

これでコンパイルかけてみた。やっぱり同じにはならないんだけど、サイズが揃ったんだよね。で、runしてみるってーと・・・ジャジャ~ン!!! 

オレは天才だあぁぁぁ! どんな言語もたちどころに習得できるのに、誰も奥義を授けようとはしなかったあぁ!!!

Page Top

はりぼて anchor.png

こーっちもイケたぞおぉぉ!!!

リリース近し!! w

Page Top

qemuが起動しないミス anchor.png

例によってhikarupspさんが見つけてくれた!!

qemuの起動に問題があったので一部やり直しました。

[添付]
Page Top

リリース向け準備 anchor.png

たぶんもう問題はないと思う。リリースに向けて最後の準備。

で!

この版ではコマンドそのものやパラメータがいろいろ変化していて、hidetol_7みたいにOSASKやはりぼてでチェックができない。(あちこち直さないといけない)

Linuxとかならpatchを流せばいいんだけどWinの場合はねぇ・・・

そんなわけで、とりあえずご用意。

Page Top

OSASK4.7の代替 anchor.png

ここからOSAKA Ver4.7を落としてくださいな。OSAKAはOSASKからの派生物。で、なに派生したかって、なーんにも変化していないというwww

コイツはhidetol_8で一発コンパイルできるようにMakefile関係だけをイジってあると考えていただければ。

Page Top

はりぼての代替 anchor.png

[添付]

こいつは「30日で出来る!OS自作入門」付属CD-ROM内の、30日目の最後のソースに、hidetol_8でコンパイルできるようにMakefileやらなんやらを改造したもの。以下ね。

harib27_x
   ├app_mak.txt
   ├apilib
   │    └Makefile
   ├haribote
   │    └Makefile
   └gvuiew
         └Makefile
Page Top

リリース完了! ('10/2/1) anchor.png

リリースが完了しましたので、このページは凍結♪ 添付も引っこ抜きます。以降はこちらにて。


一般用コメント一覧

  • "4adcl ADC", としてください。  --  K-tan   2010/1/30 14:03
  • 今ちょっと忙しいので、説明がなくてごめんなさい。  --  K-tan   2010/1/30 14:04
  • Kタンご指摘ありがとうございます。Wikiのほうを書き間違えていただけでしたorz。ちゃんとADCになってます。ご心配おかけしました m(x x)"m  --  lina   2010/2/1 14:57
このページは匿名コメントが拒否されています。

Last-modified: 2010-02-05 (金) 00:00:00 (JST) (319d) by lina