通信用語の基礎知識 全国のICカードこれひとつ 戻る

スタック
辞書:電算用語の基礎知識 プログラミング用語編 (PTPROGY)
読み:スタック
外語:stack
品詞:名詞

最後に格納したものが真っ先に取り出される形式(LIFO)によるデータの格納方法のこと。英語で積み重ねること。

目次
概要

スタックは、本を積み重ねるような構造である。

新しいデータは上に重ね、取り出す時は上から順に出てくるようなスタイルの構造をなす。

LIFO
LIFO

特徴
CISC/RISC

CISCタイプのマイクロプロセッサーでは、レジスターの内容の保管に用いたり、他のプログラムを呼び出す際に現在実行中のアドレスを保管しておいたりする際に利用している。

RISCでは、高速化のためにスタックの機能を持っていないものもある。

メモリー

スタックはメインメモリーの一部を利用し、その位置はCPUのレジスターであるスタックポインターによって示されるのが一般的である。従って、スタックの大きさは有限であり、格納できるデータの総量は決まっている。

しかしプログラムのバグなどで規定の大きさを超える量のデータをスタックに積んでしまった場合、別のメモリー領域を破壊してしまうことになる。これをスタックオーバーフロー(スタックあふれ)と呼ぶ。

実装
スタックポインター

一般的な実装では、スタックに使うメモリー領域をまず決め、その領域の底となる最上位アドレスをスタックポインターに登録する。

そして、データをスタックに積む場合は、積む大きさ分スタックポインターを減算する。

スタックからデータを取り出す場合は、取り出した大きさ分スタックポインターを加算する。

動作モード

ARMを例にすると、次の4つのモードがある。

Full/Emptyは先に加減するか後で加減するかを表わし、Descending/AscendingはSPを減算するか加算するかを表わす。

殆どのCPUの実装は、このうちFull Descending(フル下降)である。

リンク
関連する用語
LIFO
キュー
スタックポインター
スタックオーバーフロー
スタックアンダーフロー
スタックフレーム

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic