祝・GCC 3.0リリースat UNIX
祝・GCC 3.0リリース - 暇つぶし2ch609:名無しさん@お腹いっぱい。
05/07/15 09:20:30
>>608
少し上から貼ると、こんなかんじ

CCCMD = x86_64-pc-linux-gnu-gcc -DPERL_CORE -c -D_REENTRANT
-D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O3 -mtune=k8 -march=k8
-msse3 -mfpmath=sse -ftracer -pipe -fforce-addr -minline-all-stringops
-mno-push-args -maccumulate-outgoing-args -fprefetch-loop-arrays
-fsched-spec-load -funit-at-a-time -Wall
x86_64-pc-linux-gnu-gcc -L/usr/local/lib -o miniperl \
miniperlmain.o opmini.o libperl.a -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
./miniperl -w -Ilib -MExporter -e '<?>' || make minitest
make: [extra.pods] Error 1 (ignored)
./miniperl -Ilib configpm --heavy=lib/Config_heavy.pl configpm.tmp
Can't find configpm on PATH, '.' not in PATH.
make: *** [lib/Config.pm] Error 29

確かに、カレントディレクトリにconfigpmはあるんだけど。

610:名無しさん@お腹いっぱい。
05/07/15 11:26:27
>>609
ふむ、よくわからんけど、config.sh の optim から最適化を外し
て、./Configure -S したあと、gmake するとか、thread 無しでコンパイルし
てみるとか。やってみたらどうかね。


611:名無しさん@お腹いっぱい。
05/07/15 11:30:09
よくわからんけど、メッセージだけ読むと PATH=.:$PATH make
コンパイラの違いは不明

612:607
05/07/15 15:45:30
やっぱり、インタプリタレベルスレッドを使わないと問題ないようです。
とりあえず、しばらくはperlだけ諦めます。

613:名無しさん@お腹いっぱい。
05/07/17 09:20:16
libpcapがgcc-4.0.1だと死にました。実際はtcpdumpから呼び出されて死ぬんだけど。
もう詳しい事はわからん。

614:名無しさん@お腹いっぱい。
05/07/17 09:51:55
>>613
gdb tcpdump core
backtrace

615:613
05/07/17 11:28:40
-O2なら平気で-O3だと駄目みたい。
他に何も指定して無くても。
アーキテクチャはx86_64です。

tcpdumpのexpression指定しなければ落ちません。

バックトレースは深すぎるので、適当に
-O3 -ggdb3でlibpcapを作って
-O0 -ggdb3でtcpdump作った結果。

#0 0x00002aaaaae3125b in icode_to_fcode () from /usr/lib/libpcap.so.0
#1 0x00002aaaaae3159c in icode_to_fcode () from /usr/lib/libpcap.so.0
#2 0x00002aaaaae33efd in bpf_optimize () from /usr/lib/libpcap.so.0
#3 0x00002aaaaae25c07 in pcap_compile () from /usr/lib/libpcap.so.0
#4 0x00000000004500f4 in ?? ()
#5 0x00002aaaaaf67893 in __libc_start_main () from /lib/libc.so.6

616:名無しさん@お腹いっぱい。
05/07/17 11:40:39
-finline-functionsが原因みたい。単体でも落ちた。

617:名無しさん@お腹いっぱい。
05/07/17 12:35:40
x86_64 ってOSによっては安定してなかったり?

618:名無しさん@お腹いっぱい。
05/07/17 17:21:39
どうなんでしょう。私は、gentoo linux使ってます。
4.1-CVSでもprofilebootstrap失敗するし、i386と比べたら安定してないんでしょうね。

619:名無しさん@お腹いっぱい。
05/07/17 23:06:57
>>615
> アーキテクチャはx86_64です。

