問題タブ [addressing]

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.

0 投票する
2 に答える
564 参照

python - PyCUDAメモリアドレス指定:メモリオフセット?

デバイス上に大量の生成データ (A[i,j,k]) がありますが、必要なのは A[i,:,:] の 1 つの「スライス」だけです。通常の CUDA では、これは簡単に実行できます。いくつかのポインター演算で達成されます。

pycuda内で同じことを行うことはできますか? すなわち

(dest 形状から推測されない限り) サイズ情報がないため、明らかにこれは完全に間違っていますが、うまくいけば、アイデアを得ることができますか?

0 投票する
3 に答える
1441 参照

cpu-architecture - アドレッシング モードに使用される用語。[インテル 8085]

私が取り組んでいるプロセッサのドキュメントでは、次のように述べています。

使用可能なオペランド アドレス指定モードは、暗示、レジスタ、即時、直接、およびレジスタ間接です (メモリへの 16 ビット ポインタとして BC、DE、および HL レジスタ ペアを使用)。

誰かが素人の言葉でこれらのアドレス指定モードの違いを説明してもらえますか、またはおそらく私が学ぶことができるリンクを投稿できますか?

どうもありがとう。

0 投票する
0 に答える
615 参照

memory-management - x86 での RIP 相対アドレッシング

私は x86 アセンブラーの経験があまりなく、 mach_inject のバグに関連する問題をデバッグしようとしています。

元のコードは次のようになります ( mach_injectmach_inject.c の関数):

それから少し後で ( INJECT_ENTRYmach_inject_bundle_stub.c の機能):

私にとっては、これを x86 用にコンパイルすると失敗するようです。すべてのアーキテクチャ (つまり、x86 用) だけにコードを変更するとimageOffset = 0;、すべて正常に動作します。

それで、いくつかの質問:

  • RIP 相対アドレッシングは 32bit/x86 モードでも使用できますか?
  • とにかく32ビットモードのRIP相対アドレッシングもある場合、このコードの(おそらく)最初の意図は何でしたか?
  • RIP 相対アドレス指定はコンパイラの設定ですか? または、コードで RIP 相対アドレス指定を使用するかどうかをどのように制御できますか? (または、このバグにもっと関連しています:imageOffset = 0;常に正しいですか? または、正しくないのはいつですか?)
0 投票する
1 に答える
406 参照

assembly - アセンブリ言語の間接アドレッシング

間接アドレス指定の問題に取り組んでいますが、バイトを正しくカウントする方法がわかりません。次のコードが与えられます。

この質問は、これらの命令が実行された後に標準出力デバイスに書き込まれるバイト数を尋ね、答えは 4 です。

この問題については、次のように設定しました。

5 を dx に移動し、2 バイト 00 05 を書き込みます。次に、DOS コードを設定してそれを書き出すので、出力は 2 バイトを書き出して 4 になりますか? 私の論理が間違っている場合は修正してください。

0 投票する
1 に答える
665 参照

printing - 印刷領域に動的アイテムを追加することによる Flex 4 印刷 (別名、動的に名前を付けられた要素をその場で別の要素に追加する方法)

ステージに動的に追加するアイテムがいくつかあります。

これらは flexShapeXXX と呼ばれ、xxx は通常一意の ID です。

これで、印刷用にそれらを保存するためのコンポーネントが作成されました。これを仮想ページとして扱うことができるので、印刷用にレイアウトすることができます。

これは次のようになります。

これまでのところ非常に良いので、小さなプリントを取り、vbox コンポーネントを作成します。

これはうまく機能し、作業するための素敵なスペースを追加します.

今、私はこのようなことをしたいと思っています:

その部分は失敗します。

だから私の質問は、動的な名前を介してステージから要素を追加する方法です。私がそれらを印刷できるように。

どうぞよろしくお願いいたします。

クレイグ

0 投票する
2 に答える
2258 参照

gcc - x86_64でのランタイムコード置換の絶対アドレス指定

