手册上介绍:
The stack pointer for a stack segment should be aligned on 16-bit (word) or 32-bit (double-word)
boundaries, depending on the width of the stack segment. The D flag in the segment descriptor
for the current code segment sets the stack-segment width (refer to Chapter 3, Protected-Mode
Memory Management of the Intel Architecture Software Developer’s Manual, Volume 3). The
PUSH and POP instructions use the D flag to determine how much to decrement or increment
the stack pointer on a push or pop operation, respectively. When the stack width is 16 bits, the
stack pointer is incremented or decremented in 16-bit increments; when the width is 32 bits, the
stack pointer is incremented or decremented in 32-bit increments.
The processor does not check stack pointer alignment. It is the responsibility of the programs,
tasks, and system procedures running on the processor to maintain proper alignment of stack
pointers. Misaligning