● If "[S]+3" (LIFO pointer) is 0, set [S] (buffer size) to "[S]+3" (LIFO pointer).
● "[S]+3" (LIFO pointer) is decremented (-1).
● According to the operation unit [i], the data of the area specified by "[S]+3" (LIFO pointer) are
set to [D].
● "[S]+1" (stored data amount) is decremented (-1).
■
Format of data buffer (LIFO)
Buffer size
Stored data amount
Fixed to 0
LIFO pointer
・・・Size of the data buffer area
・・・Stored data amount (by operation unit)
・・・Fixed to 0
・・・Relative number from [S]+4
Data buffer area
[S]
[S]+1
[S]+2
[S]+3
・・・・・・・・
■
Processing
1. "[S]+3" (LIFO pointer) is decremented (-1).
2. Set the data of the area specified by "[S]+3" (LIFO pointer) to [D] (read data).
3. "[S]+1" (stored data amount) is decremented (-1).
H 105
K 5
K 0
H 101
H 103
K 4
K 4
H 102
H 104
K 5
K 0
H 101
H 103
DT0
DT1
DT2
DT3
DT4
DT5
DT6
DT7
Example) 16 bits (US, SS)
K 3
K 3
H 102
H 104
DT0
DT1
DT2
DT3
DT4
DT5
DT6
DT7
H 10DT20
DT8 H 105
DT8
[S]…DT0 [D]…DT20
[S]
[S]+1
[S]+2
[S]+3
[S]+4
[S]+5
[S]+6
[S]+7
[S]+8
H 104DT20
[S]
[S]+1
[S]+2
[S]+3
[S]+4
[S]+5
[S]+6
[S]+7
[S]+8
② Because [S]+3 (LIFO pointer) points at 3, transfer
3rd data in the buffer to [D].
③ Decrement (-1)
① Decrement (-1)
(Buffer size)
(Stored data amount)
(LIFO pointer)
(0th)
(1st)
(2nd)
(3rd)
(4th)
-
(Buffer size)
(Stored data amount)
(LIFO pointer)
(0th)
(1st)
(2nd)
(3rd)
(4th)
-
[i]…US,SS
■
Flag operations
Name Description
SR7
SR8
(ER)
To be set in the case of out-of-range in indirect access (index modification).
To be set when [S] (buffer size) is larger than 4096, or [S] (buffer size) is 0.
To be set when "[S]+1" (stored data amount) is 0.
To be set when "[S]+2" is other than 0.
To be set when "[S]+1" (stored data amount) is larger than [S] (buffer size).
8.20 LIFR (Data Read (Last-In-First-Out))
WUME-FP7CPUPGR-12 8-43