• ベストアンサー

ret とretfについて。

AsarKingChangの回答

  • ベストアンサー
回答No.4

あ、ミス#2さん指摘ありがと。 x86系は、PCじゃなくてIP=インストラクションポインタですね^^ こちら、80系出身なもので(んま、asm職人にはどっちでも通じますが^^)一応ミスはミス。

関連するQ&A

  • retやretfについて。

    アセンブリ言語では、retとretfとはどういう事でしょうか?nearリターンとfarリターンの違いは何でしょうか?教えていただけないでしょうか?すみません。 nearは現在のセグメント内で戻る。 farの方は、セグメントも復元して戻る。 の違いだと。 直訳するとセグメントは分割ですが、nearは現在の分割に戻る。farは、分割も復元して戻る。という意味になると思うのですが、どういう事でしょうか?差し支えなければ教えていただけないでしょうか?すみません。

  • 機械語に直すことについて。

    (機械語データ) (アセンブリ言語) b8 57 61 6b 61 mov $0x616b6157,%eax 53 push %ebx 50 push %eax ba 04 00 00 00 mov $0x4,%edx bb 01 00 00 00 mov $0x1,%ebx b8 04 00 00 00 mov $0x4,%eax 89 e1 mov %esp,%ecx cd 80 int $0x80 58 pop %eax 31 c0 xor %eax,%eax 5b pop %ebx c3 ret これのintと movとxor の機械語が分かりません。後、retの機械語が、farなのかnearなのかも分かりません。教えていただけないでしょうか?すみません。

  • アセンブリ言語についてと言語の違いについて。

    高水準と低水準言語の違いは、まず、マシン語の2進数の羅列では分からないからアセンブリ言語が生まれ、 アセンブリ言語よりさらに人間が理解できる言語が、C言語やBASICなどでしょうか?教えていただけないでしょうか?合っていますでしょうか?

  • アセンブリ言語とニーモニックの違いってなんですか?

    アセンブリ言語とニーモニックの違いってなんですか?

  • 囚人のジレンマゲーム C言語

    囚人のジレンマゲームをC言語で作りました。そのうちのこの部分を変えて、相手が協調の際に9回まで裏切り、後は全部協調とするにはどうしたらいいのでしょうか。 int you(int bc) //PLAYER1 { int ret; /* if(bc==COOPERATION){ret=COOPERATION;} else{ret=DEFECTION;} */ ret=DEFECTION; return(ret); }

  • 機械語とアセンブリ言語の違いを教えてください

    機械語とアセンブリ言語の違いを詳しく教えていただけんか?

  • アセンブリのプログラムです。

    アセンブリのプログラムで質問があります。cのプログラムのオブジェクトファイルを生成して、objdumpというコマンドでアセンブリ言語を表示させてみたのですが、全然分からなくて、困っています 。どうか、アセンブリプログラムの、解説をよろしくお願いします。できれば、1文1文解説してもらえるとありがたいです。あと、スタックの動き、確保などの解説もあるとありがたいです。よろしくお願いします。 cのプログラム int fact(int p) { if(p<=1) return 1; else return fact(p-1); } アセンブリのプログラム push %ebp mov %esp,%ebp sub $0x8,%esp cmpl $0x1,0x8(%ebp) jg 15 <_fact+0x15> movl $0x1,-0x4(%ebp) jmp 24 <_fact+0x24> mov 0x8(%ebp),%eax dec %eax mov %eax,(%esp) call 0 <_fact> mov %eax,-0x4(%ebp) mov -0x4(%ebp),%eax leave ret nop nop nop

  • デバイスドライバー作りに関する質問

    デバイスドライバーでは、アセンブリ言語を使う部分があるとの事で、アセンブリ言語の技術を伸ばす為、デバイスドライバーを作ってみようと思うのですが 実際はどれくらいアセンブリ言語を使うのでしょうか またはデバイスドライバーというのは組み込みの分野ですか?

  • 低水準言語について。

    低水準言語があるのは、例えば、この人は、これができた。あの人は、これができた。しかし、一つだけできたのでは、意味がないから、それを総称(合併)して、アセンブリ言語という名前になった。で、 アセンブリ言語がなければ、C言語などの高水準言語は、誕生していなかった。という事で、合っていますでしょうか?教えていただけないでしょうか?すみません。

  • C言語の関数の質問です

    C言語の質問です 最近C言語を始めました。以下の問題がわかりません。 int型の数値を入力して結果をdouble型の戻り値を返すことはできないのか。 関数の値のやり取りでも暗黙の型変換や明示的な型変換はできるのか。 #include <stdio.h> double square(int x); int main(void) { int num;   double ret;   scanf("%d",num); ret = square(num);    printf("%ld",ret); return(0); } double square(int x){ return(x*x); }