サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
2: 2009-11-17 (火) 12:07:28 ソース 現: 2024-01-08 (月) 12:58:57 lina ソース
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タンに「どんなもんじゃろ?これ?」と提案してみるつもりである。

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

目次
メンバー一覧


最新の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コミュニティによって管理・運営されています。