2009年11月09日
今月30日に代々木で開催されるAndroid Bazaar and Conference 2009 Fallで「GOLDFISHをいじってみよう」というタイトルで少し話をさせていただきます。
このブログに書いたgoldfish関連のことを話します。よろしかったらご参加ください。
(2009.11.18 追記)
先日Androidのマスターのソースにeclairブランチがマージされました。予定を変更して新しく追加になったDalvik VMのJITの実験版やWebkitのV8についてGOLDFISHでいじってみたことを話そうと思います。
関連
Android SDKのgoldfishのCPUをarm1136に置き換える方法
AndroidのSDKのgoldfishのCPUをcortex-A8に置き換えてNEONのSIMD命令を試す
2009年11月05日
健康診断の時、尿酸値が非常に高いという指摘をされたという話を以前書きました。
こちらは、当然現在も治療を継続中です。ザイロリックという尿酸の生成を抑制する薬を毎日 1 錠、そして毎日 1 時間程度の運動(ウォーキングやランニング) を続けています。人間ドックの時は 9.6 あった尿酸値も、今では 7.2 にまで下がりました。
(それでもまだ危険水域ですが。ちなみにこの検査結果は 2 ヶ月前のものなので、今ではもっと下がってるかもしれません。薬を一回に 3 ヶ月分もらえるので、病院に行くのは 3 ヶ月に一度なもので。)
実はそのとき、視神経乳頭陥凹という耳慣れない指摘もされていたのです。これは、緑内障の典型的な症状なのだそうです。
(まだ 20 代なのに、若い人には珍しい病気を二つも…)
続きを読む
こちらは、当然現在も治療を継続中です。ザイロリックという尿酸の生成を抑制する薬を毎日 1 錠、そして毎日 1 時間程度の運動(ウォーキングやランニング) を続けています。人間ドックの時は 9.6 あった尿酸値も、今では 7.2 にまで下がりました。
(それでもまだ危険水域ですが。ちなみにこの検査結果は 2 ヶ月前のものなので、今ではもっと下がってるかもしれません。薬を一回に 3 ヶ月分もらえるので、病院に行くのは 3 ヶ月に一度なもので。)
実はそのとき、視神経乳頭陥凹という耳慣れない指摘もされていたのです。これは、緑内障の典型的な症状なのだそうです。
(まだ 20 代なのに、若い人には珍しい病気を二つも…)
続きを読む
2009年10月30日
長らく 3.x だった MinGW の GCC も、ようやく今年の 6 月に 4.0 がリリースされ、4.x 移行はだいたい終了したのではないかと思われます。今後は 4.x を無視することはできないと思われます。
gcc 3.x から 4.x に移行する際に問題となる変更の 1 つとして、cast-as-lvalue という GCC 拡張の削除があります。
cast-as-lvalue とは、キャストの結果を左辺値として使える、という機能です。
続きを読む
gcc 3.x から 4.x に移行する際に問題となる変更の 1 つとして、cast-as-lvalue という GCC 拡張の削除があります。
cast-as-lvalue とは、キャストの結果を左辺値として使える、という機能です。
続きを読む
2009年10月28日
2009年10月26日
2009年10月22日
※ JTAG を熟知した上級者向けの Tips です。
※ 社内で裏ワザ的に使われている Tips なので、ブログでこっそり紹介。正式にサポートは行いません。
PARTNER-Jet の JTAG クロック周波数は、cfg ファイルの記述 (J_FRQ。通常は AUTO か ADPT が指定されています)、または zjc コマンドによって変更することが可能です。
マニュアルには、JTAG クロックの zjc コマンドによる動的な変更は危険なのでひかえるようにと注意書きが書いてますが、設定を熟知した上で使うならば便利です。
周辺装置のノイズが多いなどの状況で、安定して PARTNER-Jet を動かしたい場合には、JTAG クロックの値を若干下げてみることが有効なのだそうです。
また、大きなデータを転送する場合などには、ターゲットがサポートする範囲で、若干大きめの値に変更することで、(PARTNER-Jet はもともと高速なデータ転送がウリの 1 つなのですが) より高速なデータ転送が可能になるそうです。(ただし、あまりクロックを上げすぎると不安定になるので要注意です。)
このように、JTAG クロックを調整することにより、状況に応じて安定性と高速性のバランスを調節できるそうです。私はまだ初心者なので試したことは無いのですが、社内では普通に使われている Tips のようです。先輩にこの Tips を教わるまで、JTAG クロックをいじるなんて全く思いつきませんでした。面白かったので紹介しました。
※ 社内で裏ワザ的に使われている Tips なので、ブログでこっそり紹介。正式にサポートは行いません。
PARTNER-Jet の JTAG クロック周波数は、cfg ファイルの記述 (J_FRQ。通常は AUTO か ADPT が指定されています)、または zjc コマンドによって変更することが可能です。
マニュアルには、JTAG クロックの zjc コマンドによる動的な変更は危険なのでひかえるようにと注意書きが書いてますが、設定を熟知した上で使うならば便利です。
周辺装置のノイズが多いなどの状況で、安定して PARTNER-Jet を動かしたい場合には、JTAG クロックの値を若干下げてみることが有効なのだそうです。
また、大きなデータを転送する場合などには、ターゲットがサポートする範囲で、若干大きめの値に変更することで、(PARTNER-Jet はもともと高速なデータ転送がウリの 1 つなのですが) より高速なデータ転送が可能になるそうです。(ただし、あまりクロックを上げすぎると不安定になるので要注意です。)
このように、JTAG クロックを調整することにより、状況に応じて安定性と高速性のバランスを調節できるそうです。私はまだ初心者なので試したことは無いのですが、社内では普通に使われている Tips のようです。先輩にこの Tips を教わるまで、JTAG クロックをいじるなんて全く思いつきませんでした。面白かったので紹介しました。
2009年10月20日
2009年10月16日
以前の記事で使用した 「リアルタイムトレース」 という用語は、KMC が製品の特徴を一言で伝えるためのキーワードとして使用している独自の用語であり、一般的な技術用語では無いので、社外や blog などで使用する時は注意が必要、という指摘を辻さんからいただきました。ありがとうございます。
ARM の ETM/ETB などのトレース機能は、例えばバッファに一時的にトレースデータをため、タイムスタンプなどはパケットがまとめて送信される時に付くので、厳密には本当にリアルタイムではないのだそうです。ARM 社などが「リアルタイム」という用語をあえて避けているのは、その辺の誤解を嫌ってのことなのでしょう。
KMC が「リアルタイムトレース」と言う時のリアルタイムとは、厳密な技術用語の文脈の「リアルタイム」ではなく、「プログラムの実行を止めなくても、動かしながらトレースログを見れる」という意味で使用しています。
例えばリアルタイム OS と言った場合には、スケジューリングや割り込み、システムコールなどの各種処理の実行時間の予測可能性が保証されている、という意味であるように、リアルタイムという用語には様々な技術的文脈でいろいろな意味があるので、説明無しに「リアルタイム」という用語を使ってしまったのは我ながら軽率だったと思います。技術者たるもの、誤解やすれ違いを避けるために、用語の使い方には常に気をつけたいものです。
ARM の ETM/ETB などのトレース機能は、例えばバッファに一時的にトレースデータをため、タイムスタンプなどはパケットがまとめて送信される時に付くので、厳密には本当にリアルタイムではないのだそうです。ARM 社などが「リアルタイム」という用語をあえて避けているのは、その辺の誤解を嫌ってのことなのでしょう。
KMC が「リアルタイムトレース」と言う時のリアルタイムとは、厳密な技術用語の文脈の「リアルタイム」ではなく、「プログラムの実行を止めなくても、動かしながらトレースログを見れる」という意味で使用しています。
例えばリアルタイム OS と言った場合には、スケジューリングや割り込み、システムコールなどの各種処理の実行時間の予測可能性が保証されている、という意味であるように、リアルタイムという用語には様々な技術的文脈でいろいろな意味があるので、説明無しに「リアルタイム」という用語を使ってしまったのは我ながら軽率だったと思います。技術者たるもの、誤解やすれ違いを避けるために、用語の使い方には常に気をつけたいものです。
2009年10月14日
2009年10月08日
twitter で gas の構文は理解しにくいと hmori さんがつぶやいていたのを見て、意外と知られて無さそうなので書きます。
x86 と x86-64 において、gas と GCC が出力するアセンブリコードのデフォルト構文は AT&T 構文と呼ばれる UNIX アセンブラの伝統的な構文です。プログラミングの力を生み出す本や、ふつうのコンパイラをつくろうなど、最初から一貫して AT&T 構文を元にアセンブリプログラミングを解説している書籍も無いことは無いのですが、確かにintel のマニュアルの構文とは引数の順番などが異なるので、慣れないと混乱の元になるのではないかと思います。
また、%レジスタや$即値などの独特のプリフィクスが大量に付くので、見た目が少しゴチャゴチャするようにも感じます。(movl などの b/w/l のように、データ長を指定するサフィックスも便利と言えば便利なのですが、区切りが紛らわしい気もします。サフィックスを付けるならば、mov.l のように区切りがある方が、個人的には好みです。ちょっと脱線しました。)
実は gas (GNU Assembler) は、バージョン 2.10 から、インテル構文 (intel syntax) もサポートしています。
続きを読む
x86 と x86-64 において、gas と GCC が出力するアセンブリコードのデフォルト構文は AT&T 構文と呼ばれる UNIX アセンブラの伝統的な構文です。プログラミングの力を生み出す本や、ふつうのコンパイラをつくろうなど、最初から一貫して AT&T 構文を元にアセンブリプログラミングを解説している書籍も無いことは無いのですが、確かにintel のマニュアルの構文とは引数の順番などが異なるので、慣れないと混乱の元になるのではないかと思います。
また、%レジスタや$即値などの独特のプリフィクスが大量に付くので、見た目が少しゴチャゴチャするようにも感じます。(movl などの b/w/l のように、データ長を指定するサフィックスも便利と言えば便利なのですが、区切りが紛らわしい気もします。サフィックスを付けるならば、mov.l のように区切りがある方が、個人的には好みです。ちょっと脱線しました。)
実は gas (GNU Assembler) は、バージョン 2.10 から、インテル構文 (intel syntax) もサポートしています。
続きを読む
2009年10月06日
2009年10月02日
GDBの7.0からReverse Debugging(ヒストリの逆実行)が入るということで、一部で話題になっているようです。
http://www.gnu.org/software/gdb/news/reversible.html
http://d.hatena.ne.jp/hayamiz/20090930/1254323169
(ネタ元は、私がtwitterに張ったURLのようです。すごいブックマークの数ですね。)
ちなみに私は、greenteaさんの獲物で知ったのですが、同僚の佐藤さんやkobaさん、社長などは既に知っていました。
この機能は、GCC Summit 2007で発表されたようです。
http://ols.108.redhat.com/2007/GCC-Reprints/GCC2007-Proceedings.pdf
"Reversible Debugging", Paul Brook(CodeSourcery), Daniel Jacobowitz (CodeSourcery), pp.69-76
佐藤さん曰く、Non-stop multi-threaded debuggingも地味だけど面白いとのことです。
続きを読む
http://www.gnu.org/software/gdb/news/reversible.html
http://d.hatena.ne.jp/hayamiz/20090930/1254323169
(ネタ元は、私がtwitterに張ったURLのようです。すごいブックマークの数ですね。)
ちなみに私は、greenteaさんの獲物で知ったのですが、同僚の佐藤さんやkobaさん、社長などは既に知っていました。
この機能は、GCC Summit 2007で発表されたようです。
http://ols.108.redhat.com/2007/GCC-Reprints/GCC2007-Proceedings.pdf
"Reversible Debugging", Paul Brook(CodeSourcery), Daniel Jacobowitz (CodeSourcery), pp.69-76
佐藤さん曰く、Non-stop multi-threaded debuggingも地味だけど面白いとのことです。
続きを読む
2009年09月30日
GoogleのDiego Novillo氏が、GCCのtrunkに大量のパッチを投げました。
[LTO merge][0/15] Description of the final 15 patches
http://gcc.gnu.org/ml/gcc/2009-09/msg00578.html
http://gcc.gnu.org/ml/gcc-patches/2009-09/
ついにLTO(Link-Time Optimization)branchがGCC trunkにmergeされるようです。
続きを読む
[LTO merge][0/15] Description of the final 15 patches
http://gcc.gnu.org/ml/gcc/2009-09/msg00578.html
http://gcc.gnu.org/ml/gcc-patches/2009-09/
ついにLTO(Link-Time Optimization)branchがGCC trunkにmergeされるようです。
続きを読む
2009年09月28日
今日は弊社の製品であるexeGCCのVLINK(Virtual Link)機能について紹介します。
これはターゲットボードに弊社のPARTNER-Jetがつながっていれば、CPUとRAMしか動いていない状況でも使うことができます。
2009年09月24日
これまでの流れ
- DWARF と有限状態機械
- DWARF と有限状態機械 (2)
概要、プログラムヘッダときて、今回のバイトコードで行番号プログラムの仕様は最後です。
行番号プログラムの目的は、1つのコンパイル単位中の行番号情報表を構築することです。つまり、プログラムを実行すると、表が出力として得られます。
この表は、命令アドレス、ファイル名、行、列、各種位置フラグ(ブレークポイント関係など)など、有限状態機械の状態と1列が対応するようなものです。つまり、行番号プログラムの実行過程における有限状態機械の状態遷移の記録=行番号情報表となります。
この表において、命令アドレスは増加する一方ですが、行番号はコンパイラの最適化などによる命令の並び替えによって減少する場合もあります。
続きを読む
- DWARF と有限状態機械
- DWARF と有限状態機械 (2)
概要、プログラムヘッダときて、今回のバイトコードで行番号プログラムの仕様は最後です。
行番号プログラムの目的は、1つのコンパイル単位中の行番号情報表を構築することです。つまり、プログラムを実行すると、表が出力として得られます。
この表は、命令アドレス、ファイル名、行、列、各種位置フラグ(ブレークポイント関係など)など、有限状態機械の状態と1列が対応するようなものです。つまり、行番号プログラムの実行過程における有限状態機械の状態遷移の記録=行番号情報表となります。
この表において、命令アドレスは増加する一方ですが、行番号はコンパイラの最適化などによる命令の並び替えによって減少する場合もあります。
続きを読む