タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

asmに関するnamikisterのブックマーク (3)

  • 第6回(最終回) 関数の機能 ~ 関数間での連携 | gihyo.jp

    前回は、関数[1]が呼ばれた際に、関数内での局所的な情報をどのように管理するかについて説明しました。 今回は、関数呼び出しにおける連携方法について説明しようと思います。 引数と戻り値 引数 関数の呼び出し元は、さまざまな形式で引数を指定します。たとえば、 自身の局所変数の値 自身に指定された引数 他の関数の呼び出し結果 上記の値から導出された値(例: 四則演算/構造体参照等) 一方で(一般的な)言語仕様上から見て、呼び出された側にとっての引数は、関数終了まで領域が保持されている=終了後は必要ない、という点では局所変数と実質的に差異がありません。 そのため、Intel x86アーキテクチャで関数呼び出しを実現する場合、呼び出し元は引数をスタック上に格納します。 リスト1 呼び出し元での引数格納 movl $1, 0(%esp) movl $15, 4(%esp) 呼び出し先の関数は、スタック

    第6回(最終回) 関数の機能 ~ 関数間での連携 | gihyo.jp
  • 第4回 "case" の事情 | gihyo.jp

    前回は条件分岐を行うためのEFLAGSレジスタと条件分岐命令について説明しました。 しかし、プログラミングにおける重要な制御構造でありながら、単純な条件分岐では実現できないものとして、C/C++言語で言うところのswitch構文があります。 今回は、このswitch構文について、アセンブラの視点から見てみましょう。 if分岐の限界 たとえば: 変数 "x" に格納された値が0, 1, 2, 3, およびそれ以外の場合に、それぞれ異なる処理を行いたい。 という状況で、あまり手馴れていない人の実装は往々にして以下のようになります。 リスト1 if 分岐による実装 if(x == 0){ .... } else if(x == 1){ .... } else if(x == 2){ .... } else if(x == 3){ .... } else{ .... } 上記の例は、「⁠それ以外」

    第4回 "case" の事情 | gihyo.jp
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 1