progC.pdf progC-s.pdf 記事一覧 |
|
progC-s.pdf に「D92%関数」を追加しました.
参考資料([n]は本文でも引用):
[1] サブルーチン - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%B5%E3%83%96%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3
[2] 呼出規約 - Wikipedia
http://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84
[3] (再掲) BCC Developer - Hi-HO
http://www.hi-ho.ne.jp/jun_miura/bccdev.htm
[4] 関数呼び出しのスタックの使われ方 - とあるソフトウェアエンジニアのブログ
http://www.ohfuji.name/?p=1411
[5] 関数とアセンブラ - C言語を独習するよ!アセンブラ(アセンブリ言語)も ...
http://blogs.yahoo.co.jp/c_selfstudy/folder/87838.html
[6] Gnu Assembler - Hazy Moon
http://www.hazymoon.jp/OpenBSD/annex/gas.html
[7] 記憶クラス
http://www.tamasoft.co.jp/lc/hlp/F030.html
[8] 関数のプロトタイプ
http://wisdom.sakura.ne.jp/programming/c/c27.html
それを全てmain()関数よりも前に定義して、さらに関数から関数を呼び出すときの関係を把握しなければいけません。ハッキリ言って無理です。関数のプロトタイプは、実は最近のC言語で実装されるようになったとっても素敵な技術らしいです。関数のプロトタイプ宣言は、関数よりも前に次のように宣言します。
[9] C: プロトタイプ宣言を忘れると何が起きるか - sardineの日記
http://d.hatena.ne.jp/sardine/20080807
補足:(1) 上図のリストは Borland 社のデバッガ TD32.EXE によるものです.[5]のようなリストでなく,見慣れない人が多いと思いますがご容赦.
(2) コンパイラはオブジェクトコードを最適化するため,簡単な例では一般的な処理が見え難くなっています.例えば
int neg(int k){return -k;}
をコンパイルすると
push ebp
mov ebp,esp
mov eax,[ebp+08]
neg eax
pop ebp
ret
でおしまい.コンパイルのされ方は progC-e.pdf(演習)で調べます.
(3) [9] の問題(前方参照)は「#include」の順番も含め,プリプロセッサの話で述べます.
(4) GNUデバッガ - Wikipedia
http://ja.wikipedia.org/wiki/GNU%E3%83%87%E3%83%90%E3%83%83%E3%82%AC
に「このデバッガは、グラフィカルユーザインタフェース (GUI) がなく、コマンドラインユーザインタフェース (CUI) である。DDD、Eclipse CDT、GDBtk/Insight、GNU Emacs の「GUDモード」といったフロントエンドがある。 これらは、統合開発環境のデバッガ同様の機能を備えている。」と紹介されているので,気が向けば勉強します --- 重いとタブレットPCに向かないからBccDev?