問題タブ [avm2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
actionscript-3 - AS3:クラスローディング順序
AS3の静的ブロックについて簡単な質問がありました。
アプリケーションロジックを実行する前に静的に初期化する必要があるライブラリがあります。次のような静的コードブロックを挿入した場合、これは本当に何よりも先に実行されますか?(つまり、アプリケーションが起動する前にすべてがセットアップされると想定しても安全ですか?)
上記のコードは次のように実行されると思います。
Application
'メイン実行可能ファイル'であるため、クラスをロードします。- ロード
MyStaticLibrary
してMyWorker
、静的ブロックを実行します。 - 内の静的ブロックを実行します
Application
。 - コンストラクターを呼び出して、作業を開始します。
これが本当かどうか誰かが知っていますか?それまでの間、すべてをテストするためのアプリケーションを作成すると思います:)
actionscript-3 - ActionScript バイトコードでは、NewActivation は何を意味しますか?
一部のメソッドはそれを使用し、一部は使用しません。明らかにそれは needsActivation フラグで指定されています。ナットは何を行い、いつ使用し、いつ使用しないのでしょうか?
AVM docs の情報はやや不親切です:
新しいアクティベーション オブジェクト newactivation を作成し、それをスタックにプッシュします。MethodInfo エントリに NEED_ACTIVATION フラグが設定されているメソッドでのみ使用できます。
actionscript-3 - ActionScript ByteCode をデバッグするツールはありますか? レジスタ、スタックを観察したい
では、SWF を実行するときに、ABC コードを 1 行ずつ調べて、レジスタやスタックを観察する方法はありますか? 少なくとも画面に印刷したり、ログに記録したりできますか?
actionscript-3 - スタック、ActionScript ByteCode AVM2のレジスタ、すべてありますか?
AVM2の概要PDFから、スコープスタックとオペランドスタックの2種類のスタックへの参照に遭遇しました。
1)これらは2つの異なるメモリスタックであり、それぞれが異なるものを処理していると思います。さらに多くのスタックがありますか?
2)pushstring "hello"-これは、"hello"文字列が配置されているメモリアドレスの開始をオペランドスタックにプッシュします。右?
3)setlocal 0-これは、スタック(上記)から値をポップオフしてregister0に格納します。右?
4)PushScope()-うーん、ドキュメントはスタックの値をポップし、値をスコープスタックにプッシュすると言います。なんで?
NASMについては少し知っていますが、ABCはそれよりも複雑なようです。特に、スコープスタックと複数のスタックの概念全体について混乱しています。
flash - AVMベリファイアからフラッシュログへ、いくつかのことを解釈する方法は?
AVMベリファイアは、エラーが発生すると、フラッシュログに書き込みます。ドキュメントでは、ベリファイアはジャンプが発生する可能性のある「すべての可能なブランチ」にアクセスすると記載されています。ただし、出力を追跡しようとすると、まだかなり混乱します。それを正しく解釈する方法はありますか?全体の流れは混乱しているようです。
たとえば、次のマーキングの意味は何ですか。
マージファースト
マージ電流
マージターゲット
マージ後
さらに、レジスタ、スコープスタック、オペランドスタックを備えたマシン命令とマシン状態があります。命令を表示し、後で状態が変更された場合、たとえば、PushFalseによってオペランドスタックにブール値が表示されることを理解しています-(Boolean [B])。ただし、MERGE FIRST、MERGE CURRENTなどと組み合わせて、先行する命令がなくても状態が書き込まれる場合があります。これはどういう意味ですか?
disassembly - AVM2逆アセンブラ(またはダンプツール)はどこにありますか?
挨拶私はこの素晴らしい答えを見つけました: AVM2バイトコードでメソッドはどのように見つかりますか? 番号3を参照してください。誰か助けてもらえますか?abcFileダンプを生成するために使用されるツールは何ですか?
ありがとうございました!
actionscript-3 - AVM2 はどのような最適化をサポートしていますか?
AVM2 (ActionScript 3 VM) はどのような最適化をサポートしているのでしょうか? JITを使用していることは知っていますが、デッドコードの削除、定数の折りたたみ、インライン化などをサポートしていますか.
また、ActionScript コンパイラもいくつかの最適化を行っていることは、私にとって非常に興味深いことです。AFAIK C# コンパイラは非常に小さな最適化セット (言語サポートにのみ必要) を行い、JIT がすべての作業を行います。そして、それは非常に高速に動作します。
ありがとう。
MPDに感謝します。AVM2 は以下をサポートします。
- コンスタントフォールディング
- コピーと一定の伝播
- 共通部分式除去 (CSE)
- デッド コードの除去 (DCE)
flash - ActionScript-trace()。トップレベルの関数の動作
Flash Player Debugで変数をトレースしていると、奇妙な動作が発生します。「x:y」のようなパターンがあるとしましょう。「x」と「y」は整数変数です。その式をでトレースすると
動作は
1)x<10の場合
「x」変数と「:」は省略され、「y」のみが出力されます。
2)x>=10の場合
すべてが期待どおりに機能します。「x:y」が印刷されます。
質問:
- なぜそれが起こるのですか?
- コロンはActionScriptの特殊文字ですか?
- この動作を回避して、たとえば「1:1」を印刷することは可能ですか?
再現するには:
前もって感謝します。
flash - Flash/AS3 で Loader.load() 関数を使用すると、ハングまたはラグが発生しますか?
60 秒ごとにリロードされるイメージの簡単なリストを作成しました。ただし、リロード プロセスが開始されると、Flash がハングするように見えるか、少なくともマウス入力をまったく受け付けない/記憶しないことに気付きました。
具体的には、おそらくフリーズしている間に、ボタンをクリックして通常の機能を実行しようとしますが、現時点ではマウスダウン状態を表示しているだけですが、想定されるフリーズが終了するまでクリックは登録されません。その結果、もう一度クリックする必要があります。
私が5つの小さなpng画像をロードしている場合(ループで5回呼び出すload()
) 、これによりFlashがハングしてマウス入力を無視するか、または私がクレイジーに話しているので、問題を他の場所で探す必要があります。
Flash がマルチスレッド化されていないことは理解していますが、呼び出しload()
によってアプリケーション全体が 100 ~ 200 ミリ秒間停止することはありません。
どんな入力でも大歓迎です、ありがとう。
performance - AS3でリンクリストがVectorよりも高速なのはなぜですか?
私はこのサイトでベンチマークを試しました:配列vs.ベクトルvs.リンクリスト。これは、上記のシーケンスの反復のパフォーマンスをテストします。
驚くべきことに、リンクリストの反復処理は。よりも約2.5倍高速Vector.<int>
です。この直感に反する結果の理由は何ですか?