サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
6: 2010-01-26 (火) 19:42:50 lina ソース 現: 2024-01-08 (月) 12:58:58 lina ソース
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]]にて。

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。