рдХрд┐рд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдмреЗрд░рд╛ рдкрд░ рдХреБрдЫ рдкреЛрд╕реНрдЯ рдереЗ, рдФрд░
рдореВрд░ рдХреЗ рд╣рд╛рд▓рд┐рдпрд╛ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рдо рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдХрд░, рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдХрд┐рд▓реЗ-рдкреНрд░реЛрд╕реЗрд╕рд░ -
J1 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рдпрд╣ рд╕рдВрднрд╡рддрдпрд╛ рд╕рдмрд╕реЗ рдиреНрдпреВрдирддрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИ рдЬрд┐рд╕реЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдк рдЗрд╕реЗ рдЦреБрдж FPGA рдкрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рд╕реЗ рджреВрд░ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЙрдирдХреЗ рдПрдореБрд▓реЗрдЯрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдФрд░, рдкреЛрд╕реНрдЯ рдореЗрдВ рдЕрд╕рд╛рдорд╛рдиреНрдпрддрд╛рдПрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЧреЛ рдореЗрдВ рдПрдореБрд▓реЗрдЯрд░ рд▓рд┐рдЦреВрдВрдЧрд╛ред
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рдкреНрд░реЛрд╕реЗрд╕рд░ 16-рдмрд┐рдЯ рд╣реИ, рдпрд╣ 32KB рддрдХ рдореЗрдореЛрд░реА (рдиреАрдЪреЗ 64Kb рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддрд╛) рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ рд╡рд┐рднрд┐рдиреНрди рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╣реИрдВ, рдЗрд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рднреА 32Kb рддрдХ рд╣реИред
рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реНрдЯреИрдХреНрдб рд╣реИ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдПрдХ рднреА рд░рдЬрд┐рд╕реНрдЯрд░ рдирд╣реАрдВ рд╣реИ (рдЬрд┐рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рджреЛ рд╕реНрдЯреИрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ - рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛
- рдХреЙрд▓ рд╕реНрдЯреИрдХ - рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдХрднреА-рдХрднреА рдЕрд╕реНрдерд╛рдпреА рднрдВрдбрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рджреЛрдиреЛрдВ рдвреЗрд░ рдЙрдерд▓реЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 33 рддрддреНрд╡ред рд╕реНрдЯреИрдХ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, 16-рдмрд┐рдЯ рднреА рд╣реИрдВред
рд╡рд╣ рд╕рдм рд╣реИред I / O рдкреЛрд░реНрдЯ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдореЗрдореЛрд░реА-рдореИрдкреНрдб I / O рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрдореЛрд░реА рдХреЗ рдКрдкрд░реА 16Kb рдХреЛ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред
рдПрдореБрд▓реЗрдЯрд░
рдореИрдВ рдЧреЛ рдкрд░ рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рдХреЛрдб рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рднрд╛рд╖рд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рд╣рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
type J1Stack [33]uint16 type J1Cpu struct { pc uint16 r J1Stack s J1Stack rp int sp int mem []uint16 }
рдХреБрд▓ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЗрдореНрдпреВрд▓реЗрдЯреЗрдб рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдПрдХ рдкреАрд╕реА рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХрд╛рдЙрдВрдЯрд░, рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ s, рдХреЙрд▓ рд╕реНрдЯреИрдХ рдЖрд░, рдкреЙрдЗрдВрдЯрд░реНрд╕ рдЗрди рд╕реНрдЯреИрдХреНрд╕ рд╕рдкрд╛ рдФрд░ рдЖрд░рдкреА рдХреЗ рд╕рдмрд╕реЗ рдКрдкрд░ рд╣реИ, рдФрд░ рдЖрдВрддрд░рд┐рдХ рдореЗрдореЛрд░реА (рд╡реИрд╕реЗ, рдореЗрдореЛрд░реА рднреА рдХреЗрд╡рд▓ 16-рдмрд┐рдЯ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдЗрдЯ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ) ред
рд╣рдо J1Cpu рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
func NewJ1Cpu(memSize int) (j1 *J1Cpu) { j1 = new(J1Cpu) j1.mem = make([]uint16, memSize) j1.sp, j1.rp = -1, -1 return j1 }
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рд╣рдо рд╕рдВрдХреЗрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдЯреИрдХ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдиреБрджреЗрд╢
рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ 5 рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ:

рд╡реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:
LIT X: рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдорд╛рди X рдбрд╛рд▓реЗрдВред рдЪреВрдБрдХрд┐ 1 рдмрд┐рдЯ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рд╣реИ, рдХреЗрд╡рд▓ 15 рдмрд┐рдЯреНрд╕ рдХреЛ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ рдХрд╛ 15-рдмрд┐рдЯ рдкрддрд╛ред
JMP X: рдПрдбреНрд░реЗрд╕ X рдкрд░ рдЬрд╛рдПрдВ
JZ X: рдпрджрд┐ рдорд╛рди 0 рд╕реНрдЯреИрдХ s рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╣реИ, рддреЛ X рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВ
рдХреЙрд▓ рдПрдХреНрд╕: рд╕реНрдЯреИрдХ рдЖрд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦрд╛ рдореВрд▓реНрдп рдкреАрд╕реА + 1 (рдЕрдЧрд▓реЗ рдирд┐рд░реНрджреЗрд╢), рдФрд░ рдкрддрд╛ рдПрдХреНрд╕ рдкрд░ рдЬрд╛рдПрдВред
ALU: рдпрд╣ рдпрд╣рд╛рдБ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ред
рд╣рдо Exec рдкрджреНрдзрддрд┐ рдореЗрдВ рдЗрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
const ( J1_OP = (7 << 13) J1_ARG = 0x1fff J1_JMP = (0 << 13) J1_JZ = (1 << 13) J1_CALL = (2 << 13) J1_ALU = (3 << 13) J1_LIT = (4 << 13) J1_LIT_MASK = 0x7fff ) func (j1 *J1Cpu) Exec(op uint16) { if op & J1_LIT != 0 { j1.sp++ j1.s[j1.sp] = op & J1_LIT_MASK j1.pc++ return } arg := op & J1_ARG switch op & J1_OP { case J1_JMP: j1.pc = arg case J1_JZ: if j1.s[j1.sp] == 0 { j1.pc = arg } j1.sp-- case J1_CALL: j1.rp++ j1.r[j1.rp] = j1.pc + 1 j1.pc = arg case J1_ALU: j1.execAlu(arg) } }
рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрджрд▓рдХрд░, рдореИрдВ рдкреНрд░реА-рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдФрд░ рдкреЛрд╕реНрдЯ-рдбреАрдХреНрд░реАрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЧреЛ рдореЗрдВ рдЖрдк рдЙрдиреНрд╣реЗрдВ C (рд╕реНрдЯреИрдХ [++ sp] = x; ... x = stack [sp--]) рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ - рдФрд░ рдпрд╣ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ!
рдЬреЗ 1 рдП рдПрд▓ рдпреВ
рдпрд╣ рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢ рд╣реИред рдЪрд▓реЛ рдкрд╣рд▓реЗ рдЙрди рдкрд╛рддреНрд░реЛрдВ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓реЗрдЦрдХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЯреА - рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рддрддреНрд╡
N, рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЖрд░рдВрдн рдореЗрдВ T рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рддрддреНрд╡ рд╣реИ
рдЯреА 'рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ
рдЖрд░ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рддрддреНрд╡ рд╣реИ
рдкреАрд╕реА - рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢ рдХрд╛рдЙрдВрдЯрд░ рдореВрд▓реНрдп
[рдЯреА] - рдкрддреЗ рдкрд░ рд╕реНрдореГрддрд┐ рддрдХ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдкрд╣реБрдВрдЪ рдЯреА
рдХреЗрд╡рд▓ 16 рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ:
0: рдЯреА '= рдЯреА
1: рдЯреА '= рдПрди
2: рдЯреА '= рдЯреА + рдПрди
3: рдЯреА '= рдЯреА рдФрд░ рдПрди
4: рдЯреА '= рдЯреА рдпрд╛ рдПрди
5: рдЯреА '= рдЯреА xor рдПрди
6: рдЯреА '= ~ рдЯреА (рдмрд┐рдЯрд╡рд╛рдЗрд╕ рдЙрд▓рдЯрд╛)
7: рдЯреА '= (рдЯреА == рдПрди)
8: рдЯреА '= (рдПрди <рдЯреА)
9: рдЯреА '= рдПрди >> рдЯреА (рдЯреА рдмрд┐рдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рд╣реА рдмрджрд▓рд╛рд╡)
10: рдЯреА '= рдЯреА -1
11: рдЯреА '= рдЖрд░
12: рдЯреА '= [рдЯреА]
13: рдЯреА '= рдПрди << рдЯреА
14: рдЯреА '= рдЧрд╣рд░рд╛рдИ (рдбреЗрдЯрд╛ рд╕реНрдЯреИрдХ рдЧрд╣рд░рд╛рдИ)
15: рдЯреА '= (рдПрди <рдЯреА), рдЗрд╕ рдмрд╛рд░ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рддреБрд▓рдирд╛
рдпрд╣рд╛рдБ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:
func (j1 *J1Cpu) execAlu(op uint16) { var res, t, n, r uint16 if j1.sp >= 0 { t = j1.s[j1.sp] } if j1.sp > 0 { n = j1.s[j1.sp-1] } if j1.rp > 0 { r = j1.r[j1.rp-1] } j1.pc++ code := (op & (0xf << 8)) >> 8 switch code { case 0: res = t case 1: res = n case 2: res = t + n case 3: res = t & n case 4: res = t | n case 5: res = t ^ n case 6: res = ^t case 7: if n == t { res = 1 } case 8: if int16(n) < int16(t) { res = 1 } case 9: res = n >> t case 10: res = t - 1 case 11: res = j1.r[r] case 12: res = j1.mem[t] case 13: res = n << t case 14: res = uint16(j1.sp + 1) case 15: if n < t { res = 1 } } ds := op & 3 rs := (op & (3 << 2)) >> 2 if ds == 1 { j1.sp++ } if ds == 2 { j1.sp-- } if rs == 1 { j1.rp++ } if rs == 2 { j1.rp-- } if op&(1<<5) != 0 { println("N->[T]") j1.mem[t] = n } if op&(1<<6) != 0 { println("T->R") if j1.rp < 0 { panic("Call stack underrun") } j1.r[j1.rp] = t } if op&(1<<7) != 0 { println("T->N") if j1.sp > 0 { j1.s[j1.sp-1] = t } } if op&(1<<12) != 0 { println("R->PC") j1.pc = j1.r[r] } if j1.sp >= 0 { j1.s[j1.sp] = res } }
рдлрд╝рдВрдХреНрд╢рди рдЗрддрдирд╛ рдмрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрд╣реБрдд рдЖрд╢рд╛ рдХреЗ рд╕рд╛рде рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ред рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдЯреА, рдПрди, рдЖрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЯреА рдХреЗ рдирдП рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдвреЗрд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЯреА рдХреЗ рдирдП рдореВрд▓реНрдп рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
рдЕрдм рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╣реИ рдЬреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рддреАрди рдХрдорд╛рдВрдб рд╣реИ
LIT 5 (рд╕реНрдЯреИрдХ рдкрд░ - 5)
LIT 7 (рд╕реНрдЯреИрдХ рдкрд░ - 5 7)
ALU OP = 2 (рдЬреЛрдбрд╝), DS = -1 (рдЬреЛ рдХрд┐ рд╕реНрдЯреИрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ 1. рд╕реЗ рдЬреЛрдбрд╝рддреЗ рдФрд░ рдШрдЯрд╛рддреЗ рд╣реИрдВред рд╕реНрдЯреИрдХ рдкрд░, 12)ред
рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдмрд╕ рдЖрдЦрд┐рд░реА рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдЭрдВрдбрд╛ "R-> рдкреАрд╕реА" рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рд▓рдЧрднрдЧ 7% рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
рдФрд░ рдлреЛрд░реНрде рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╣рд╛рдВ рд╣реИ?
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдпрд╣ рд╕реЗрдЯ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдлреЛрд░реНрдЯ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╢рдмреНрдж рдПрдХрд▓ рдирд┐рд░реНрджреЗрд╢ J1 рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред рд▓реЗрдХрд┐рди J1 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд┐рд▓реЗ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╣реЛрдЧрд╛, рдФрд░ рдЕрдм рдореИрдВ
рдПрдореБрд▓реЗрдЯрд░ рдХреЗ
рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред
рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд▓реЗ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ - J1 рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд░
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ (crossj1.fs)ред