ページへ戻る

− Links

+ Comments

 印刷 

hideyosi​/hidetol8計画 :: OSASK計画

osaskwiki:hideyosi/hidetol8計画

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

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

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

ページ内コンテンツ
  • 構想
    • .g01計画
    • 独立パッケージ
    • バージョンアップ!
    • bim2binワンパック化
    • 互換性維持を捨てる
  • Asuka Ver2.0計画
  • さて実行してくか・・・
    • 28GO_G
    • 28GO_K
      • aksa
      • bim2g01
      • bim2hrb
      • bim2obj
      • bim2ucc
      • cpyとcpyc
      • gas2nask
      • golib00
      • makefontc
      • mtek2org
      • Nasuka
      • naskconv0
      • obj2bim
      • rjcg01
      • sjisconv
      • toolstdc・toolw32
      • g01libcとg01libc1
  • gas2naskに例の問題が?
    • 検証
    • 手がかりがあったぞ
    • お得意のやっつけ変化球
    • 出ました!乱暴者!!!
    • 貴様風情に北斗1800年の歴史を極めることなどできない
    • ソース内の定義の意味は?
  • いけた?でもわかんねw
  • 復帰~
  • そんなわけで第一期完成
    • OSASKコンパイル
    • はりぼて
    • qemuが起動しないミス
  • リリース向け準備
    • OSASK4.7の代替
    • はりぼての代替
  • リリース完了! ('10/2/1)

構想 anchor.png[1]

Page Top

.g01計画 anchor.png[2]

分かっているだけでもかなりのものが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[3]

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

  • Asuka
  • bim2bin
  • edimg
  • t5lzma
  • qemu

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

Page Top

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

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

bim2binワンパック化 anchor.png[5]

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

Page Top

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

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

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

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

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

Page Top

Asuka Ver2.0計画 anchor.png[7]

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

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

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

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

Page Top

さて実行してくか・・・ anchor.png[8]

Page Top

28GO_G anchor.png[9]

ここのソースは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[10]

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

Page Top

aksa anchor.png[11]

とりあえずソースを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[12]

追加した。

でけた!

Page Top

bim2hrb anchor.png[13]

乗せかえた。

でけた!

Page Top

bim2obj anchor.png[14]

乗せかえた。

でけた!

Page Top

bim2ucc anchor.png[15]

追加。

でけた!

Page Top

cpyとcpyc anchor.png[16]

追加。

でけた!

Page Top

gas2nask anchor.png[17]

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

でけた!

Page Top

golib00 anchor.png[18]

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

でけた!

Page Top

makefontc anchor.png[19]

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

でけた!

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

Page Top

mtek2org anchor.png[20]

追加。

でけた!

Page Top

Nasuka anchor.png[21]

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

でけた!

Page Top

naskconv0 anchor.png[22]

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

でけた!

Page Top

obj2bim anchor.png[23]

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

でけた!

Page Top

rjcg01 anchor.png[24]

追加。

でけた!

Page Top

sjisconv anchor.png[25]

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

でけた!

Page Top

toolstdc・toolw32 anchor.png[26]

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

Page Top

g01libcとg01libc1 anchor.png[27]

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

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

gas2naskに例の問題が? anchor.png[28]

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

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

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

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

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

Page Top

検証 anchor.png[29]

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

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

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

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

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

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

Page Top

手がかりがあったぞ anchor.png[30]

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

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

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

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

Page Top

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

実験的に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[33]

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

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

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

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

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

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

Page Top

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

・・・でさ・・・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[35]

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

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

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

Page Top

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

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

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

Page Top

復帰~ anchor.png[37]

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

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

Page Top

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

実行ファイル

[添付]

ソース

[添付]

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

Page Top

OSASKコンパイル anchor.png[39]

・・・ダメでした・・・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[40]

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

リリース近し!! w

Page Top

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

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

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

[添付]
Page Top

リリース向け準備 anchor.png[42]

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

で!

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

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

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

Page Top

OSASK4.7の代替 anchor.png[43]

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

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

Page Top

はりぼての代替 anchor.png[45]

[添付]

こいつは「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[46]

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


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