ぼんさい塾

ぼんさいノートと補遺に関する素材や注釈です.ミスが多いので初稿から1週間を経た重要な修正のみ最終更新日を残しています.

関数

2013-09-02 18:53:42 | 暮らし
progC.pdf
progC-s.pdf
記事一覧

 
             関数の呼び出し: conj(conj(z))

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?