对于通常的数据传输来说(内存和寄存器之间),Load/Store可以采用相同的寻址方式,数据向内存中存放的方式和从内存中读取的方式相同,因而可以方便地实现批量传输。
对于数据栈的操作,数据写入内存和从内存中读出的顺序不同。
栈指针通常可以指向不同的位置。栈指针执行栈顶元素(即最后一个入栈的数据元素)时称为Full栈(满栈);栈指针执行于栈顶元素相邻的一个可用数据单元时称为Empty栈(空栈)。
数据栈的增长方向也可以不同。当数据栈向内存地址减小的方向增长时,称为Descending栈(减栈)。;当数据栈向内存地址增加的方向增长时,称为Ascending栈(增栈)。
综合以上特点,可以有以下4种数据栈。
- FD:Full Descending 满减栈
- ED:Empty Descending 空减栈
- FA:Full Ascending 满增栈
- EA:Empty Ascending 空增栈
不同的数据栈对应的批量Load/Store指令的寻址方式如下图所示。