祝・GCC 3.0リリースat UNIX
祝・GCC 3.0リリース - 暇つぶし2ch726:名無しさん@お腹いっぱい。
11/06/11 12:08:55.06
>>725
実はC++に詳しくないので、そういう書き方があったのは初めて知った。
今の言語規格にはないやり方で、わざわざ利用しているとしたら、理由はわからない。

ただ、今の言語規格ではAのコンストラクタは必ずBのコンストラクタに先立って実行されるので、
継承元のコンストラクタを呼んでるようなコードが、Bのクラスの一番初めの実行文でない場合、
処理の実行に影響がないかどうかは気をつけないといけないと思う。

727:名無しさん@お腹いっぱい。
11/06/11 17:30:51.28
>>725
コンストラクタを呼んでるつもりで、実は一時オブジェクトを作って捨ててるだけ、ってのはたまに見る。
公開されてるソフトにそんなの入ってるとは思わないけどな。
ソフト名を晒してくれると面白いかもしれない。

728:名無しさん@お腹いっぱい。
11/06/11 17:36:41.18
初期化子は結構早い段階で規格に入っているしなあ。
"annotated"の頃には入っていたんじゃない?

729:名無しさん@お腹いっぱい。
11/06/11 17:59:56.17
>>727
kdeaddons-3.5.10の中の kate/tabbarextension/plugin_katetabbarextension.h
というファイルでそういう箇所があります。(本家で公開されてるソースです)

gccのバージョンを上げるとエラーになるため、問題が発覚します。

730:名無しさん@お腹いっぱい。
12/09/14 21:23:43.48
GNU asで、

mov (%ebx), %eax ← ディスプレイスメント(オフセット)なし
mov 0x12(%ebx), %eax ← 8bitディスプレイスメント
mov 0x12345678(%ebx), %eax ← 32bitディスプレイスメント

のようなアドレッシングモードがあって、
ディスプレイスメントのサイズの違う各命令のどれを使うかは
アセンブル時に実際の値で判断して自動決定されますが、

敢えてディスプレイスメントのサイズを明示指定するにはどう書けばいいんでしょう?

たとえば、強制的に32bitディスプレイスメントの命令を使いたいのですが、
mov 0x00000000(%ebx), %eax とか書いても
mov (%ebx), %eax でアセンブルされてしまいます。(dispなし)

mov 0x00000012(%ebx), %eax とか書いても
mov 0x12(%ebx), %eax でアセンブルされてしまいます。(dispは8bit)

(わかってるとは思いますが、オペランドのデータサイズのことではありません)

命令コードを直接.byteで書け、はナシでお願いします。

わかる方いますか?

731:730
12/09/15 10:44:48.95
自己解決しました

732:名無しさん@お腹いっぱい。
12/09/15 11:26:35.79
>>731
どうやって解決したの?

733:名無しさん@お腹いっぱい。
12/09/15 11:37:47.55
回答できなかった者の逆に教える義理はないよ

734:名無しさん@お腹いっぱい。
12/09/15 12:43:03.30
日本語で。

735:名無しさん@お腹いっぱい。
12/09/15 13:18:08.40
元々疑問にも思ってなかったことの回答聞かされても誰も興味ねーだろ

736:名無しさん@お腹いっぱい。
12/09/15 22:13:01.41
このスレなんですか

737:名無しさん@お腹いっぱい。
12/09/16 16:27:31.40
今月はじめ、職場に新しい組み込みマシン(ファンレスの結構省電力構成)が入りました。
多分私が開発全般をまかされそうな雰囲気です。業務的にとある構造分析や
シミュレーションなど行う必要があり、プログラムにアセンブラを使用するのは
聞いていたのですが、添付のサンプルソースコードからチラッと見えたのは
LD A,(HL)という命令でした。

「うへぇ~、よりによってZ80かよ」

アドレッシングモード皆無、リロケート不可、使いにくいインデックスレジスタ、
今時の関数引数のスタック渡しに対応できるのか不安はつきませんし、
今の若者はこんなCPU使わないので人材も少なくソフト開発も大変です。
おそらく導入に際して、大学など教育機関で最初にZ80に触れて刷りこまれた人間が
強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。

昔、当時、8bitCPUでi8080上位互換でi8085よりも多くのツギハギ命令を追加拡張した
Z80は大学など教育機関に浸透していて、日本のCPU界に多くのバカが輩出しました。

これから私は、おそらくそういうバカが、ADD A,(HL)はできるのにADD B,(HL)は
できないのかとか、相対アドレスのCALL命令はないのとか、
スタックフレームポインタとして使いたいのにLD HL,SPっていう命令ないじゃんとか、
アセンブラ通気取りの偏ったどうでもいい我侭を言い出し(だからZ80使うんじゃねーよ)
それと戦わなければならないのでしょう。そして時代によって決着している、
過去30余年のCPU界隈のくだらないそれらの議論が再現され、それに巻き込まれるの
でしょう。もう今からうんざりです。

だからお願いです。教育現場ではi386でもi568でもi686でも
x86_64でもなんでもいいですが現行のCPUにしてください。

教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。

738:名無しさん@お腹いっぱい。
12/09/16 17:09:36.03
コピペ改変
スレリンク(linux板:298番)

739:名無しさん@お腹いっぱい。
12/09/16 21:18:01.14
>>737
ネタニマジレスするとLD HL,SPは LD HL,0 / ADD HL,SP で桶。
スタックフレームならオフセット加算は必須なので、
オフセットを先にHLにロードしておいてからSPを加算する。
例えば関数の第1引数ならreturn addressの2byteの次だから、
LD HL,2 / ADD HL,SP ってやって、以降(HL)で値を取ってくる。

740:名無しさん@お腹いっぱい。
13/08/20 NY:AN:NY.AN
ほむほむ

741:名無しさん@お腹いっぱい。
13/09/02 20:03:19.80
祝・GCC 3.0リリース

742:名無しさん@お腹いっぱい。
13/09/27 16:40:54.47
祝・GCC 3.0リリース

743: 【中吉】 忍法帖【Lv=40,xxxPT】(1+0:8) 【18.2m】 電脳プリオン
14/02/01 19:08:01.00 BE:405408285-PLT(12081)
今のバージョンは?

744:名無しさん@お腹いっぱい。
14/04/05 23:11:46.52


745:名無しさん@お腹いっぱい。
14/05/15 12:13:07.18
ぬるぽ

746:名無しさん@お腹いっぱい。
14/07/05 12:28:40.14
かっ!


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch