Re: gnu ld, binutils についての質問です。
河野真治 @ 琉球大学情報工学です。
In article <bb7mc9$80$1@bgsv5648.tk.mesh.ad.jp>, cltack@xug.biglobe.ne.jp writes
> 逆アセンブルした結果から推測すると、宣言した変数が全てスタック上
> でやりとりされ、bogus_funcにポインタを渡すと、スタック
> へのポインタが渡され、メモリの実体を指してないようです。
ま、逆アセンブルの結果を見ればわかると思いますが...
> int bogus_func(int* bar)
> {
この段階でbarがスタックセグメントを指しているってことがコン
パイラに伝わらないとデータセグメントが使われてしまいますよね。
教える方法があるかどうかは知りません。
> {
> int foo;
> bogus_func(&foo);
こっちで「エラー」を出すのが正しいとは思うけど、
でも、ポインタをデータとスタックで、やりとりするつもりなら、
スタックセグメントとデータセグメントをわけるのは、止めた方が
良いと思うよ。(ま、言うことを聞くような奴ならそんなことは
しないわけだが... せいぜい苦労してください... 8086 なら
ともかく...)
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
PRESTO, Japan Science and Technology Corporation
河野真治 @ 琉球大学工学部情報工学科,
科学技術振興事業団さきがけ研究21(機能と構成)
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735