トップ «前の日記(2008-07-18) 最新 次の日記(2008-07-20)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2008-07-19

_ 一般的

一般的に解釈すると一般的という言葉は広く一般的に見られる一般的なオブジェクトのことを示すと一般的に解釈できる。

とすると、一般的なCPUとは現時点では一般的なインテルの一般的にi386あるいはAMD64という言葉で一般的に示されるところの一般的なアーキテクチャを持つ一般的ななCPUを一般的に指し示していると一般的に想定するのが一般的であろう。特に一般的にコンピュータという一般的な言葉を一般的に利用しているのであれば一般的になおさら一般的である。というのは一般的な利用者において一般的にケータイや炊飯器のような一般的な機器は一般的にコンピュータとは一般的にみなさないことが一般的だからである。

とすると、一般的なCコンパイラという一般的な言葉が一般的にさし示すものは一般的に考えるに、一般的にみられるWindows(一般的に32ビットまたは一般的に64ビットのどちらのバージョンであるかを一般的に問わず)を一般的に搭載した一般的なコンピュータにおける一般的なVisual C++か、あるいは一般的なLinux(一般的な32ビット、一般的な64ビットを問わず)を搭載した一般的なコンピュータにおける一般的なgccをさすものと一般的に考察できる。

一般的にどうでも良いことについては一般的という一般的な形容がつくことが一般的に一般的である。

と一般的に思った。

でも、一般的にlongが64ビットというのは一般的に知らないし、それについては一般的ではないと一般的には考えるものである。

引用部に1箇所しか出てこないが、一般的という言葉がよくよく考えてみるとおもしろいので一般的に考えてみた。というか「多くの」とか書いてあるんだから(一部の)反例は別の話題ですな。

_ 昔のプログラマの世界

なんとなく上の話題と関連して、本当にintって16ビットだったっけ? とVC++1.5のマニュアルを探そうとしたが見つからず、代わりにMANX AZTEC Cの分厚いマニュアルが見つかったので、しょうがないのでちょっと眺めた。

ううむ、面倒であるな。

欧州はいざ知らず、北米でAZTEC Cを利用するということは、PCで成功して(投資を回収した)ソフトをAmigaにも移植するためだ。

そのため、intをデフォルトの32ビットではなく、16ビットに変えるオプションがある。

引数が値の場合の関数呼び出しについては、intの幅はほとんど意識する必要はない。すべて32ビット幅にしてスタックへ積めば良いからだ。

問題は、intポインタで、

ああ、そうか。このあたりもリトルエンディアンが世界制覇した理由のひとつかも知れないなぁ。

と気づいたから、いいや。

リトルエンディアンだとビット幅の扱いにバグあっても動く可能性があるのだな。

_ リトルな世界

たぶん、ビッグな世界だとうまく動かないはず。

#include 
void print(short* p)
{
  printf("%d ", *p);
}
int main(int argc, char* argv[])
{
  int params[] = { 1, 2, 3, 4, 5, 0 };
  int* p;
  for (p = params; *p; p++) {
    print(p);
  }
  return puts("");
}

コンパイルすると警告が出る。

arton@pop:~/tmp$ gcc end.c
end.c: In function 'main':
end.c:11: warning: passing argument 1 of 'print' from incompatible pointer type

無視して実行。

arton@pop:~/tmp$ ./a.out
1 2 3 4 5 
arton@pop:~/tmp$ 

警告意味ないじゃん、と考えてはいけない。

あわせて観たい。

ビッグ (ベストヒット・セレクション) [DVD]

鍵盤床で社長と踊るシーンが好きだ。

本日のツッコミ(全3件) [ツッコミを入れる]
_ きむら(K) (2008-07-19 11:02)

>反例は別の話題ですな。<br>ぐはっ。<br>確かに。<br>>MANX AZTEC Cの分厚いマニュアル<br>貴重な資料ですね(^^;<br>VC++1.5の〜とありますけど、この手のものを処分したりはしないのですか?<br>DOS用のもの(Extender未使用)であれば、VCを含めて int は16bitだったかと。<br>Unix用の、int が32bitあると暗黙に期待しているプログラムの<br>移植で何度となく痛い目を見たので覚えています。

_ arton (2008-07-19 11:41)

>この手のものを処分したりはしないのですか? <br>たまに処分しますが、つい、とっておいたりもして、いろいろです(VC++1.5のは、VC2.0に同梱されていた薄っぺらいマニュアルですね、多分)。さっきParadoxのマニュアルに気付いたし(これは後で捨てよう)。とは言え、Amiga関連のしか残っていないような。

_ arton (2008-07-19 11:41)

地震だ!


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|

ジェズイットを見習え