資料集
ここはhideyosiの学習帳です。いろいろな資料を集めたり整理したりしています。オイラ用のノートなので間違っていたり未完成だったりしますので信用度は相当低いことをあらかじめご了承くださいませ。
  • ソース を表示
  • gcc4でtolsetを! は削除されています。
2: 2007-02-18 (日) 20:56:35 ソース バックアップ No.2 を復元して編集 現: 1970-01-01 (木) 18:00:00 ソース 編集
Line 1: Line 1:
-gcc4でtolsetはコンパイルできるのか!? 
-とりあえず、これまでやっていたgcc3系列のパッチを当てたソース。こいつをgcc4でコンパイルできるかどうかやってみる! 
- 
-''※''ウチの実験はFreeBSDのgcc4.2で行いました。 
- 
- 
-*go_0023s [#lfc22ed7] 
--順調にコンパイルが進んでいたけど、やっぱり出た!エラー! 
--cp/内のdecl.c内で、以下のエラーが大量に! 
--  lvalue required as left operand of assignment 
- 
- コード 
- current_binding_level = newlevel; 
- 
---左辺の値は変更可能でないといけないって意味らしい。 
---左辺すなわちcurrent_binding_level。これはなにかというと・・・ 
- #define current_binding_level                  \ 
-   (cfun && cp_function_chain->bindings          \ 
-   ? cp_function_chain->bindings                \ 
-   : scope_chain->bindings) 
---こんなことしてあった。なんじゃこれ? 構造体?? 
---#defineって、文字の置き換えだよね?。えぇ? でもさ、なんで括弧があるの?それに、置き換え後の値も定義されてないじゃん・・・・ 
- 普通のdefine 
- #define aaa 123      <-aaaと書かれたらコンパイル時に123に置き換えろ! 
- 
- x = aaa + 456;      --->コンパイル時には置換される-->  x = 123 + 456; 
- 
---そうすると、あそこを素直に考えると 
- current_binding_level = newlevel; 
-                     ↓ 
- (cfun && cp_function_・・・略・・・pe_chain->bindings) = newlevel; 
- 
---こうなるわけ??? なんじゃ?こりゃ??? 
---あっれ? 難しく考えすぎてたかな??。これ、単なる計算式じゃない?? 
-   (cfun && cp_function_chain->bindings          \ 
-   ? cp_function_chain->bindings                \ 
-   : scope_chain->bindings) 
-                   ↓ 
-           ちょっと長くなるのでcp_function_chainをCFCと書く 
-                   ↓ 
-   (cfun && CFC->bindings ? CFC->bindings : scope_chain->bindings) 
- 
---で、この?と:って条件演算子じゃないの??。そうするとさ、こういうふうにならない? 
- if(cfun && CFC->bindings) { 
-     CFC->bindings; 
- } else { 
-     scope_chain->bindings; 
- } 
---ぐはぁ! これなら意味は通じるぞ!。これで合ってるのかな??? 
---・・・じゃあさ、じゃあさ!! エラーがでるあの部分って、こういうふうに書き換えればいいってこと?? 
- コード 
- current_binding_level = newlevel; 
-                       ↓ 
- if(cfun && CFC->bindings) { 
-     CFC->bindings = newlevel; 
- } else { 
-     scope_chain->bindings= newlevel; 
- } 
- 
- 
- 
-*bim2bin [#dd3248bd] 
--でました。エラー。 
--        ((int) p) &= ~0x03; 
---たぶん型キャストに問題がある。左辺はキャストしちゃいけないはず。 
---たぶんこんな型キャストしてるということは、pはintじゃない。で、~0x03がintなんだろうと思われる。 
- void tek1_btseek(struct TEK1_STR_BTBUF *btbuf, UCHAR *p) 
- { 
-       int bit = (((int) p) & 0x03) << 3; 
-       ((int) p) &= ~0x03; 
-       btbuf->rest = 32 - bit; 
-       btbuf->buf0 = (*(unsigned int *) &p[0]) >> bit; 
-       btbuf->buf1 &= 0; 
-       btbuf->ptr = (unsigned int *) &p[4]; 
-       return; 
- } 
--やっぱり。UCHAR *p ってことは、pは「アドレス変数」ということになる。 
--つまりここは、分解してちゃんと書くと、こういう意味になるはず。 
- ((int) p) &= ~0x03  →  ((int) p) = ((int)p) & ~0x03  ->  ((int) p) = ((int)p) & ~0x03 
- 
--・・・ということは、こうすればいいのかな??? 
-   p = (UCHAR *)((int)p & ~0x03) 
- 
--ふむ〜。たぶんこれでいけるかも〜。 
- 
- 
-*コンパイル完了! はたして!! [#t1591ead] 
--さてー。そんなわけでコンパイルができました。さてこれではりぼては動くか? 


トップ   編集 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 0, today: 0, yesterday: 0