プロが教えるわが家の防犯対策術!

これについては×××ページを参照…みたいなことを書こうとする場面(コード生成の場面)の所で、これのページを書く事をコード生成というのでしょうか? 教えていただけると幸いです。すみません。以下のURLです。
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
で、これについては×××ページを参照…みたいなことを書こうとする場面(コード生成の場面)で、×××ページという具体的なページ番号は分からない筈です。全部揃ってから始めて(つまり、リンクの場面で)それが何ページ目なのか(何番地なのか)が分かる。分かってからでないと「×××ページを参照」と書けない。この説明のコード生成の場面の所をもう少し詳しく教えていただけると幸いです。すみません。という所で、頭の中だけで、これについてはxxxページを参照と書こうと思っている所という解釈で合っていますでしょうか?教えていただけると幸いです。すみません。

A 回答 (5件)

何を言われているのか読み手にはサッパリわかりません。

。。(;_;)
何の説明を読まれていて何がわからないのでしょう???

人が書いたプログラム(ソースコード)をコンパイルしてバイナリファイルを作る際のバイナリファイルの内部構造みたいなことを言われていますか?
    • good
    • 4

コードを書いている時点ではアドレスがわかりませんので、関数名や変数などは名前(ラベル=文字列)として記載しておくのです。


名前(ラベル)を付けてコードを書き、コンパイルの時点ではまだアドレスは決まっていませんが、リンクを行うことにより、それぞれ名前(ラベル)のアドレスが決まり(解決=つなぎ合わせる)ます。
    • good
    • 0
この回答へのお礼

では、頭の中でこれについてはxxxページを参照と書こうと思うのが、コード生成ではないのでしょうか?教えていただけると幸いです。すみません。再喝になりますが。

お礼日時:2021/09/10 04:07

No.2:追記



「コード生成」はコンパイルのことですので、人間が頭の中で考えることではありません。関数や変数で「×××ページを参照」と考えた場合、人間はコードを書くときに「×××」という名前(ラベルや関数名や変数名など)を文字列として記載・表記するだけのことです。
コード生成=コンパイルの時点では、この名前に関しては解決していません。どこかに有るかもしれないし、無いかもしれない。それを解決するのがコンパイル後のリンクです。リンクにより、名前が(セグメント内の)アドレスとして変換されます。無い場合は、リンクのエラーとなります。
    • good
    • 0
この回答へのお礼

例えば、C言語(=日本語で鳥と呼ばれている。)で、機械語(=英語でバード呼ばれている。)で、C言語の鳥と呼ばれるファイルを呼び出すプログラムを書き、それをコンパイル後、コンパイルされたC言語と機械語をリンクさせるプログラムを書く。それが、コード生成の事である。という解釈で合っていますでしょうか?教えていただけると幸いです。すみません。

お礼日時:2021/09/10 15:45

No.3:追記



仰っていることがよくわかりませんが、
テキストを機械語にすることがコンパイルです。ただ、コンパイルした時点では名前が解決しませんので、名前を解決するためにリンクを行います。コンパイルやリンクは「プログラムを書く」ことではなく、書いたプログラムに対する処理です。
    • good
    • 0
この回答へのお礼

何か例を出して頂けないでしょうか?教えていただけると幸いです。すみません。

お礼日時:2021/09/10 23:04

No.4:追記



例えば、a.c と b.c というふたつのソースコードを書いたとします。a.c には
b.c に含まれる func() という関数を呼び出しているとします。
a.c と b.c をコンパイルしオブジェクト a.obj と b.obj をコード生成した状態では a.obj 内では func() が存在するのかどうかまだわかっていません。a.obj と b.obj をリンク処理し実行可能ファイルを生成した時点で、はじめて func() の呼び出し元と呼び出し先がリンクされてアドレス(セグメント内のオフセット)が決まります。
    • good
    • 0
この回答へのお礼

すみません。①オブジェクトとはなんでしょうか? ②セグメントとはなんでしょうか?③オフセットとはなんでしょうか?教えていただけると幸いです。大変恐縮ですが。

お礼日時:2021/09/11 11:33

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