私は現在、別の位置に移動されたコードが変数とクラスポインターを読み取る、32ビットのコード置換スキームを使用しています。x86_64は絶対アドレス指定をサポートしていないため、コードの新しい位置にある変数の正しいアドレスを取得するのに問題があります。詳細な問題は、相対アドレス指定がリップであるため、命令ポインタアドレスがコンパイル時とは異なることです。

それで、x86_64で絶対アドレス指定を使用する方法、または命令ポインタ相対ではなく変数のアドレスを取得する別の方法はありますか?

次のようなものleaq variable(%%rax), %%rbxも役立ちます。命令ポインタに依存したくないだけです。

0 投票する
2 に答える
1119 参照

macos - Hacking: The Art of Exploitation による問題に対処する

私は最近この本を購入しました: Hacking: The Art of Exploitation (第 2 版)というタイトルで、最近とても悩まされています。とにかく、例の 1 つである firstprog.c :

gcc(明らかに :3 )でコンパイルしてから、objdumpを使用します(これには、gobjdumpを使用しただけで、OS Xのobjdumpが見つかりませんでした)出力をmain.:でgrepにパイプし、正規表現として最初の20を表示します行。次に、gdb でデバッグし、main で中断します。これが私の主な問題です。すべてのメモリアドレスが異なります!! たとえば、本の eip は0x804837aです。しかし、リップ付きの私のコンピューターでは: 0x100000ee8 64ビットOSを使用しているからだと思っていましたが、32ビットバージョンのDarwinで起動すると同じ結果が得られました. 誰かがこの問題が何であるかを知っていれば、私はそれを大いに感謝します. それが本当に愚かなことなら、私に休憩を与えてください、私はちょうど14歳になりました:)

0 投票する
2 に答える
8605 参照

assembly - 8086 アセンブリ: 文字列の一部を変数に MOV します

「652+346*779=」などの ASCII 文字の文字列があり、この変数から別の変数にいくつかの文字を移動したいとします...

Buffer は文字列です (この場合は "652+346*779=") lengthofnum は問題の数値の長さです (この場合は 346 の長さは 3 です) A_ascii は文字列を転送しようとしている変数です " 346」。

まったく機能しないループがあり、使用するアドレッシング モードがわかりません。emu8086 は、私がこれまでに試したすべてのことを嫌い、MOV 命令の構文に関してエラーを出します。

次のエラー コードが表示されます。

0 投票する
1 に答える
49 参照

flex4 - 実行時に作成された Flex 4 ターゲット コンポーネント

実行時に作成されるいくつかのコンポーネントがあり、特定の親イベント中にそれらのコンポーネントで関数を実行したいと考えています。

問題は、これが実行前に作成したコンポーネントでのみ機能することです。

EG私はこれに行くことができます[SomeComponent].BorderShow(); SomeComponent が既にコード内にある場合。

その場でステージに新しいコンポーネントを追加すると、どうしようもない

this[SomeNewComponent].BorderShow()

コンポーネントの名前を文字列として関数に渡し、その関数にコンポーネントから関数またはメソッドを実行させる方法を教えてください。

よろしくお願いします C

0 投票する
1 に答える
617 参照

c - Simpletron マシンと間接アドレッシング

私は最近、Deitel と Deitel の教科書から Simpletron の課題を作成しました。

Simpletron マシン語には、直接アドレッシングというアドレッシング モードが 1 つしかありません。
(つまり、命令のオペランド部分でアクセスしたいアドレスを指定する必要があります。)

したがって、実行時にアドレスを計算してアクセスする方法はないと思います。

したがって、次のようにします。

自己修正コードまたはループの拡張が必要になりますが、正しいですか?
だから私の質問は:

教科書では、Simpletron は初期のコンピューターに非常に似ていると説明されています。

間接アドレッシング モード (レジスタ アドレッシングなど) は、プログラミングを容易にするために後続のアーキテクチャに導入されましたか?