以前のエントリCygwin/i386 Linux用Windows CE(PocketPC)クロスコンパイラCeGCCを試すの続編です。 そういえば、Cygwin / i386 Linuxで動作するARM CPU搭載Windows Mobile向けクロスコンパイラであるところのCeGCCの様子は最近どうかいな、ということで見に行ってみると、ちょうど2007年2月リリースのブツ0.10.0がアップロードされていました。 早速昨年10月にインストールした0.1.0と入れ替えてみました。 CeGCCのCygwin環境へのインストール 仔細は説明を省きますが、Cygwinをインストールします。その後に、 SourceForgeの当該ページへ行き、「cygwin binaries, svn 0.10.0.20070208」を落としてきます。 自分のとこではd:\cygwinがCygwinのルートなので
gccの__attribute__((cleanup(fn))) が便利すぎる件について。 C++でコードを書くときは、RAIIとか呼ばれているイディオムを使えば、ご存じの通り、ロックしたmutexを手動で開放する必要もないですし、newしたオブジェクトを手動でdeleteする必要もないです。 void Baz::boo() const { boost::mutex::scoped_lock lock(mutex); // ... return; // lock変数のデストラクタで自動開放。手動での開放不要 }でもC言語だと、当然ながら手動で開放しないといけません。複数箇所でreturnしている場合など、タイプが面倒臭すぎ。 int foo() { pthread_mutex_lock(&mutex); // ... if (hogehoge) { pthread_mutex_unlock
Unix系コマンドラインユーザーのための、 gcc/g++/g77 による開発におけるデバッグ術を簡単に紹介します。 以下の内容は gcc 2.7.2.3 での動作は確認しています。 g++/g77 でも恐らくは通用すると思うのですが、 ひょっとすると異なる部分があるかもしれません。 筆者は g++/g77 の使用経験がないので、その場合は御容赦を願います。 実行前 キーワード「コンパイルオプション, -Wall, -O2, -O4」 まずは gcc にオプション opt'-Wall' を付けてコンパイルし、 警告がなくなるまでソースを修正します。 これは 常識 です。 次に opt'-O4 -Wall' でコンパイルします。 「未初期化変数の使用」の警告 (`foo' might be used uninitialized in this function) は、 opt'-O4' を付
先日、友人と clmemo@aka: Binary Hacks がらみで、gcc の Warning flag をどうしてるか? という話になった。友人は、とりあえず -Wall オプションを付けているという。なるべく警告の出ないコードを書きたいものだよね、と応えた後、ぼくはかう続けた。「でも、-W オプションを付けると、-Wall よりも詳しい警告が出るよ」友人は驚いていた。 せっかくなので、ちょっとここでまとめておかう。 -Wall オプション gcc の info を読むと、-Wall オプションは、以下のオプションを全て指定したものに等しいとある (gcc 3.3.4 から引用)。 -Wno-import -Wchar-subscripts -Wcomment -Wformat -Wno-format-y2k -Wno-format-extra-args -Wno-format-z
23:41 06/11/30 べくたー GreenPad - 新着ソフトレビュー だそうです。 ソフト作者からひとこと、という欄を書きました。 今時のエディタなら GreenPad でできてる程度の多言語混在はできるんじゃないかと思うので、 ポイントというほどポイントかなーとかちょっと思ってしまったりもしつつ。 ひとことに書いたように、あれは 「既存のエディタコンポーネントを一切使わずに『テキストエディタ』を作るのって、 どうやるんだろう?」 が自分的には全てですね。作ってて、エディタの作り方という よりは、"この機能のこの実装って実は死ぬほど重くない?だいじょぶ?でも あとはこれを定数倍のチューニングするしか思いつかないんだけど" と行き詰まったときは 大抵その実装で十分うまく回るのでどんどん作っちゃえばOK、ということを経験的に 学びました。特に車輪の再実装をしてる時は。今の自分ならな
Introduction ¶ This manual documents the internals of the GNU compilers, including how to port them to new targets and some information about how to write front ends for new languages. It corresponds to the compilers (GCC) version 16.0.0. The use of the GNU compilers is documented in a separate manual. See Introduction in Using the GNU Compiler Collection (GCC). This manual is mainly a reference m
再び研究室のサーバに火が入って,DHCP が復活. 今のうちにメモ. 日本語 reddit経由で知った,Super Technique 講座 再帰関数の技が面白い.私は再帰が大好きで,副作用とループを使うと何となく気分が悪くなるような人なので,胸がすくような思いがしました (⌒▽⌒) ET とか Prolog とか Scheme とか使ってみたいけど,再帰に不慣れで,どうやってプログラムを書いていけば良いのか,まだよくわからない… って人に,特にお勧め.flat の例のところらへんに,『再帰の最大のコツは、「自分が書いたプログラム(の機能定義)を信じること」なのである。』という言及がありましたが,まさしく ! という感じ.私も,いつもこういう感じで,終了条件をひたすら列挙,あとは自分自身を信じて Let's 再帰 ! という感じでプログラムを書いています. # 頭がセミコロンの一族にロック
静的単一代入形式(static single assignment form)を用いた最適化はGCC3.0から試験的に導入され,GCC3.5で正式な導入がなされた.今回は,GCCにおけるSSA形式最適化について検証する. (筆者) 前号で抜けがあったオプションを説明します. ● -fsched-spec-load,-fsched-spec-load -dangerous このオプションを指定すると,命令をロードする際に,順序を最適化することを許可します.ただし,-fschedule-insnsオプションか-o2オプションの付加が必要です. GCCはまずCソースを中間言語(RTL)に変換し,その後でアセンブラに変換を行います.そして,内部でアセンブリを行います. その中間言語の段階で構文解析を行い,最適化が行われます.また,ハードウェアに依存する最適化も行われます. デバッグ・オプションで説
日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。
「偽札対応済み」って書いてある両替機。 川口市立中央図書館…本屋の上にある図書館。に行ってきた。特に何もないけど。あと、マイコンショップ川口つぶれてた。 ある程度能力を持ってるなら、成果を残せるか残せないかは自信を持ってるか持ってないかの違いだけかもしれないというような話。 最近思うのだけど、使えない奴(例えば、僕のような)の特徴として、「どうせ自分が何をどうやっても、何もどうにもならない」的な思考があると思う。 例えば、上の一行で言うと、「使えない奴(例えば僕」とか、そういったような思考。 こういった思考は、いったん根付いてしまうと、循環するので、なかなかやめられない。「どうせ自分は何もできないんだ→何もできないから何もやらない→何も成果を残せない→どうせ自分は何もできないんだ」とかいった感じで。 矯正しようと思っても、「いや、こういう性格だから、矯正は無理だし。」と、いう思考になってし
再入不可能な関数を C で実装する 一度実行したら二度と中身を実行できなくなる再入不可能な関数を C で実装してみます。通常、このような関数はシングルトンなどの静的なデータの初期化に使いますが、ここではデータについては考えないことにします。 static 変数をフラグに使う まずは最も単純な方法から見ていきます。次の関数は static 変数をフラグに使って再入を防いでいます。厳密に言えば関数そのものには入ってしまっていますが、ここで気にしないことにします。 void once(void) { static int entered; // 最初は 0 if (entered == 1) { // すでに入ったことがある場合は return; // すぐ出る } entered = 1; // 初回の場合のみ、何かを実行する } この方法はシングルスレッドのプログラムではうまく動きますが、マ
checkstack.pl で関数のスタック消費量を調べる Linux カーネルのソースコードに付属する checkstack.pl を使うと、C/C++ のプログラムの関数のスタック消費量を調べることができます。checkstack.pl は objdump -d のディスアセンブルの出力からスタックポインタの操作をパターンマッチしてスタックの消費量を計算しています。 入手方法 checkstack.pl は Linux カーネルのソースコードに付属しています。Debian GNU/Linux sarege なら次のようにコマンドラインから実行して取得できます。ソースツリーに含まれる scripts/checkstack.pl が目的のものです。 % apt-get source kernel-source-2.6.8 使い方 checkstack.pl の使い方は簡単です。スタックサイ
GCCでインラインアセンブリを使用 する方法と留意点等 for x86 (1999〜2006年10回改訂、2006年1月22日注意を追加、最終更新日2006年5月27日) 文: A. SAITOH <s-akira at users.sourceforge.net> home ※システム名、CPU名は一般に開発会社の登録商標です。 以下の情報はあまり過度に信用しないで下さい。より正確な情報は、asやgccのinfoから得て下さい。 個々のプロセッサ命令の解説はここでは述べません。そのような技術資料は、インテルやAMDのウェブ サイトのdeveloper向けのページからpdf形式で入手できます。 以下の文及びプログラム例の運用結果に関して、筆者は一切責任を負いません。 参考文献 [0] D. Stancevic, K. Scheibler, J. Leto, Linux Assembly
GNU Cは、 ANSIの標準Cにはない特徴的な言語機能をいくつか提供しています (`-pedantic'オプションは、 これらの機能が使われた場合に 警告メッセージを出力するようGNU CCに対して指示するものです)。 条件コンパイルにおいて、 これらの機能が利用可能であるかどうかをテストするためには、 __GNUC__というマクロが事前に定義されているかどうかをチェックします。 この__GNUC__というマクロは、 GNU CCでは常に定義されています。 これらの拡張機能はCとObjective Cで利用可能です。 また、 そのほとんどはC++でも利用可能です。 C++にのみ適用可能な拡張機能については、 C++言語に対する拡張機能を参照してください。 式の中の文と宣言 GNU Cにおいては、 丸括弧()で囲まれた複文を1つの式とみなすことができます。 これによって、 1つの式の中でル
ライブラリの外に公開するシンボルを制限する C言語にはファイル内 (コンパイル単位) からしかアクセスできない static 関数と、別のファイルからもアクセスできる非static 関数があります。しかし、ライブラリを作成する上では、この2つのスコープだけでは不十分なときがあります。 本記事では GNUの開発環境において、ライブラリの外に公開するシンボルを制限する方法を紹介します。 次のような例を考えてみます。 % cat a.c // foo() は libfoo の主役の関数なので公開したい void foo() { bar(); } % cat b.c // bar() はライブラリの中だけで使われるべきなので本当は公開 // したくない。しかし別のファイルに含まれる foo() から使われ // ているので、非staticにせざるをえない void bar() { } このようなコ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く