何故先に言わん(w
シグナル受けたんならどのシグナルかくらい晒さないと…

620:名無しさん@お腹いっぱい。
05/07/18 02:25:22
>>619
シグナル核の忘れてました。SEGVです。

dmesgが埋め尽くされてる。
tcpdump[24386]: segfault at 0000000000000030 rip 00002aaaaae3125b rsp 00007fffff82f1a8 error 4


621:名無しさん@お腹いっぱい。
05/07/18 07:45:07
バウンダリ関係かねえ。
libpcapを-g付きでcompileしてdebugが王道だと思うけど、
-mpreferred-stack-boundary= 辺りを試してみるのもいいかもねえ。
-march=k8にはなっているよね?

622:名無しさん@お腹いっぱい。
05/07/18 10:13:07
Linux 2.6.12.3にしてみたら動作が変わった…。

-O -finline-funcionsはokになりました。
-O2 -finline-functionsだと落ちます。
-O2はonになるフラグが多すぎて、ちょっと調べきれないです。

-finline-limitで11までに制限すればok。12以上で落ちます。
-march=k8指定、-mpreferred-stack-boundaryは4,8,12はどれも解決にはなりませんでした。

なんか、デバッグ情報が出るようになったので貼ってみます。libpcap-0.9.3です。
#0 find_levels_r (b=0x0) at optimize.c:222
#1 0x00002aaaaae2df2b in find_levels_r (b=0x6fe7b0) at optimize.c:230
#2 0x00002aaaaae2df1f in find_levels_r (b=0x6fdbc8) at optimize.c:229
#3 0x00002aaaaae2ec40 in opt_loop (root=0x6fdbc8, do_stmts=0)
at optimize.c:251
#4 0x00002aaaaae303fc in bpf_optimize (rootp=0x2aaaaaf463e0)
at optimize.c:1740
#5 0x00002aaaaae2592a in pcap_compile (p=0x6fd2b0, program=0x7fffffaf1260,
buf=0x6fd120 "port 80", optimize=1, mask=16777215) at gencode.c:386
#6 0x00000000004500f4 in ?? ()
#7 0x00002aaaaaf63893 in __libc_start_main () from /lib/libc.so.6

gcc-4.0.1で-fstack-check, 3.4.4で-fstack-protector使ってみたけど何も出ませんでした。

623:名無しさん@お腹いっぱい。
05/07/18 10:38:15
ifのjumpかな?
-Osだとどうだろう。

-falign-functions -falign-jumps -falign-loops -falign-labels
-freorder-blocks -fprefetch-loop-arrays がオフ。


624:名無しさん@お腹いっぱい。
05/07/18 11:19:08
-fno-strict-aliasing
をつけるとどうなる?

URLリンク(makimo.to)
URLリンク(slashdot.jp)

625:名無しさん@お腹いっぱい。
05/07/18 11:35:46
>>623
-Osはだめでした。

>>624
いけました。ばっちりです。
いろいろ問題ありそうですけど、今のところこれ以外当たってないんですよね。
portageつかってるから、まずいのがわかっている場合は回避してる可能性がありますが。

626:名無しさん@お腹いっぱい。
05/09/18 16:40:56
gcc4は-O1でも-fprefetch-loop-arrays効くのかな

627:名無しさん@お腹いっぱい。
05/09/29 09:12:48
4.0.2が出ました。


628:名無しさん@お腹いっぱい。
05/09/29 21:48:28
3.3や3.4より早いバイナリを作れるようになるのはいつですか?

629:名無しさん@お腹いっぱい。
05/09/30 00:18:55
4.3や4.4になるまでお待ちください。

630:名無しさん@お腹いっぱい。
05/09/30 07:45:55
つーか3.3, 3.4でいいじゃん。
4系はerror recoveryちょっと賢くなった気がするが。

631:名無しさん@お腹いっぱい。
05/09/30 14:43:19
GCCは3.2.xのころが一番早くて安定しててよかった。。。

632:名無しさん@お腹いっぱい。
05/09/30 14:44:13
631です。漢字間違えた。
「早」 → 「速」


633:名無しさん@お腹いっぱい。
05/10/24 01:07:39
でも4.xのcc1plusは明らかに3.xのより速いよ。

634:名無しさん@お腹いっぱい。
05/10/24 06:01:42
4.1のcc1plusは速い。
吐くコードは知らん。

