無料Wikiサービス | デモページ
検索

アクセス数
最近のコメント
kprobe - ななし
ksetの実装 - スーパーコピー
カーネルスレッドとは - ノース
カーネルスレッドとは - nbyst
asmlinkageってなに? - ノース
asmlinkageってなに? - よろしく
はじめ - ノース
はじめ - ノース
はじめ - 楽打連動ユーザー
はじめ - 楽打連動ユーザー
Adsense
広告情報が設定されていません。

asmlinkageってなに?のコメント一覧


1. よろしくさんのコメント - 2013/06/02 19:00:26
0x08048412 <+6>: movl $0xaea4a4af,-0x13(%ebp)

0x0804842c <+32>: movzbl -0x9(%ebp),%eax

gdbでこういう2つのものが出てきました。
どういう命令なんでしょうか?
2. ノースさんのコメント - 2013/06/03 15:31:58
お問い合わせありがとうございます。ご存知かと思いますが、Cのローカル変数はスタック上に確保されます。関数の最初に、スタックポインタをbpに設定し、ローカル変数分スタック領域確報ということでspを減算します。従ってbpからマイナス方向に向かってローカル変数を参照することが可能となるわけです。

下記のCのプログラムにおいて、お問い合わせの内容のアセンブラの出力展開となりますので、この出力結果を見ていただいたほうがいいかと思います。

今後ともよろしくお願いいたします。
void test(void);

main()
{
test();
}

void test()
{
int a, b;
unsigned char c;

a = 0xaea4a4af;
c = 1;
b = c;
}


080483a1 <test>:
80483a1: 55 push %ebp
80483a2: 89 e5 mov %esp,%ebp
80483a4: 83 ec 10 sub $0x10,%esp
80483a7: c7 45 fc af a4 a4 ae movl $0xaea4a4af,-0x4(%ebp)
80483ae: c6 45 fb 01 movb $0x1,-0x5(%ebp)
80483b2: 0f b6 45 fb movzbl -0x5(%ebp),%eax
80483b6: 89 45 f4 mov %eax,-0xc(%ebp)
80483b9: c9 leave
80483ba: c3 ret
1