рдЯрд░реНрдирд░реА рдХрдВрдкреНрдпреВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ: рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреЗ рд╣реИрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореИрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рдВрддреБрд▓рд┐рдд рд╕рдВрддреБрд▓рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд░реВрдк рд╕реЗ рдЯрд░реНрдиреЗрд░реА рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреЗ рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВ , рдЬреЛ рдореБрдЭреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЖрдпрд░рди рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВ, рдЬреИрд╕реЗ рд╣реА рдпрд╣ рддреИрдпрд╛рд░ рд╣реЛрдЧрд╛ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд▓реЙрдиреНрдЪ рдХрд░реВрдВрдЧрд╛! рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЯреНрд░рд╛рдЗрдбреЛрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╣реА рдЖрджрд┐рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рднрд╛рд╖рд╛ рд╕рдордЭрддрд╛ рд╣реИ, рдЬреЛ рдЕрд╕реЗрдВрдмрд▓рд░ рдпрд╛ рдмреНрд░реЗрдирдлреБрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ :)



- рдПрдХ рднрдпрд╛рдирдХ рджреБрдГрд╕реНрд╡рдкреНрди! рд╢реВрдиреНрдп рдФрд░ рд╕рдм рдЬрдЧрд╣ рд╣реИрдВред рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдбреНрдпреВрд╕ рдХреЛ рджреЗрдЦрд╛ред
"рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рдкрдирд╛ рд╣реИ, рд╢рд░рд╛рдмреА рд╣реИред" рдХреЛрдИ рджреЛрд╣реЗ рдирд╣реАрдВ рд╣реИрдВред

, ! - , , !




, -13 +13. R1-R4 R5-R13. , R13 тАФ , ( ). , 13 [-13..+13]. , / . 27 27 . , 729 . :






, , ( ).


9 , . , EX ttt halt and catch fire. :






git clone https://github.com/ssloy/triador.git
cd triador
mkdir build
cd build
cmake ..
make
./triador ../prog/add.txt

:


Gitpod рдореЗрдВ рдЦреЛрд▓реЗрдВ


, . ( ).





. . . , , ttt NNN (-13) PPP (+13):


  • EX ttt
  • JP ttt
  • SK ttt
  • OP ttt
  • RR ttt
  • R1 ttt
  • R2 ttt
  • R3 ttt
  • R4 ttt

.





, . , , R1-R4.



, , R2 R3. ! /. ? !


. , R2 R3 . /, R2 R3 , R2 :


int main() {
    unsigned int R2 = 2;
    unsigned int R3 = 11;
    while (R2!=0) {
        R3++;
        R2--;
    }
    return R3;
}

, ? , , R2 :


int main() {
    int R2 = -2;
    int R3 = 13;
    while (R2!=0) {
        if (R2>0) R3++;
        if (R2<0) R3--;
        if (R2>0) R2--;
        if (R2<0) R2++;
    }
    return R3;
}

, , . . : / R1. , R3 , R1, , R1 R3!


, R2 R3 . R3:



( ) тАФ . NNN NNN, -364 . , , , .


:


$ ./triador ../prog/add.txt | tail -n 3
 R1  R2  R3  R4  R5  R6  R7  R8  R9 R10 R11 R12 R13  C   PC
 11   0  11   5   0   6 -12  -2  11   8  11 -10 -13  0  -345

, R3 11, -2 + 13.


, while , , JP, SK, .


: , JP ttt ttt, . ? R13! JP ttt 27*R13 + ttt. , ttt , R13. NNN (-13),


R1 NNN # write -13 to R1
RR NNN # copy R1 to R13

, R13, NNN.





, . , , . R2 R3, R3 R4: R3 + R4*27, , R4 -1, 0 or 1.



$ ./triador ../prog/add-with-overflow-control.txt |tail -n 3
 R1  R2  R3  R4  R5  R6  R7  R8  R9 R10 R11 R12 R13  C   PC
-12   0 -12   1  -9   2 -12  -6   4   5   6   7 -13  0  -338

, R3 + 27 * R4 15, 2+13. - R4 C:


[...]
SK OOO # skip if C==0        
JP OPO # overflow тФАтФАтФАтФАтФАтФАтФАтФР   
JP PNO # no overflow тФАтФАтФАтФАтФВтФАтФР 
R4 OOP # write 1 to R4 <тФАтФШ тФВ 
SK OOP # skip if C==1      тФВ 
R4 OON # write -1 to R4    тФВ 
RR OPN # copy R2 to R1 <тФАтФАтФАтФШ 
[...]




, [-13..+13] ? , word ( , ). R1,R2 R3,R4. , R4,R5.



$ ./triador ../prog/long-add.txt |tail -n 3
 R1  R2  R3  R4  R5  R6  R7  R8  R9 R10 R11 R12 R13  C   PC
  3   0   0  -6   3 -13   1   3   6   5  13  -2 -13  0  -335

, R4+27 * R5 = 75, 331-256. , ? , , . , . , . , C++ :)


: , . , . ! R7 , -. , R7 :


[...]
SK ONO # skip if R1!=0
JP OON # sub return 1
JP POP # sub return 2




, . , R2 R3. R2.


, , C++. , R2 R3 , :


int main() {
    int R2 = 12, R3 = 8;

    while (true) {
        if (R2==R3) break;
        if (R2>R3)
            R2 = R2 - R3;
        else
            R3 = R3 - R2;
    }

    return R2;
}

, ? , : R2, R3; , . m R2 R3, , , R2-R3. , R2 = a m, R3 = b m , R2-R3 = (a-b) m. - .


, ? :) : , . , !


int main() {
    int R2 = 12, R3 = -8;

    while (true) {
        if (R2<0) R2 = -R2;
        if (R3>0) R3 = -R3;

        if (R2==-R3) break;

        int R4 = R2 + R3;
        if (R4>0)
            R2 = R4;
        else
            R3 = R4;
    }

    return R2;
}

:



:


$ ./triador ../prog/gcd.txt |tail -n 3
 R1  R2  R3  R4  R5  R6  R7  R8  R9 R10 R11 R12 R13  C   PC
-13   4  -4   0   4  12  13   1  -7  -9   3   4 -13  0  -338

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ R2 рд╕реНрдЯреЛрд░ 4, рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдХ 12 рдФрд░ -8 рд╣реИред




рдирд┐рд╖реНрдХрд░реНрд╖


рдореЗрд░реЗ рдЯрд░реНрдирд░реА рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░рдирд╛ рдПрдордХреЗ -61 рдЬреИрд╕реЗ рдХрд┐рд╕реА рднреА рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд╕реЗ рдЕрдзрд┐рдХ рдХрдард┐рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЯреНрд░рд┐рдирд┐рдЯреА рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реА рд╕реВрдХреНрд╖реНрдо рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рджреВрд╕рд░рд╛ рд╕реАрдЬрд╝рди рдПрдХ рдЕрдВрдХрдЧрдгрд┐рддреАрдп-рддрд╛рд░реНрдХрд┐рдХ рдЙрдкрдХрд░рдг рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛ред рдЗрд╕ рдмреАрдЪ, рд╕реИрдирд┐рдЯрд░реА рдЕрд╢рд╛рдВрддрд┐ рдЖрдкрдХреЛ рд▓реЛрд╣реЗ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИ, рдЖрдк рдЕрдкрдиреА рдЖрддреНрдорд╛ рдХреЛ рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЙрддрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдВ, рдирдП рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдпреЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдВ, рдЪрд▓реЛ рдордЬрд╝реЗ рдХрд░реЗрдВ!




рдмрдиреЗ рд░рд╣реЗрдВред

All Articles