- 論壇徽章:
- 3
|
本帖最后由 cjaizss 于 2011-04-16 21:36 編輯
該輪到寄存器出場(chǎng)了
所有的字符都可以做為獨(dú)立的寄存器名稱
a,b,c,d,1,2,3,4,A,B,C...
甚至,#@!%^&*()-+='"][{}||.~`.都可以
所以有很多很多寄存器可供使用,一共可以有256個(gè)之多,足夠用了。
\xa0,\xa1...,\xff都是不同的寄存器
還記得d命令復(fù)制棧頂嗎?f打印整個(gè)主棧?以下相當(dāng)于1001 d f,使用了寄存器\xff
echo -e '1001 s\xff l\xff l\xff f' | dc
1001
1001
現(xiàn)在以寄存器r來(lái)代表
首先,我們要清楚,寄存器是一個(gè)棧結(jié)構(gòu),和主棧是一樣的,只是它不能直接用于計(jì)算而已,是用于存儲(chǔ)的,初始的時(shí)候也是空棧,
sr 將主棧棧頂出棧,如果寄存器r棧為空,則將剛才出主棧的值入r棧,否則修改r棧頂為剛才出主棧的值
lr 將寄存器r棧頂?shù)闹等胫鳁,為空則會(huì)打印錯(cuò)誤信息(說(shuō)到這里,其實(shí)dc里面所有操作棧出錯(cuò)都會(huì)打印錯(cuò)誤信息,并跳過(guò))
Sr 將主棧棧頂出棧,r棧進(jìn)棧
Lr r棧出棧,主棧進(jìn)棧
要理解下面兩個(gè)命令,就要先明白寄存器棧的每一層都可以有一個(gè)使用數(shù)字下標(biāo)訪問(wèn)的數(shù)組
:r 主棧出棧兩次,先從主棧棧頂彈出一個(gè)值a,再?gòu)闹鳁m攺棾鲆粋(gè)值b,然后令r[a]=b
;r 主棧出棧,從主棧棧頂彈出一個(gè)值a,然后將r[a]進(jìn)主棧 |
|