たとえば、8ビットCPUの場合、スタックサイズは8ビット幅、16ビットCPUと16ビットスタック幅、32ビット、64ビットCPUなどが想定されます。すべてのアーキテクチャーに当てはまりますか?スタックの幅は常にCPUレジスタのサイズと同じですか?
答えて
CPUにはデータバスとアドレスバスがあります。同じ幅を持つことができますが、しばしばそうではありません。
スタックポインタはメモリへのポインタなので、内部で使用される(奇妙な/あいまいな)変換がない限り、アドレスバスと同じくらいの幅です。命令ポインタ(現在の命令を指す)もまた、メモリへのポインタであり、スタックポインタのような幅である。
他のレジスタはほとんどがデータを扱うため、データバスと同じ次元を持ちます。しかし、いつものように、例外があります。
古い例を挙げる。 6502。8ビットCPU(8ビットデータバス、16ビットアドレスバス)。これは、多かれ少なかれ汎用レジスタXとYとAと呼ばれる "アキュムレータ"を持っています。すべての8ビットレジスタ。スタック・ポインタと命令ポインタがあり、スタック・ポインタは8個の明示的ビットと8個の暗黙ビット(スタックは常に同じ256バイト領域にある)を有し、したがってスタック・ポインタ・レジスタは8ビットを有し、命令ポインタは16ビットを有する。
8086には、16ビットのデータバスと20ビットのアドレスバスがあります。汎用レジスタは8(および16ビット)です。命令ポインタとスタックポインタは16ビットであるが、セグメントレジスタ(16ビットも含む)を使用して完全な20ビットアドレスを得る。
8ビットCPU、スタックサイズは、あなたがそれを期待するかもしれない は8ビット幅
ことを期待するだろうが、あなたは間違っているだろう。スタックの基本的な使い方は、復帰アドレスを取得するために&を格納することです.8ビットプロセッサでは、実際には16ビットの値になります。例えばZ80命令:
PUSH HL
がスタックに(2つの8ビットレジスタ、HとLの内容)は、16ビット値をプッシュします。 8ビット値をプッシュするZ80命令はありません。
スタックは本当に単なる概念であり、 "スタック幅"は実際に何も意味しません。
おそらく、スタック要素の幅を意味しますが、アーキテクチャのバス幅またはレジスタサイズのサイズに関係なく、通常、任意のサイズの値を任意のスタックに格納できます(いくつかのパディングまたは配置で)。
8ビット、16ビットなどの用語は、少し恣意的であり、実際にはタイトな定義ではないため、「幅」の試行された定義が複雑になります。
まだ言及されていない1つのポイントは、通常のRAMのようにアクセスされない専用のスタックを持つCPUもあります(マイクロチップPICファミリなど)。 PIC16シリーズでは、スタックはプログラムカウンタのみに結び付けられ、スタックはプログラムカウンタと同じ幅(おそらく)の幅です。 PIC18シリーズでは、スタックとプログラムカウンタは両方とも21ビット幅です。上位20ビットをプログラムカウンタにコピーしたり、プログラムカウンタからコピーしたりできます。コードでは、先頭のスタック要素を5ビット部分と2つの8ビット部分として調べることもできます。
- 1. CPUレジスタのサイズ
- 2. スタック上のEBPレジスタのサイズ?
- 3. Android webview.capturePictureは常に同じ幅です
- 4. JavaFX:テキストと同じ幅とサイズのボタン
- 5. WPFコントロールのサイズを常に親のサイズと同じにする
- 6. CPUレジスタとマルチタスク
- 7. 3つの列は常に動的コンテンツと同じサイズです
- 8. カードレイアウトとリサイクルビュー常に同じサイズ
- 9. XIBからのカスタムUITableViewCell:contentViewの幅は常に同じ
- 10. CPUとGPUの同じコードベース
- 11. 幅44ピクセルはすべてのデバイスで同じ物理サイズと同じですか?
- 12. UIScrollviewの幅がiPhoneのサイズと同じになりません
- 13. 同じ幅のDivsは同じ幅ではありません
- 14. char *のサイズはint *のサイズと同じですか?
- 15. prevProps.search.queryは常にthis.props.search.queryと同じです。
- 16. 入力と選択で同じサイズ(幅x高さ)
- 17. ワードプレスでtcpdfのページの幅と高さと同じサイズの背景イメージ
- 18. ListView.ItemTemplateでグリッドの幅をListViewItemと同じ幅にする
- 19. C++ CPUレジスタの使用
- 20. ドキュメントのサイズとウィンドウのサイズが同じになるのはなぜですか?
- 21. エンティティの数は常にデータベーステーブルの数と同じですか?
- 22. Googleマップコンテナのサイズをmdカードのコンテンツの幅と同じに設定する
- 23. numpyは常に同じですか?
- 24. ドロップダウンメニュー項目を常に親と同じサイズにしますか? (ブートストラップとCSS)
- 25. ブートストラップの高さと幅のボックスは同じですか?
- 26. 私のスピナーは私のEditTextと同じ幅にしますか?
- 27. 最大配列サイズはRAMサイズと同じですか?
- 28. ArangoDB HTTP APIのリターンコードは、常にHTTPステータスコードと同じですか?
- 29. JQuery Datatableの列配列(幅と幅が同じではない)
- 30. XMMレジスタをスタックにプッシュ
これは、「オール白鳥が白い」アサーションのようなものです – skaffman
「スタックの幅」とはどういう意味ですか? – starblue
スタック幅とは、アドレス指定可能なメモリスポットの最小間隔を指しています。たとえば、一度にスタックに最低2バイトを格納することができれば、スタック幅は16ビットと言えますか? –