*なんすかこれ? [#r15fad1b] hideyosiのお勉強のページ♪~ GOとかtolsetとかの中にosalink1.exeっつーのがある。これは予測だけど、ポツンと.cファイルがあるだけってことから、たぶんGOとか(Kタンの自前開発環境)が出来る前に作られたものだと思う。~ (そうなると、MinGWだとか、別のきれいに整った開発環境で作られてるはず。そういう完成した環境ではみーんな付いてるので、.cをひとつ作ればツルっとexeが作れちゃうと。その証拠にMinGWだとペロっとコンパイルできて動いちゃうw) ・・・こいつが、28GOでコンパイルできない・・・ なんかムカつく! っつーわけで、よい教材になるかなと思って28GOでコンパイルできるように弄っていこうかと。こういうわけ! ちなみに、ここからダウンロードできるぞよ? http://sourceforge.jp/projects/osask/downloads/45468/osalink1_src_1.0.tar.gz/ *sjisconv.exe [#r2f6284e] こいつはなにをやっているのか。たしか、ソースコード内にShift-jisの文字が入っているとうまくないってんでそれをお掃除してくれるor変換してくれるツールだったはず。まずはコイツで・・・ ..\z_tools\sjisconv.exe -s osalink1.c osalink1.ca osalink1.caの中身を見てみると日本語部分がぜーんぶ「\203」とかそういうのになってる。変換されたわけですなw(なんだべこれ? rawとかそういうのになるのかな??) *cc1.exe [#w696591b] CのソースなんだからCでコンパイルすると。(あったりまえだぁw) COLOR(red){osalink1のソース内に、ctype.hが宣言されてる。これちょっと迷ったんだけど、MinGWではここ削除してもそのままコンパイルできちゃうので神頼み的にこれで進めちゃいます・・・} ここで復習。Cコンパイラはなにをしてるのか。総合環境だと忘れがちなんだけど、''Cコンパイラは実行ファイルなんかつくってくれない''! あくまでも、Cソースを元に''アセンブラコードを作ってくれる''だけなのだ。 こんなことしてアセンブラコードであるosalink1.gasを作ると・・・ ..\z_tools\cc1.exe -I../z_tools/win32/ -Os -Wall -quiet -o osalink1.gas osalink1.ca *gas2nask.exe [#g1a7aa7d] cc1で出来上がったosalink1.gas。これは先に述べたように、''単なるアセンブラコード''に過ぎない。その証拠に、エディタで開けたりするw さて。28GO(GO 0023)のCコンパイラは元々gccだった。そのため、このコンパイラが吐き出すアセンブラコードはgccとペアで使うことが想定されている GAS(The GNU Assembler)用のものなのだ。 つまり、このosalink1.gasをGASでコンパイル(アセンブル)すれば実行ファイルが出来上がると。COLOR(red){未確認ですサーセン} ・・・しかし! 我らが28GO(笑)にはGASよりカッチョイイnasuka(NASK)があるのだ! ・・・そんなわけで。GAS用のアセンブラコードをnasuka用に変換してやればいいわけ。それがgas2naskの役目ね。 ..\z_tools\gas2nask.exe -a osalink1.gas osalink1.nas これで、nasukaでアセンブルできるコード、osalink1.nasが出来上がったと。 *nask.exe(本名 nasuka ) [#uf795a47] アセンブラのnask.exeでアセンブルすると、これで初めて''バイナリコード''が生成されるわけ。 ..\z_tools\nask.exe osalink1.nas osalink1.o NASK : TMPBUF is not enough ・・・順調だったのに・・・orz・・・エラーで止まってしまった・・・
(This host) = http://osask.net