6: 2010-01-26 (火) 19:42:50 lina[6] [7] | 現: 2024-01-08 (月) 12:58:58 lina[6] [8] | ||
---|---|---|---|
Line 30: | Line 30: | ||
|tekmin1|--|tekmin1| | |tekmin1|--|tekmin1| | ||
- | **孤立パッケージのワンパック化 [#gaf85291] | + | **独立パッケージ [#gaf85291] |
意図して孤立させているものは別。以下。 | 意図して孤立させているものは別。以下。 | ||
-Asuka | -Asuka | ||
+ | -bim2bin | ||
+ | -edimg | ||
-t5lzma | -t5lzma | ||
-qemu | -qemu | ||
+ | |||
+ | qemuを除いて今回は前バージョンのまま | ||
**バージョンアップ! [#md5b7402] | **バージョンアップ! [#md5b7402] | ||
Line 387: | Line 391: | ||
2010/01/25 15:34 219,474 typeck.c | 2010/01/25 15:34 219,474 typeck.c | ||
2010/01/25 15:34 42,890 typeck2.c | 2010/01/25 15:34 42,890 typeck2.c | ||
+ | |||
gccディレクトリ内 | gccディレクトリ内 | ||
2010/01/25 15:36 12,446 cppmain.n | 2010/01/25 15:36 12,446 cppmain.n | ||
Line 413: | Line 417: | ||
・・・まいったなぁ・・・Usageのメッセージなんぞでかく占めたくないってんで複雑な関数になってる。efg01側の解析からやらにゃならん。どうしたもんだこれ・・・ | ・・・まいったなぁ・・・Usageのメッセージなんぞでかく占めたくないってんで複雑な関数になってる。efg01側の解析からやらにゃならん。どうしたもんだこれ・・・ | ||
- | static unsigned char cmdusg[] = { | + | static unsigned char cmdusg[] = { ベタ書きに変換! |
- | 0x86, 0x50, | + | 0x86, 0x50, 0x86, 0x5c, 0, |
- | 0x88, | + | 0x88, 0x88, in:input-file |
- | 0x02, 'o', 'f', 's', 0x11, '#', | + | 0x02, 'o', 'f', 's', 0x11, '#', 0x0c, 2, 'o', 'f', 's', 0x1c, 1, '#', |
- | 0x11, '-', 'r', 0x20, | + | 0x11, '-', 'r', 0x20, 0x1c, 1, '-', 'r', 0x20, |
- | 0x02, 'e', 'i', 'p', 0x11, '#', | + | 0x02, 'e', 'i', 'p', 0x11, '#', 0x0c, 2, 'e', 'i', 'p', 0x1c, 1, '#', |
- | 0x00, 'd', 0x11, '#', | + | 0x00, 'd', 0x11, '#', 0x0c, 0, 'd', 0x1c, 1, '#', |
- | 0x02, 'l', 'i', 'n', 0x11, '#', | + | 0x02, 'l', 'i', 'n', 0x11, '#', 0x0c, 2, 'l', 'i', 'n', 0x1c, 1, '#', |
- | 0x40 | + | 0x40 0x40 |
}; | }; | ||
+ | |||
+ | ばんざーい! 解析できたーーーーー!!!!! | ||
- | usage>akusA [in:]input-file [ofs:]# [-r] [eip:]# [d:]# [lin:]# | + | ・・・バージョン表記はefg01側で考えないといけないのね・・・・・・・orz |
- | こういうことしとけばusageが自動的に表示されるって仕様。文字は解るがこのヘンな16進数なんだろう?単純な文字コードじゃない。なんらかのコマンドだと思う。文字に見えるものは、増やしたり減らしたりすると異常終了する。 | ||
- | 最初の「usage」って文字は、efg01側に埋め込まれてる。 | + | COLOR(blue){''結論!!!'' 今回はバージョン表記は見送りまする。まずhidetol_8で完成させて、次回にhijkの内部をイジってなんとかしまるす。(それしかなさそうだもんなぁ~)} |
- | |efg側 |0x86,0x50,0x88,0x02???|定|定|定|0x11?|定?|0x11?|定|定|0x20?|定|定|定| |定| |定|定|定| | | + | |
- | |usage>akusA| [in:]input-file [ |o | f|s |:] |# | [ |- |r |] [ |e |i |p |:]# [|d |:]# [|l |i |n |:]#| | + | |
+ | ***bim2g01 [#u1de5bac] | ||
+ | 追加した。 | ||
+ | COLOR(blue){でけた!} | ||
- | |usage>akusA|efg側| | ||
- | | [in:]input-file [|0x86,0x50,0x88,0x02???| | ||
- | |o|定| | ||
- | |f|定| | ||
- | |s|定| | ||
- | |:]|0x11?| | ||
- | |#|定?| | ||
- | |[|0x11?| | ||
- | |-|定| | ||
- | |r|定| | ||
- | |] [|0x20?,0x02?| | ||
- | |e|定| | ||
- | |i|定| | ||
- | |p|定| | ||
- | |:]# [|0x11? #? 0x00?| | ||
- | |d|定| | ||
- | |:]# [|0x11? #?| | ||
- | |l|定| | ||
- | |i|定| | ||
- | |n|定| | ||
- | |:]#|0x11? 0x40?| | ||
- | んんん? 第一ビットが経っていると''[''を表示する・・・のかな?? | ||
- | お? これかな??? http://osask.net/w/346.html | + | ***bim2hrb [#i542bc9c] |
+ | 乗せかえた。 | ||
- | ・・・・だめだ・・・・・・・・orz・・・・・・・・・・~ | + | COLOR(blue){でけた!} |
- | ちょっとヨソでやりまする・・・ | + | |
- | ***bim2g01 [#u1de5bac] | + | ***bim2obj [#mdd31a55] |
- | 追加した。 | + | 乗せかえた。 |
- | COLOR(red){コンパイル実験はまだ} | + | COLOR(blue){でけた!} |
- | COLOR(red){バージョン表記搭載まだ} | + | ***bim2ucc [#i89638f4] |
+ | 追加。 | ||
+ | COLOR(blue){でけた!} | ||
- | ***bim2hrb [#i542bc9c] | + | ***cpyとcpyc [#s260ce51] |
- | 乗せかえた。 | + | 追加。 |
- | COLOR(red){コンパイル実験はまだ} | + | COLOR(blue){でけた!} |
- | COLOR(red){バージョン表記搭載まだ} | + | ***gas2nask [#od70a251] |
+ | 追加。同時にtools*とfunc内のgas2nask関連のものを削除 | ||
+ | COLOR(blue){でけた!} | ||
- | ***bim2obj [#mdd31a55] | + | ***golib00 [#a67c190c] |
- | 乗せかえた。 | + | 追加。同時にtools*とfunc内のgolib00関連のものを削除 |
- | COLOR(red){コンパイル実験はまだ} | + | COLOR(blue){でけた!} |
- | COLOR(red){バージョン表記搭載まだ} | + | ***makefontc [#t1e50e69] |
+ | 名前が違うな・・・追加。同時にmakefontを削除 | ||
+ | COLOR(blue){でけた!} | ||
- | ***bim2ucc [#i89638f4] | + | COLOR(red){makefntcを採用。aska版はまた今度・・・} |
+ | |||
+ | |||
+ | ***mtek2org [#u8ecd2e4] | ||
追加。 | 追加。 | ||
- | COLOR(red){コンパイル実験はまだ} | + | COLOR(blue){でけた!} |
- | COLOR(red){バージョン表記搭載まだ} | + | ***Nasuka [#u8768672] |
+ | 追加。同時にtools*とfunc内のnask関連のものを削除 | ||
+ | COLOR(blue){でけた!} | ||
- | ***cpyとcpyc [#s260ce51] | + | ***naskconv0 [#uf7bb7f1] |
+ | 追加。同時にtools*とfunc内のnaskconv関連のものを削除 | ||
+ | |||
+ | COLOR(blue){でけた!} | ||
+ | |||
+ | |||
+ | ***obj2bim [#d3489530] | ||
+ | 載せ変え。同時にautodec関連のものを削除 | ||
+ | |||
+ | COLOR(blue){でけた!} | ||
+ | |||
+ | ***rjcg01 [#b27d68c8] | ||
追加。 | 追加。 | ||
- | COLOR(red){コンパイル実験はまだ} | + | COLOR(blue){でけた!} |
- | COLOR(red){バージョン表記搭載まだ} | + | ***sjisconv [#u6e66d44] |
+ | 追加。同時にtools*とfunc内のsjisconv関連のものを削除 | ||
+ | COLOR(blue){でけた!} | ||
- | ***gas2nask [#od70a251] | ||
- | 追加。同時にtools*とfunc内のgas2nask関連のものを削除 | ||
- | COLOR(red){コンパイル実験はまだ} | + | ***toolstdc・toolw32 [#d7117018] |
+ | このディレクトリは空になったので削除 | ||
- | COLOR(red){バージョン表記搭載まだ} | ||
+ | ***g01libcとg01libc1 [#iafb3693] | ||
+ | 内部にはオブジェクトファイルあり。ライセンスの確認が必要なので棚上げ | ||
+ | -g01libc内の_chkstk.oは例の条件付GPLのヤツと同一であることを確認。なので、在来の28GO_G内のものを流用してくみ上げるよう、インストーラーを工夫する。(つかり28GO_Kからは除外する) | ||
- | ***golib00 [#a67c190c] | + | -g01libc1内のものはみんなKタン作であることを確認。(考えてみれば、.nasや.askを書くヒトなんてKタンくらいではなかろうかとwww) |
- | 追加。同時にtools*とfunc内のgolib00関連のものを削除 | + | |
- | COLOR(red){コンパイル実験はまだ} | ||
- | COLOR(red){バージョン表記搭載まだ} | + | *gas2naskに例の問題が? [#m8ea55fc] |
+ | g01化された最新(たぶん)のgas2naskに例の | ||
+ | skip:adcl %edx, 20(%ecx) | ||
+ | skip:adcl %edx, 20(%esi) | ||
+ | エラーが出ることが判明。これを修理。~ | ||
+ | COLOR(blue){その意味では初のg01アプリのバージョンアップwつーことになるかな? www} | ||
+ | ・・・あれ? 前のと違うじゃんこれ! | ||
- | ***makefontc [#t1e50e69] | + | **検証 [#na0f0d63] |
- | 名前が違うな・・・追加。同時にmakefontを削除 | + | 以前にも似たバグがあった。今、手動でbim2bin.cを中間コンパイルしてbim2bin.gasを作ってみた。みてみると・・・ |
- | COLOR(red){コンパイル実験はまだ} | + | あったあった。二箇所。 つまり、上記のエラーは、gas2naskが 「そんなオペランド知らんぞ!訳せないぞ!」とこういっているわけ。っということは、GASのオペランドと、Nasuku(NASM互換?)のオペランドをつき合わせて書いてあげればいい・・・ということかな??? |
- | COLOR(red){バージョン表記搭載まだ} | + | (前回と違い、今回はgas2naskのソースは最新。うへぇ~! こまったぁ・・・・)~ |
+ | これはようするに、i386 CPUのオペランドとニーモニックの一覧表がないとどーしよーもないぞおぉぉ!!! orz | ||
- | COLOR(red){あっれえぇぇぇ! makefontってのがあるうえにこれはAsukaじゃん! ちょっと棚上げ} | + | SIZE(22){''だれかそういうのの載ってるURL教えてけれ!!''}~ |
+ | ググっても全然みつからないよ・・・orz・・・ | ||
+ | **手がかりがあったぞ [#kb1378d6] | ||
+ | adclは、''拡張加減算''と呼ばれるものらしい。 | ||
- | ***mtek2org [#u8ecd2e4] | + | ・・・やっとこさ、NASMの解説サイトを見つけたんだが・・・・~ |
- | 追加。 | + | http://ryujin.kuis.kyoto-u.ac.jp/~nobu/study/nasm/nasm.html |
- | COLOR(red){コンパイル実験はまだ} | + | これからこれを読むのか・・・頭クラクラしてきた・・・ |
- | COLOR(red){バージョン表記搭載まだ} | + | **お得意のやっつけ変化球 [#he38ac39] |
+ | 実験的に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命令の働きがわかって来た。COLOR(blue){上記の例で解る通り、addlはgas2naskで翻訳できていて、さらにそのパターンがわかる!} | ||
+ | | |>|>|GASソース| |>|>|Nasuka(NASM風)ソース| | ||
+ | |addl命令| addl | %eax | 16(%ecx) | | ADD | DWORD[16+ECX] | EAX| | ||
- | ***Nasuka [#u8768672] | + | これらの比較から、まだ未確認だがこういう予測が立ってきた・・・ |
- | 追加。同時にtools*とfunc内のnask関連のものを削除 | + | |
- | COLOR(red){コンパイル実験はまだ} | + | -COLOR(blue){多くの命令は、GASの場合、おケツにlが付いているだけ。} |
+ | -COLOR(blue){第一オペランドと第二オペランドが逆} | ||
- | COLOR(red){バージョン表記搭載まだ} | + | ・・・つーことはだよ? x86に、''ADC''という命令がダイレクトにあれば、addl(ADD)と同じ翻訳でいいんでないのか?これ???? |
+ | **出ました!乱暴者!!! [#m6641f49] | ||
+ | どうもx86には、''ADC''という命令はあるっぽい(まだ、調べきっていないのだが)。・・・だったらさぁ・・・・ | ||
- | ***naskconv0 [#uf7bb7f1] | + | さっき出来た.nasに、手書きでADC命令を書きこんでNasukaにかけ、bim2binをでっち上げてみる!!!!~ |
- | 追加。同時にtools*とfunc内のnaskconv関連のものを削除 | + | さぁ!動くか!? うごくのかあぁぁぁぁ!!!! |
- | COLOR(red){コンパイル実験はまだ} | + | COLOR(blue){動いちゃうんだからやめられないよなホントwwww} |
+ | - -osacmp -tek0 正常動作。出力ファイルに違いがない! | ||
+ | - -osacmp -tek1 正常動作。出力ファイルに違いがない! | ||
+ | - -osacmp -tek5 正常動作。出力ファイルに違いがない! | ||
- | COLOR(red){バージョン表記搭載まだ} | + | 完璧だ・・・私は完璧だ! 今日から戦闘力10万の完璧超人を名乗らせてもらおう!! |
+ | **貴様風情に北斗1800年の歴史を極めることなどできない [#n520ae2b] | ||
+ | ・・・でさ・・・gas2naskどうすんのよ・・ | ||
- | ***obj2bim [#d3489530] | + | ・・・・・・・・・・・・・orz・・・・・・・・・・・・・・・ |
- | 載せ変え。同時にautodec関連のものを削除 | + | |
- | COLOR(red){コンパイル実験はまだ} | + | さてgas2naskのソースを眺めてると、acDl(ADD)命令の定義が二箇所ある。さらに各々の定義部に、one_param、tow_paramという名前がつけられている。 |
- | COLOR(red){バージョン表記搭載まだ} | + | ・・・これは、オペランドが一個しかないもの、2個あるものっていう定義なのだろうか? もしそうなら、addl命令は、オペランドがひとつの場合と二つの場合があり、3つってのはない・・・そうなるが・・・ |
+ | ふむ。大体合ってると思う。one_param内にはCALLやJPがあるが、tow_param内にはないし。 | ||
- | ***rjcg01 [#b27d68c8] | + | しかしそうなると、ADDにはオペランドが一個っていう場合がある・・・のかなぁ。そういう用法が見つからない。むむむ・・・ |
- | 追加。 | + | |
- | COLOR(red){コンパイル実験はまだ} | ||
- | COLOR(red){バージョン表記搭載まだ} | + | あぁぁぁっと!勘違いだ! ADDにはパラメータ一個は存在しない! それは、''FADD''だ!! |
+ | うーん・・・ADDに対してFADDはFPUを使っての命令・・・と。で、その場合はパラメータ一個もありうる・・・(まだ未確認) | ||
- | ***sjisconv [#u6e66d44] | + | しかし、逆に、これのCF関連命令であるADCに、FADCっていう命令はみつからないぞ? もしかしてない?? |
- | 追加。同時にtools*とfunc内のsjisconv関連のものを削除 | + | |
- | COLOR(red){コンパイル実験はまだ} | + | たぶんこれで合っているはず。adcl(ADC)命令には、パラメータ一個のパターンは存在しない!!!! |
- | COLOR(red){バージョン表記搭載まだ} | + | なので、たぶん、adclの定義はtwo_param内に追加すればいいはず! |
- | ***toolstdc・toolw32 [#d7117018] | ||
- | このディレクトリは空になったので削除 | ||
- | ***g01libcとg01libc1 [#iafb3693] | + | **ソース内の定義の意味は? [#b9cd74ec] |
- | 内部にはオブジェクトファイルあり。ライセンスの確認が必要なので棚上げ | + | gas2naskのソース内では、たとえばaddlの場合、 |
+ | "1addb ADD", | ||
+ | "4addl ADD", | ||
+ | "2addw ADD", | ||
+ | こんなことをしている。先頭の数値とお尻の一文字。これはどういう意味なんだろう?? お尻はほとんど関係なくADDに翻訳されているんだが、頭の数値はなんだんだろうこれ・・・ | ||
+ | |||
+ | *いけた?でもわかんねw [#b41591ab] | ||
+ | "1addb ADD", | ||
+ | "4addl ADD", | ||
+ | "2addw ADD", | ||
+ | "4adcl ADD", | ||
+ | もうわっかんないので無理やりこんなことしてみたら、ちゃんと.nasが正しく出力されたぞ?? いいのか? 本当にこれでいいのか???www | ||
+ | |||
+ | *復帰~ [#n48bb630] | ||
+ | うーん・・・思うところもあるけど、本来の目的であるhidetol_8を完成させる観点から、ちょっとこれで突き進めちゃおう・・・~ | ||
+ | (どーせこれは、GOでもなんでもない。28GOであり、hidetolなんだから・・・<オープン アゲイン!!! | ||
+ | |||
+ | *そんなわけで第一期完成 [#oe00b9a9] | ||
+ | |||
+ | 実行ファイル | ||
+ | #ref(hidetol_8.exe) | ||
+ | |||
+ | ソース | ||
+ | #ref(hidetol_8_src.exe) | ||
+ | |||
+ | COLOR(red){まだOSASKもなんもコンパイルしてません・・・自分自身のソースを自分でコンパイルできるようになったってレベル} | ||
+ | |||
+ | |||
+ | **OSASKコンパイル [#s89fc85d] | ||
+ | ・・・ダメでした・・・orz・・・ | ||
+ | |||
+ | で、問題を検証してみたんだけど、どうもpokonがおかしい。で、どの段階でおかしいかってーと、obj2bimだってことが解った。pokon0.objまでの段階ではまったく同じバイナリなんだけど、こいつをobj2bimでpokon0.bimにすると違いが出ちゃう。 | ||
+ | |||
+ | -差を見てみると、なんとかくだけど規則的に差が出ているように見える・・・ | ||
+ | -そもそも、ほんのわずかだけど、サイズが異なる | ||
+ | |||
+ | でね。こりゃ、obj2bimがバグってるのかぁ?っていうと、winman0ではこれが起きてないんだよなぁ・・・(winman0はこの後のbinでもまったく同じバイナリになってる) | ||
+ | |||
+ | ・・・どゆことなんだべか??? | ||
+ | |||
+ | COLOR(blue){おぉぉっとぉ! 動いたぞ!!!} | ||
+ | |||
+ | 二つの差。それは、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してみるってーと・・・ジャジャ~ン!!! | ||
+ | |||
+ | オレは天才だあぁぁぁ! どんな言語もたちどころに習得できるのに、誰も奥義を授けようとはしなかったあぁ!!! | ||
+ | |||
+ | **はりぼて [#xb68fdc5] | ||
+ | こーっちもイケたぞおぉぉ!!! | ||
+ | |||
+ | リリース近し!! w | ||
+ | |||
+ | |||
+ | **qemuが起動しないミス [#tb2bc0ba] | ||
+ | 例によってhikarupspさんが見つけてくれた!! | ||
+ | |||
+ | qemuの起動に問題があったので一部やり直しました。 | ||
+ | |||
+ | #ref(hidetol_8_2.exe) | ||
+ | |||
+ | |||
+ | |||
+ | *リリース向け準備 [#o104ee3b] | ||
+ | たぶんもう問題はないと思う。リリースに向けて最後の準備。 | ||
+ | |||
+ | で! | ||
+ | |||
+ | この版ではコマンドそのものやパラメータがいろいろ変化していて、hidetol_7みたいにOSASKやはりぼてでチェックができない。(あちこち直さないといけない) | ||
+ | |||
+ | Linuxとかならpatchを流せばいいんだけどWinの場合はねぇ・・・ | ||
+ | |||
+ | そんなわけで、とりあえずご用意。 | ||
+ | |||
+ | **OSASK4.7の代替 [#n923b4d2] | ||
+ | [[ここ>http://osask.net/w/540.html]]からOSAKA Ver4.7を落としてくださいな。OSAKAはOSASKからの派生物。で、なに派生したかって、なーんにも変化していないというwww~ | ||
+ | コイツはhidetol_8で一発コンパイルできるようにMakefile関係だけをイジってあると考えていただければ。 | ||
+ | |||
+ | |||
+ | **はりぼての代替 [#f7ba3dc7] | ||
+ | #ref(harib27f_x.zip) | ||
+ | |||
+ | こいつは「30日で出来る!OS自作入門」付属CD-ROM内の、30日目の最後のソースに、hidetol_8でコンパイルできるようにMakefileやらなんやらを改造したもの。以下ね。 | ||
+ | harib27_x | ||
+ | ├app_mak.txt | ||
+ | ├apilib | ||
+ | │ └Makefile | ||
+ | ├haribote | ||
+ | │ └Makefile | ||
+ | └gvuiew | ||
+ | └Makefile | ||
+ | |||
+ | |||
+ | |||
+ | *リリース完了! ('10/2/1)[#ld83d289] | ||
+ | |||
+ | リリースが完了しましたので、このページは凍結♪ 添付も引っこ抜きます。以降は[[こちら>http://osask.net/w/542.html]]にて。 |
(This host) = http://osask.net