Документ взят из кэша поисковой машины. Адрес оригинального документа : http://ternarycomp.cs.msu.ru/Papers/Sborn12_Sidorov.pdf
Дата изменения: Tue Mar 20 10:47:14 2012
Дата индексирования: Mon Oct 1 19:30:51 2012
Кодировка:
.., ..
(, Ternary Virtual Machine TVM) , «» «-70» [1]. ­ () [2]. , , , , . , , , . . , , , . , . , , , - ­ - , . - , . , , . , ,


, , . , , , , . . . [3]. , , , n- 2n, 3n. , , ( ), ( ­ trit). 0 1 , ­1, , . , () . , , , : - ; - ; - ; - () , . , ­ ­ . {P,M}, P ,


"1", M ­ , "­1". , "­1" "­", "1" "+", "00+0­0+­+" {P,M}={001000101,000010010}. . «» «-70», , , (, ) , . , , . , ­ . ­ , ­1, 0 1. ­ . 9 , 19683 [­9841, 9841]. , 8. «» (9 ) (18 ) , «-70» 6 , ­ 18 . , . . ­ 3 (.. 27 ). 7'625'597'484'987 , [­3'812'798'742'493, 3'812'798'742'493]. little-endian, .. . , .. , .


­ « ­ » (LIFO). . , .. , . (), , . . ­ . , : [­MAX, MAX], MAX = 3'812'798'742'493. . . , . . . . , . , , , , . , ( ), , . . , , 4 . . / , , . . (/ , ..), . -, /.


, , , ­ , . goto. , PC , PC , . . , , . : MEMCAP - (read only) CSP - Control Stack Pointer - CSPL - CSP Low ­ CSP - CSP High ­ DSP - Data Stack Pointer - DSPL - DSP Low ­ DSP - DSP High ­ EXC - Exception ­ (0 ­ ) PC - Program Counter ­ STATUS - . R0-R3 - IVBASE - , . IC - Instruction Code ­ , ICL - Instruction Code Lock ­ IC . . , ­ . .


, . . 1 . . 3 , . 0, CALL , 26 . , 326 ( 2500 ) . , 1. 5 (243 , ), 3 ­ , 18 ­ ­ . , .. [­193`710`244, 193`710`244] . , ­1, . , : NEXT_INSTRUCTION: // ()? if ((ICL==0) && ((EXC<-3) || ((EXC==-3) && (STATUS[IE]==1))) { pushcs(STATUS); // STATUS STATUS[IE]=0; // pushcs(PC); // PC PC = m(IVBASE + EXC); //


EXC = 0; } else // { if (ICL == 1) // IC locked, IC ICL=0; else // { IC = m(PC); PC = PC+3; } } // IC PC execute; . , , . CALL, . . RET . () RFE, .. STATUS. , ; EXEC. , . , , ­ IF*, BR*, BRS , * P ­ plus, N ­ minus 0. , [x] BRM p1 p2 p3 , BRM ( ) x ( ); BRM . x<0, p1, p2. , p1 p2 p3.


p1 p2 , . , [x] BRM CALL_p1 CALL_p2 p3 p1 p2. : [cond] DW p cond ­ ( ). DW . , p ( , ), cond. p DW. cond , , p. , ­ , . ­ , , , , . , , . , , , . ( ): // n/m // n = q*m + r, q ­ , r - q = n/m; r = n%m; m = abs(m); if ( 2*abs(r) > m ) { if (q < 0) q=q-1; else q=q+1; if (r < 0) r=r+m; else r=r-m; } , . / , , , . , , - - . ,


. . . , : n , , . , .. . . ( ), , , . -, - . (, ), , - : , , « » . , . , , . , . , , , . , , , .


, . . . . . ( , ) "_" (). , , , , . , , , .. . ­ . ­ , . . : , , . . 1. .., . . // . . 15. .: - , 1978, .3-8. 2. .., .., .., .., .. . .: - . -, 1987 . ­ 80 . 3. Jeff Connelly. Ternary Computing Testbed. 3-Trit Computer Architecture. Computer Engineering Department, California Polytechnic State University of San Luis Obispo, 2008.


: . 12. .: - , 2011. . 46-55.