Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< Previous PageNext Page >

仕組み

インテルベースのMacintoshでアプリケーションが起動すると、カーネルがアプリケーションにネイティブバイナリがあるかどうかを検出します。バイナリがネイティブでない場合、カーネルはRosettaを使ってバイナリを起動します。アプリケーションが翻訳可能なものであれば、起動して実行されますが、ネイティブバイナリとして実行される場合ほど高速ではありません。舞台裏では、RosettaがPowerPCバイナリを翻訳して実行します。

Rosettaはアプリケーションと同じコントロールスレッドの中で実行されます。Rosettaはアプリケーションを起動するときに、アプリケーションコードのブロックを翻訳し、そのブロックを実行します。Rosettaはまだ翻訳していないルーチンの呼び出しに遭遇すると、必要なルーチンを翻訳し、実行を継続します。その結果、翻訳と実行がスムーズかつ連続的に移行します。要するに、Rosettaとアプリケーションは一種の共生関係を形成して連動します。

Rosettaは非ネイティブアーキテクチャで可能なかぎり最高のパフォーマンスを発揮できるように、翻訳したコードを最適化します。大きな翻訳バッファを使用し、再使用できるようにコードをキャッシュに入れます。アプリケーションの中で繰り返し再利用されるコードは、一度だけ翻訳すれば済むので、最も恩恵を受けます。システムはキャッシュされた翻訳を使用しますが、これはコードを再翻訳するより高速です。



< Previous PageNext Page >


Last updated: 2006-03-08




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
Get information on Apple products.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Copyright © 2007 Apple Inc.
All rights reserved. | Terms of use | Privacy Notice