タグ付けされた質問 「low-level」

7
コールスタックはどの程度正確に機能しますか?
私はプログラミング言語の低レベルの操作がどのように機能するか、特にそれらがOS / CPUとどのように相互作用するかについて、より深く理解しようとしています。スタックオーバーフローのすべてのスタック/ヒープ関連スレッドのすべての回答を読んだことがあり、それらはすべて素晴らしいものです。しかし、まだ完全には理解していなかったことがあります。 有効なRustコードになる傾向がある疑似コードでこの関数を検討してください;-) fn foo() { let a = 1; let b = 2; let c = 3; let d = 4; // line X doSomething(a, b); doAnotherThing(c, d); } これは、スタックが行Xで次のように見えると想定する方法です。 Stack a +-------------+ | 1 | b +-------------+ | 2 | c +-------------+ | 3 | d +-------------+ …

10
C ++クラスのメモリ構造に「スペーサー」を作成するにはどうすればよいですか?
問題 ローレベルベアメタル埋め込みコンテキスト、私はそのようなアクセスメモリ位置にユーザを禁止するために、C ++構造内の任意の名前なしで、メモリ内の余白を作成したいです。 現在、私はuint32_t :96;3ワードの代わりになる醜いビットフィールドを配置することでそれを達成しましたが、GCC(ビットフィールドが大きすぎてuint32_tに収まらない)から警告が出されます。これはかなり合法です。 正常に動作しますが、数百の警告が含まれるライブラリを配布する場合は、それほどクリーンではありません... どうすれば適切に実行できますか? そもそもなぜ問題があるのですか? 私が取り組んでいるプロジェクトは、マイクロコントローラーライン全体(STMicroelectronics STM32)のさまざまな周辺機器のメモリ構造を定義することです。そうするために、結果は、対象となるマイクロコントローラーに応じて、すべてのレジスターを定義するいくつかの構造体の結合を含むクラスです。 非常に単純なペリフェラルの簡単な例は次のとおりです。汎用入出力(GPIO) union { struct { GPIO_MAP0_MODER; GPIO_MAP0_OTYPER; GPIO_MAP0_OSPEEDR; GPIO_MAP0_PUPDR; GPIO_MAP0_IDR; GPIO_MAP0_ODR; GPIO_MAP0_BSRR; GPIO_MAP0_LCKR; GPIO_MAP0_AFR; GPIO_MAP0_BRR; GPIO_MAP0_ASCR; }; struct { GPIO_MAP1_CRL; GPIO_MAP1_CRH; GPIO_MAP1_IDR; GPIO_MAP1_ODR; GPIO_MAP1_BSRR; GPIO_MAP1_BRR; GPIO_MAP1_LCKR; uint32_t :32; GPIO_MAP1_AFRL; GPIO_MAP1_AFRH; uint32_t :64; }; struct { uint32_t :192; GPIO_MAP2_BSRRL; GPIO_MAP2_BSRRH; uint32_t …

30
なぜアセンブリでプログラムするのですか?[閉まっている]
クローズ。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 昨年休業。 この質問を改善する そこにいるすべてのハードコアな低レベルのハッカーに質問があります。私はブログでこの文に出くわしました。それは一般的な声明のように思われるので、私はソースが重要であるとは本当に思いません(あなたが本当に気にかけているならそれはHaackです)。 たとえば、最近の多くの3Dゲームには、C ++とアセンブリで記述された高性能コアエンジンがあります。 アセンブリに関する限り、コンパイラが余分な命令を発行したり、過剰なバイトを使用したりしたくないため、またはCで表現できない(またはなしで表現できない)より優れたアルゴリズムを使用しているため、アセンブリで記述されたコードです。コンパイラはそれらを混乱させます)? 低レベルのものを理解することが重要だと完全に理解しています。あなたがそれを理解した後、私はアセンブリのなぜプログラムを理解したいだけです。

9
x << 1またはx << 10のどちらが速いですか?
私は何も最適化したくありません、私は誓います、私は好奇心からこの質問をしたいだけです。ほとんどのハードウェアには、単一のコマンドであるビットシフトのアセンブリコマンド(たとえばshl、shr)があることを私は知っています。ただし、シフトするビット数は重要ですか(ナノ秒単位、またはCPUタクト単位)。言い換えれば、次のいずれかがどのCPUでも高速ですか? x &lt;&lt; 1; そして x &lt;&lt; 10; そして、この質問で私を憎まないでください。:)
83 c++  c  performance  cpu  low-level 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.