635:名無しさん@お腹いっぱい。
05/11/28 17:33:48
gcc-2.9では通るのにgcc-3.3では voidのとこでエラーになるんですが何故?
prase error before `!' token



636:名無しさん@お腹いっぱい。
05/11/28 17:46:07
コードさらせYO

637:名無しさん@お腹いっぱい。
05/11/29 14:54:40
なんでだお!

638:名無しさん@お腹いっぱい。
05/11/29 16:47:57
それだけの情報で、どう指摘するんだお!

639:名無しさん@お腹いっぱい。
05/11/29 19:12:21
先生! 問題を明確にしない限り、答える事もできないと思います!
\  
   ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧_∧∩
    ( ・∀・)/
 _ / /   /  
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||


640:名無しさん@お腹いっぱい。
05/11/29 19:15:13
(・3・) 先生は出張中です。

641:名無しさん@お腹いっぱい。
05/12/02 14:04:25
3.4.5 が出ました。

642:名無しさん@お腹いっぱい。
05/12/06 23:45:35
4.2まだー?

643:名無しさん@お腹いっぱい。
05/12/12 19:33:39
5.0はどうですか

644:名無しさん@お腹いっぱい。
05/12/21 10:16:41
>>635
そのgccエラーメッセージおかしいよ
野良ビルドしたんじゃないの?
praseってスペルミスありえない

645:名無しさん@お腹いっぱい。
05/12/21 14:39:52
エラーメッセージはコピペが基本だよなあ

646:名無しさん@お腹いっぱい。
05/12/30 15:49:37
ところでアンインストールはどうやったらいいの?
make uninstallだと弾かれる。

647:名無しさん@お腹いっぱい。
05/12/30 16:06:53
アプリのアンインストールってどうやるの?
スレリンク(unix板)

648:名無しさん@お腹いっぱい。
06/02/25 21:54:59
4.1って安定版?


649:名無しさん@お腹いっぱい。
06/02/25 22:13:30
まだスナップショットしか出てないと思うけど。
私はLinux on amd64でメインに使ってます。

650:名無しさん@お腹いっぱい。
06/02/26 00:37:13
>649
完成したら4.2として公開されるのでしょうか?


651:名無しさん@お腹いっぱい。
06/02/26 02:40:45
4.2ってスナップ出てるんあないっけ?

652:名無しさん@お腹いっぱい。
06/02/26 22:37:36
>>650
4.1が完成したら4.1として公開されますよ。
Linuxみたいに「このバージョンは安定版、このバージョンは実験版」
という区別はありません。


653:648
06/02/26 23:58:48
どうもありがとうございました


654:名無しさん@お腹いっぱい。
06/02/27 03:06:18
そうはいってもGCCってmajor > minorなうちは実験版という評価がもっぱらのような

655:名無しさん@お腹いっぱい。
06/02/27 18:26:02
2.5.8とか

656:名無しさん@お腹いっぱい。
06/02/27 18:48:03
gcc-1.4.2 はいいデキでしたよ。


657:名無しさん@お腹いっぱい。
06/02/28 12:40:22
>>654
評価っていうかジンクスでしょ

658:名無しさん@お腹いっぱい。
06/03/01 15:25:28
gcc-4.1.0 キタ━━━(゚∀゚)━━━ !!!!!

659:名無しさん@お腹いっぱい。
06/03/02 04:56:28
maji?


660:名無しさん@お腹いっぱい。
06/03/02 06:29:44
>>659
URLリンク(gcc.gnu.org)

> February 28, 2006
> GCC 4.1.0 has been released.

URLリンク(gcc.gnu.org)

661:名無しさん@お腹いっぱい。
06/03/02 21:52:08
4.0.2 までは素直にbuild通ってたのに4.1.0で落ちる orz
Solarisダメポ

662:名無しさん@お腹いっぱい。
06/03/03 12:29:17
Solarisはgccのバージョンが上がる最初の版は大抵そのままではうまくいかないw

663:名無しさん@お腹いっぱい。
06/03/04 18:54:23
New GCC Heavy on Optimization
URLリンク(www.internetnews.com)

664:名無しさん@お腹いっぱい。
06/03/05 11:34:19
>>663 kwsk


665:!= 633
06/03/05 15:06:27
>>664
十分に詳しいと思うが。もっと必要ならWikiなりML Archiveなり漁るが良し。

666:名無しさん@お腹いっぱい。
06/03/05 17:30:07
「今度こそ、GCC 4.1正式リリース」
URLリンク(slashdot.jp)


667:名無しさん@お腹いっぱい。
06/03/11 16:00:02
4.1使った人、どうよ?

668:名無しさん@お腹いっぱい。
06/03/12 15:01:42
.0のバージョンの割には3.4.0や4.0.0の時よりいい

669:名無しさん@お腹いっぱい。
06/03/13 19:49:58
GCC 4.0.3
URLリンク(kerneltrap.org)

670:名無しさん@お腹いっぱい。
06/03/14 10:19:50
sparc Solaris9 でlibtool と texinfo 入れて --disable-libgcj したらなんとか
gcc4.1.0コンパイルできた・・・
-m64 も使える。さて、何からやるか。

671:名無しさん@お腹いっぱい。
06/03/15 17:53:04
ちょっとコンパイルしてみたけど、以前のバージョンなら通ってたものが
エラーになるね。
error: static declaration of 'XXXXX' follows non-static declaration
とか、、、該当行のstatic外したら通ったが。

672:名無しさん@お腹いっぱい。
06/03/19 02:39:52
4系列になってから、全体的にCの構文に厳しくなったらしい。
muttなんかも構文警告が構文エラーになって、ビルドできなかった事がある。


673:名無しさん@お腹いっぱい。
06/03/19 22:33:39
3も2よりだいぶ厳しくなったといわれてたな。

674:名無しさん@お腹いっぱい。
06/03/20 12:26:36
LLVMまだ?

675:名無しさん@お腹いっぱい。
06/03/25 16:36:31
gcc4.1.0でgcc4.1.0を何回もコンパイルすると不定期にアセンブラが.identが見付からないよと言う壊れたコンパイラになる

676:名無しさん@お腹いっぱい。
06/05/26 15:37:24
gcc4.1.1きた?

677:名無しさん@お腹いっぱい。
06/05/26 17:14:25
>>676
ktkr
URLリンク(gcc.gnu.org)

678:名無しさん@お腹いっぱい。
06/05/30 15:35:05
gcc-4.1.1 Solaris玉砕 T_T);

679:名無しさん@お腹いっぱい。
06/05/30 20:31:56
GCCもそうだけど、GNUのツールってだいぶLinux-centricに
なってきて、広い影響力は以前より落ちている気がするね。


680:名無しさん@お腹いっぱい。
06/05/31 15:24:52
NetBSD-currentなんかも、ずっと3.3.3のまんまだもんな。

*BSDにおいてはGNU関連ツールは使わざるを得ないから使ってると
誰かが雑誌で言ってたな。


681:名無しさん@お腹いっぱい。
06/05/31 20:49:12
NetBSDは只今GCC4に切り替え中。

確かに NetBSD ぐらい CPU に対応してると、それ全部で使えるコンパイラを
新たに用意するのは難しいでしょうね。
GCCでもマイナーなCPUは切り捨てそうですけど。

682:名無しさん@お腹いっぱい。
06/06/27 20:26:29
OpenCC書いてくれTheo

683:名無しさん@お腹いっぱい。
06/09/03 11:45:37
gcc 大きくなりすぎ
もっと軽い free な cc ないんだっけ?

684:名無しさん@お腹いっぱい。
06/09/03 12:14:51
お前には関係ない。

685:名無しさん@お腹いっぱい。
06/09/03 12:17:23
ビーのコアチームとやらで作ればいいじゃんwwwwwwwww

686:名無しさん@お腹いっぱい。
06/09/04 00:21:07
>>683
TenDRAを入れたいんだが未手付
URLリンク(www.tendra.org)
URLリンク(www.ten15.org)

後lccというのがある
URLリンク(www.cs.princeton.edu)


687:名無しさん@お腹いっぱい。
06/09/04 02:43:19
吐くコードが小さくて速けりゃgccが大きくたって問題はなかろうに。
軽い処理系だと十分なoptimizeができるとは思えんが。


688:名無しさん@お腹いっぱい。
06/09/04 13:12:28
gccもそのうちXみたいにモジュール化するんだろうか

689:名無しさん@お腹いっぱい。
06/09/04 14:12:08
TCC: Tiny C Compiler
URLリンク(fabrice.bellard.free.fr)

>>687
小さい軽い処理系に最適化なんて求めないよ


690:名無しさん@お腹いっぱい。
06/09/04 15:46:35
サイズに関する最適化は欲しい

691:名無しさん@お腹いっぱい。
06/09/04 18:40:32
熟女系の作品だとサイズが縮みます。


692:名無しさん@お腹いっぱい。
06/09/04 20:52:37
膨らむ奴もいる

693:名無しさん@お腹いっぱい。
07/10/12 01:45:29
保守

694:名無しさん@お腹いっぱい。
07/10/18 17:53:02
>>681
gccの問題というより、
NetBSDの方がバージョン移行のCPUテスター不足なんじゃないの?
Linuxはバージョン上げるのに成功しているし。
マイナーだと厳しいよね。

695:名無しさん@お腹いっぱい。
07/11/04 14:20:56
>>694
Linuxはとりあえずバージョン上げて、何かあったら大騒ぎするというやり方。

696:名無しさん@お腹いっぱい。
08/02/16 21:02:53
「Linuxは」というほどディストリでgccの扱い共通してない。
カーネルがgcc依存ってのくらい。

697:名無しさん@お腹いっぱい。
08/06/06 17:54:46
Fedora Core辺りは、
> とりあえずバージョン上げて、何かあったら大騒ぎする
のが仕事だしね。

698:名無しさん@お腹いっぱい。
08/06/24 22:58:25
ほう、ついにGCC3.0が出たのか・・・時代の最先端を行く俺には欠かせないツールになるよ

699:名無しさん@お腹いっぱい。
08/08/11 12:31:36
ところで、昔のC言語ではダメだったのに、今のCコンパイラでは
double sqrt(double); に
sqrt(2) とか引数に整数などdouble でないものを書いてもちゃんと
コンパイルして2の平方根の近似値を返すのはどうして?
プロトタイプ宣言を元にして、引数の型の自動変換が行われるの?
それってC++の仕様じゃないかな?

700:名無しさん@お腹いっぱい。
08/08/11 12:46:07
タイムトラベラーの方ですか?

C89以降、関数のプロトタイプ宣言(とそれに基いた昇格)はCでも当たり前の事ですが。

701:名無しさん@お腹いっぱい。
08/08/11 16:11:49
ついでに質問しちゃおう。xを変数とするとき、

x = x++;

という代入文は、結果がどうなるか不定だと思うんだけども、
そこのあたりどうなっているでしょうか?

702:名無しさん@お腹いっぱい。
08/08/11 16:13:33
ム板で聞いた方がよくね

703:名無しさん@お腹いっぱい。
08/08/11 16:21:06
>>701
おいおい、よく見てみろ。(例が悪いよ)
= と ++ の動作が、どちらが先だとしても x の値は +1 されるだろ。
よって、結果がどうなるか不定ではない。

704:名無しさん@お腹いっぱい。
08/08/11 16:22:53
>>701
つ シーケンスポイント
規格持っているならそこを読んで。
ないならググッて。

705:名無しさん@お腹いっぱい。
08/08/11 16:28:20
せっかく2.95を超える世界制覇バージョンとなることが約束された3.0がリリースされたのに
他に言うことはないのか?

706:名無しさん@お腹いっぱい。
08/08/11 16:36:02
ないな。

707:名無しさん@お腹いっぱい。
08/08/11 17:54:18
「シーケンスポイントに関する規約」に適合していないプログラムは
実行結果が保証されないことが分かった。
 さて、そうなると、規約を破っているソースコードに対しては、
それを警告してくれるコンパイラの機能が望まれる。
GCCではそのあたりがどうなっているのだろうか?

708:名無しさん@お腹いっぱい。
08/08/11 18:27:46
>>707
試せよ。


709:名無しさん@お腹いっぱい。
08/08/11 22:29:33
もうこの板のスレ2年過ぎたら強制dat落ちにしようぜ・・・

710:名無しさん@お腹いっぱい。
08/08/12 01:20:16
5年先まで見通してスレ立てればいいだけの話

711:名無しさん@お腹いっぱい。
08/08/12 11:18:38
投票所を作って、反対意見が出ないようなら削除依頼とかな
依頼してもなかなか削除されねーけど

712:名無しさん@お腹いっぱい。
08/08/14 10:05:42
>>701
なつかしいな、それ。KYKだっけ?

713:名無しさん@お腹いっぱい。
08/08/14 21:37:52
>>703
それは冗談で言っているのか。

714:名無しさん@お腹いっぱい。
08/08/16 04:42:49
ぐぐった。
URLリンク(www.atmarkit.co.jp)


715:名無しさん@お腹いっぱい。
08/08/18 03:16:26
>>712
Yじゃねえ。
Nだ。




716:名無しさん@お腹いっぱい。
08/08/18 05:34:08
knkなつかしい.

URLリンク(pc.2ch.net)
URLリンク(pc.2ch.net)
URLリンク(home.jp.freebsd.org)
URLリンク(web.archive.org)

717:名無しさん@お腹いっぱい。
08/08/25 03:29:13
このしらいさんという方も勘違いしてますね。

718:名無しさん@お腹いっぱい。
08/10/05 05:53:48 BE:1345128858-2BP(0)
OpenBSDは未だに、2.95ですね。

719:名無しさん@お腹いっぱい。
09/01/11 15:34:03
gccで関数プロトタイプ宣言を自動的に生成する機能があると聞いたのですが、
ぐぐってみてもそのような機能は見つかりませんでした。
もし本当にそういう機能があれば、どなたか教えていただけないでしょうか。
またgccに限らず、*.cから*.hを自動的に生成するツールについておすすめのものがあれば教えてください。

720:名無しさん@お腹いっぱい。
09/01/11 19:31:36
GCC3スレにようこそw

URLリンク(www.kouno.jp)
> 関数プロトタイプの自動生成ソフトはいくつか存在する。多くはlint に手を
> 入れたものになっている。CPROTOというプログラムが1992年3 月に
> comp.sources.miscにポストされた。他にもcextractというツー ルが存在する。
> コンパイラのベンダーの多くは単純なユーティリティー を用意している。
> 質問18.16も参照のこと。(古いコード用にプロトタ イプを生成するときは"狭い"
> 引数に注意すること。質問11.3も参照の こと。)

gccにそういう機能ってあったかなぁ

721:名無しさん@お腹いっぱい。
11/06/11 00:12:40.83
class A { public: A(){} };

class B : public A
{
B() {A::A();}
};


↑こういうコードで、g++-4.1.2だとエラーなし、
g++-4.6.0だと cannot call constructor 'B::A' directly
というエラーが出ます。どう修正するのが適切ですか?

722:名無しさん@お腹いっぱい。
11/06/11 07:25:12.63
>>721
class A { public: A(){} };

class B : public A
{
B() {}
};

で、暗黙的にAのコンストラクタが呼ばれる。
もしくは、渡す引数があれば、
class A { public: A(int arg){} };

class B : public A
{
B() : A(123) {}
};
とする。

723:名無しさん@お腹いっぱい。
11/06/11 08:59:42.53
>>722
ありがとうございます。それでやってみます。

ところで、逆に Bをコンストラクトする時に、
暗黙にAのコンストラクタを呼ばないようにするにはどうしたらいいですか?

724:名無しさん@お腹いっぱい。
11/06/11 09:04:05.21
>>723
理屈上おかしいし、それは多分できない。

実装上は、Aに何もしないコンストラクタを用意すれば、呼ばれてないのと同じことにはなるかもしれない。

725:名無しさん@お腹いっぱい。
11/06/11 09:20:46.87
>>724
できないんですね。わかりました

ところで、最初の >>721 の質問のように
わざわざ継承元のコンストラクタを呼んでるようなコードが
複数のソフトで見つかるんですが
これ、何か意味があったのではないのでしょうか?
それとも、こういう誤解が広範囲に広まっていたのでしょうか?

726:名無しさん@お腹いっぱい。
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