2: 2009-11-17 (火) 12:07:28 [6] | 現: 2024-01-08 (月) 12:58:57 lina[7] [8] | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | *これはなにか? | + | TITLE:x |
+ | *これはなにか? [#o78e6234] | ||
hideyosiが、ASKAをLinuxに移植しようともくろんであれやこれやと弄くりまわした時の記録です。こんな文章でもどなたかのご参考くらいにはなるかもしれないと思い、恥を忍んで公開しています。 | hideyosiが、ASKAをLinuxに移植しようともくろんであれやこれやと弄くりまわした時の記録です。こんな文章でもどなたかのご参考くらいにはなるかもしれないと思い、恥を忍んで公開しています。 | ||
-すこし読んでいただければすぐにわかると思いますが、私はC、ましてやC++なんて出来ません。ヒーヒー言いながらGoogleで調べながらやってみました。 | -すこし読んでいただければすぐにわかると思いますが、私はC、ましてやC++なんて出来ません。ヒーヒー言いながらGoogleで調べながらやってみました。 | ||
Line 6: | Line 7: | ||
えーと・・長過ぎるので、コメントはこのへんにでも。 (^^;) | えーと・・長過ぎるので、コメントはこのへんにでも。 (^^;) | ||
- | #comment | + | |
---- | ---- | ||
- | *Linuxに移植してみよう! でも、そのまえに・・・ | + | *Linuxに移植してみよう! でも、そのまえに・・・ [#x602c91a] |
-まずは、Windowsでコンパイルしてみる。 | -まずは、Windowsでコンパイルしてみる。 | ||
--そもそも、私はCとかがよくわからない。また、Linuxだってそんなによくわかるわけでもないのだ。そこで、まずは移植以前に、本来のプラットホームであるWindows上でコンパイルを実体験してみよう。 | --そもそも、私はCとかがよくわからない。また、Linuxだってそんなによくわかるわけでもないのだ。そこで、まずは移植以前に、本来のプラットホームであるWindows上でコンパイルを実体験してみよう。 | ||
Line 105: | Line 106: | ||
- | *ASKAをLinuxに移植する試み | + | *ASKAをLinuxに移植する試み [#ta91bdc1] |
さて、上記のような作業を通してちょっとだけものが解ったつもりになった私は、Linuxへの移植にチョッカイを出しました。 | さて、上記のような作業を通してちょっとだけものが解ったつもりになった私は、Linuxへの移植にチョッカイを出しました。 | ||
Line 119: | Line 120: | ||
-一応。 ''makefile'' を、 ''Makefile''にリネームしておく。 | -一応。 ''makefile'' を、 ''Makefile''にリネームしておく。 | ||
- | ***俺は乱暴ものだ!! | + | ***俺は乱暴ものだ!! [#xb792714] |
-そういうわけで、とりあえず下準備はOKなのだ。さて、どうするかっていうと・・・・いきなりメイクじゃ!! | -そういうわけで、とりあえず下準備はOKなのだ。さて、どうするかっていうと・・・・いきなりメイクじゃ!! | ||
Line 158: | Line 159: | ||
- | ***残りの6個のcppファイルをコンパイルテスト | + | ***残りの6個のcppファイルをコンパイルテスト [#i3f52905] |
--まず、ここいらあたりから。さっそく単品コンパイル。 | --まず、ここいらあたりから。さっそく単品コンパイル。 | ||
Line 166: | Line 167: | ||
module.h:11: io.h: ?????????????????????? | module.h:11: io.h: ?????????????????????? | ||
~/aska/ensrc$ | ~/aska/ensrc$ | ||
+ | |||
~/aska/ensrc$ gcc -O2 -c module.cpp | ~/aska/ensrc$ gcc -O2 -c module.cpp | ||
In file included from module.cpp:2: | In file included from module.cpp:2: | ||
module.h:11: io.h: ?????????????????????? | module.h:11: io.h: ?????????????????????? | ||
~/aska/ensrc$ | ~/aska/ensrc$ | ||
+ | |||
~/aska/ensrc$ gcc -O2 -c parser.cpp | ~/aska/ensrc$ gcc -O2 -c parser.cpp | ||
In file included from parser.h:21, | In file included from parser.h:21, | ||
Line 177: | Line 178: | ||
module.h:11: io.h: ?????????????????????? | module.h:11: io.h: ?????????????????????? | ||
~/aska/ensrc$ | ~/aska/ensrc$ | ||
+ | |||
~/aska/ensrc$ gcc -O2 -c generator.cpp | ~/aska/ensrc$ gcc -O2 -c generator.cpp | ||
In file included from generator.h:21, | In file included from generator.h:21, | ||
Line 183: | Line 184: | ||
module.h:11: io.h: ?????????????????????? | module.h:11: io.h: ?????????????????????? | ||
~/aska/ensrc$ | ~/aska/ensrc$ | ||
+ | |||
~/aska/ensrc$ gcc -O2 -c module.cpp | ~/aska/ensrc$ gcc -O2 -c module.cpp | ||
In file included from module.cpp:2: | In file included from module.cpp:2: | ||
module.h:11: io.h: ?????????????????????? | module.h:11: io.h: ?????????????????????? | ||
~/aska/ensrc$ | ~/aska/ensrc$ | ||
+ | |||
~/aska/ensrc$ gcc -O2 -c main.cpp | ~/aska/ensrc$ gcc -O2 -c main.cpp | ||
In file included from parser.h:21, | In file included from parser.h:21, | ||
Line 217: | Line 218: | ||
- | ***さて、手始めに、 scanner.cpp あたりから。 | + | ***さて、手始めに、 scanner.cpp あたりから。 [#yf286b9f] |
-ではでは。さっそくコンパイルしてみる。 | -ではでは。さっそくコンパイルしてみる。 | ||
Line 266: | Line 267: | ||
- | ***おっしゃぁ! 次は、parser.cpp じゃ! | + | ***おっしゃぁ! 次は、parser.cpp じゃ! [#c3b66e10] |
-さっそくコンパイル。 | -さっそくコンパイル。 | ||
Line 332: | Line 333: | ||
- | ***module.cpp いってみようか! | + | ***module.cpp いってみようか! [#z575a9da] |
-コンパイルすると、 | -コンパイルすると、 | ||
Line 344: | Line 345: | ||
#include <string.h> | #include <string.h> | ||
#include "module.h" | #include "module.h" | ||
+ | |||
//現在ではディレクトリの検索などはしていないので、単純に""や<>をはずすだけ | //現在ではディレクトリの検索などはしていないので、単純に""や<>をはずすだけ | ||
string Module::MakeFullPath(string& p){ | string Module::MakeFullPath(string& p){ | ||
Line 356: | Line 357: | ||
#include <string.h> | #include <string.h> | ||
#include "module.h" | #include "module.h" | ||
+ | |||
#include <sys/stat.h> | #include <sys/stat.h> | ||
int filelength (int fd) | int filelength (int fd) | ||
Line 367: | Line 368: | ||
return st.st_size; | return st.st_size; | ||
} | } | ||
+ | |||
//現在ではディレクトリの検索などはしていないので、単純に""や<>をはずすだけ | //現在ではディレクトリの検索などはしていないので、単純に""や<>をはずすだけ | ||
string Module::MakeFullPath(string& p){ | string Module::MakeFullPath(string& p){ | ||
Line 381: | Line 382: | ||
- | ***generator.cpp いくぞー! | + | ***generator.cpp いくぞー! [#a3e780ae] |
-コンパイル。 | -コンパイル。 | ||
Line 395: | Line 396: | ||
45行目 strcat(buf, ltoa(param.ndisp, buf2, 10)); | 45行目 strcat(buf, ltoa(param.ndisp, buf2, 10)); | ||
+ | |||
68行目 strcat(buf, ltoa(param.scale, buf2, 10)); | 68行目 strcat(buf, ltoa(param.scale, buf2, 10)); | ||
+ | |||
79行目 strcat(buf, ltoa(param.ndisp, buf2, 10)); | 79行目 strcat(buf, ltoa(param.ndisp, buf2, 10)); | ||
''↓'' | ''↓'' | ||
45行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); | 45行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); | ||
+ | |||
68行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); | 68行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); | ||
+ | |||
79行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); | 79行目 strcat(buf, sprintf(buf2,"%ld",param.ndisp)); | ||
-よーし。これでいいかな。コンパイル。 | -よーし。これでいいかな。コンパイル。 | ||
Line 416: | Line 417: | ||
45行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); | 45行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); | ||
+ | |||
68行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); | 68行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); | ||
+ | |||
79行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); | 79行目 sprintf(buf2,"%ld",param.ndisp);strcat(buf,buf2 ); | ||
-さーて、こんどこそ大丈夫かな。 | -さーて、こんどこそ大丈夫かな。 | ||
Line 432: | Line 433: | ||
510行目 strcpy(buf, buf1); strcat(buf, ","); strcat(buf, itoa(x, buf2, 10)); | 510行目 strcpy(buf, buf1); strcat(buf, ","); strcat(buf, itoa(x, buf2, 10)); | ||
+ | |||
554行目 strcat(buf, ","); strcat(buf, itoa(x, buf1, 10)); | 554行目 strcat(buf, ","); strcat(buf, itoa(x, buf1, 10)); | ||
+ | |||
722行目 OutputMASM("#local", "equ", itoa(sysvarlocalvalue, buf, 10), ""); | 722行目 OutputMASM("#local", "equ", itoa(sysvarlocalvalue, buf, 10), ""); | ||
''↓'' | ''↓'' | ||
510行目 strcpy(buf, buf1); strcat(buf, ","); sprintf(buf2,"%d",x);strcat(buf, buf2); | 510行目 strcpy(buf, buf1); strcat(buf, ","); sprintf(buf2,"%d",x);strcat(buf, buf2); | ||
+ | |||
554行目 strcat(buf, ","); sprintf(buf1,"%d",x);strcat(buf, buf1); | 554行目 strcat(buf, ","); sprintf(buf1,"%d",x);strcat(buf, buf1); | ||
+ | |||
722行目 sprintf(buf,"%d",sysvarlocalvalue);OutputMASM("#local", "equ", buf, ""); | 722行目 sprintf(buf,"%d",sysvarlocalvalue);OutputMASM("#local", "equ", buf, ""); | ||
-いよーし!!。これでコンパイル、完了!!! | -いよーし!!。これでコンパイル、完了!!! | ||
- | ***うおぉぉ! table.cpp じゃ! | + | ***うおぉぉ! table.cpp じゃ! [#xa806b31] |
-さーて・・・こいつはどこ修正するのかなぁ・・・ | -さーて・・・こいつはどこ修正するのかなぁ・・・ | ||
Line 451: | Line 452: | ||
-・・・・あれ? 通っちゃった・・・ ひえぇーー!! | -・・・・あれ? 通っちゃった・・・ ひえぇーー!! | ||
- | *** main.cpp キタ━━━━(゚∀゚)━━━━ッ!! | + | *** main.cpp キタ━━━━(゚∀゚)━━━━ッ!! [#i26f33ee] |
-いくぞ!! ラスト! | -いくぞ!! ラスト! | ||
Line 459: | Line 460: | ||
-え?つーことは???。全コンパイル、いけるのか! いっけるのくあぁぁぁ!? | -え?つーことは???。全コンパイル、いけるのか! いっけるのくあぁぁぁ!? | ||
- | ***ASKAちゃん、大地に立つ! | + | ***ASKAちゃん、大地に立つ! [#k316a419] |
-えーと・・・。そんなわけで、これでとりあえず、LinuxでASKAがコンパイルできます。ただ、このままメイクすると、aska.exe になっちゃうんで、 makefile を一部修正。44行目ね。 | -えーと・・・。そんなわけで、これでとりあえず、LinuxでASKAがコンパイルできます。ただ、このままメイクすると、aska.exe になっちゃうんで、 makefile を一部修正。44行目ね。 | ||
Line 468: | Line 469: | ||
CPPFLAGS = | CPPFLAGS = | ||
PGNAME = aska.exe | PGNAME = aska.exe | ||
+ | |||
# | # | ||
# SRC Directory | # SRC Directory | ||
Line 480: | Line 481: | ||
CPPFLAGS = | CPPFLAGS = | ||
PGNAME = aska | PGNAME = aska | ||
+ | |||
# | # | ||
# SRC Directory | # SRC Directory | ||
Line 506: | Line 507: | ||
-ASKAか・・・・ なにもかもがみななつかすい・・・・・(T∀T) | -ASKAか・・・・ なにもかもがみななつかすい・・・・・(T∀T) | ||
- | *ASKA、新たなる旅立ち | + | *ASKA、新たなる旅立ち [#f5c48c38] |
-さてさて、そーゆーわけで、ついにASKAがコンパイルできましたが、はたして、これは動くのでしょうか??? | -さてさて、そーゆーわけで、ついにASKAがコンパイルできましたが、はたして、これは動くのでしょうか??? | ||
-そんなわけで、とりあえず tolset05.lzh に付属の hello0.ask と、hellok0.ask を当ててみました。 | -そんなわけで、とりあえず tolset05.lzh に付属の hello0.ask と、hellok0.ask を当ててみました。 | ||
Line 532: | Line 533: | ||
- | *ASKA 発動編---- | + | *ASKA 発動編---- [#ka7f7eca] |
-そんなわけでコンパイルに成功し、またとりあえず簡単な動作実験を行った。なんかいけそうだ。 | -そんなわけでコンパイルに成功し、またとりあえず簡単な動作実験を行った。なんかいけそうだ。 | ||
-そんな折、T.Takさんからもコンパイル成功の一報が入る。 | -そんな折、T.Takさんからもコンパイル成功の一報が入る。 | ||
Line 538: | Line 539: | ||
---- | ---- | ||
- | *一応報告(I.Tak.) | + | *一応報告(I.Tak.) [#ia32cac4] |
-LinuxでASKAをコンパイルだけすることに成功しました。 | -LinuxでASKAをコンパイルだけすることに成功しました。 | ||
--module.h(多分): #include <io.h> を #include <sys/io.h> に変更 | --module.h(多分): #include <io.h> を #include <sys/io.h> に変更 | ||
Line 590: | Line 591: | ||
HRESULT Module::ReadLine(LPSTR buf){ | HRESULT Module::ReadLine(LPSTR buf){ | ||
int i; | int i; | ||
+ | |||
if(lpMdlPos == NULL) return 3; | if(lpMdlPos == NULL) return 3; | ||
if(lpMdlPos >= (LPSTR)lpMdlAdr + dwMdlSize) return 1; | if(lpMdlPos >= (LPSTR)lpMdlAdr + dwMdlSize) return 1; | ||
Line 609: | Line 610: | ||
HRESULT Module::ReadLine(LPSTR buf){ | HRESULT Module::ReadLine(LPSTR buf){ | ||
int i; | int i; | ||
+ | |||
if(lpMdlPos == NULL) return 3; | if(lpMdlPos == NULL) return 3; | ||
if(lpMdlPos >= (LPSTR)lpMdlAdr + dwMdlSize) return 1; | if(lpMdlPos >= (LPSTR)lpMdlAdr + dwMdlSize) return 1; | ||
for(i = 0; i < 1023; i++){ | for(i = 0; i < 1023; i++){ | ||
// if(*lpMdlPos == 0x0D && *(lpMdlPos+1) == 0x0A){ | // if(*lpMdlPos == 0x0D && *(lpMdlPos+1) == 0x0A){ | ||
+ | |||
if(*lpMdlPos == 0x0D && *(lpMdlPos+1) == 0x0A){ | if(*lpMdlPos == 0x0D && *(lpMdlPos+1) == 0x0A){ | ||
*buf = '\0'; | *buf = '\0'; | ||
Line 620: | Line 621: | ||
return 0; // 1行終了(DOS) | return 0; // 1行終了(DOS) | ||
} | } | ||
+ | |||
if(*lpMdlPos == 0x0A || *lpMdlPos == 0x0D){ | if(*lpMdlPos == 0x0A || *lpMdlPos == 0x0D){ | ||
*buf = '\0'; | *buf = '\0'; | ||
Line 626: | Line 627: | ||
return 0; // 1行終了(UNIX or MAC) | return 0; // 1行終了(UNIX or MAC) | ||
} | } | ||
+ | |||
*(buf++) = *(lpMdlPos++); | *(buf++) = *(lpMdlPos++); | ||
} | } | ||
Line 645: | Line 646: | ||
- | *ASKA めぐり合い宇宙編 | + | *ASKA めぐり合い宇宙編 [#ve101142] |
-これで、ほぼASKAをLinuxに移植することは成功だと思う。(逆に、これ以上の部分に問題があった場合、もうそろそろ私には手におえないものだろう。) | -これで、ほぼASKAをLinuxに移植することは成功だと思う。(逆に、これ以上の部分に問題があった場合、もうそろそろ私には手におえないものだろう。) | ||
-I.Takさんが最後に清書してくれた版を、ASKAのページにて公開している。現在は、最後の動作実験のためtest版だが、おそらくこれが完成版となるだろう。 | -I.Takさんが最後に清書してくれた版を、ASKAのページにて公開している。現在は、最後の動作実験のためtest版だが、おそらくこれが完成版となるだろう。 | ||
-この検証が終われば、I.Takさんが書いてくれたhistoryやらなんやらもひとまとめにして、Kタンに「どんなもんじゃろ?これ?」と提案してみるつもりである。 | -この検証が終われば、I.Takさんが書いてくれたhistoryやらなんやらもひとまとめにして、Kタンに「どんなもんじゃろ?これ?」と提案してみるつもりである。 |
(This host) = http://osask.net