短い答え:はい、16ビットまたは32ビット。そして、x86-64の場合、64ビットです。
スタックの主な理由は、ネストされた関数呼び出しから戻り、レジスタ値を保存/復元することです。これは、通常、パラメータを渡して関数の結果を返すためにも使用されます。最小のパラメータを除いて、これらの項目は通常、プロセッサの設計、すなわち命令ポインタレジスタのサイズによって同じサイズを有する。 8088/8086では、16ビットです。 80386以降では32ビットです。したがって、他のサイズで動作するスタック命令を持つことにはほとんど価値がありません。
メモリバス上のデータのサイズも考慮します。単語の検索や保存には1バイトと同じ時間がかかります。 (ただし、16ビットレジスタで8ビットのデータバスを持つ8088は除きます。)アラインメントも有効です。各値を1回のメモリ操作として取り出すことができるように、スタックはワード境界に整列させる必要があります。トレードオフは通常、メモリの節約にかかる時間を節約するために行われます。 1バイトをパラメータとして渡すには、通常は1語が使用されます。 (または、コンパイラで使用できる最適化によっては、1つのワードサイズのレジスタが使用され、スタック全体を避けることができます)。
このステートメントは32ビットモードでのみ適用され、2バイト要素。 – harold