ここから質問投稿すると、最大10000ポイント当たる!!!! >>

call L_puts$stub
というのはcall命令の意味は分かりますが後ろのL_puts$stubというのはどういった意味なのでしょうか?何かを足しているんですよね....?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

おそらく、Hello World を表示するようなサンプルコードをコンパイルして


アセンブラのソースを出力させたと思われるので、
その前提で書いてみます。

L_puts$stub はスタブ関数です。
スタブ関数とは、とりあえず置いておく関数という意味です。

文字列の表示のために _puts を呼び出したいのですが、
_puts の実体は、動的リンクで呼び出されるために、
リンク時にはアドレス解決ができないので、とりあえず、
スタブ関数を置いておきます。

実行時には、実際の _puts のアドレスが解決されるので、
このスタブ関数は _puts に直接ジャンプするコードに置き換えられ、
文字列が表示されるようになります。

ですから、アセンブラのソース上では、L_puts$stub は、
_puts の参照や、halt命令が並んでいるだけの意味不明なコードに見えますが、
実行時には、_puts を直接呼び出すコードになる、と理解してください。
    • good
    • 0
この回答へのお礼

まさしくズバリでした。
もう少し条件を詳しく書くべきでしたね><すいません。
理解できました。ありがとうございます。

お礼日時:2010/11/28 17:56

ひとくちに「アセンブラ」といっても, ターゲットとするプロセッサやアセンブラによっていろいろな書き方がある. そして, それらの情

報を出さない限り答えることはできない.
    • good
    • 0

アセンブリ言語は、CPUによって違います。


また、アセンブラによっても詳細な点で違います。(書式、疑似命令、独自拡張マクロなど)

まずは、それをはっきりさせましょう。


単に「L_puts$stub」というラベルのような気がしますが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング