рд╣рдо рдЕрдкрдиреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рднрд╛рдЧ 2: рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡

рдЫрд╡рд┐

рдкрд░рд┐рдЪрдп


рдореЗрд░реЗ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдмрдзрд╛рдИред

рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ, рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рднрд╛рд╖рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред

рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ (рд▓рд┐рдВрдХ: habr.com/post/435202 ) рдореИрдВрдиреЗ рдПрдХ рднрд╛рд╖рд╛ VM рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реА рднрд╡рд┐рд╖реНрдп рдХреА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдмрдирд╛рдиреЗ рдХреЗ рдореБрдЦреНрдп рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд╡реАрдПрдо рдкрд░ рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдореВрд░реНрдд рдмрд╛рдЗрдЯрдХреЛрдб рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдФрд░ рдЗрд╕рдХреЗ рднрдВрдбрд╛рд░ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЛрдЯ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛ред

рд╡реЗрдмрд╕рд╛рдЗрдЯ
рдХреЛрд╖

рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рднреА рдХреЛрдб рдПрдлрдкреАрд╕реА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдФрд░ рдореИрдВ рдЗрд╕ рдкрд░ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред

рддреЛ, рд╣рдо рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВред

рд╣рдордиреЗ рдордзреНрдпрд╡рд░реНрддреА рднрд╛рд╖рд╛ рдХреЛ рдЖрддреНрдорд╕рдорд░реНрдкрдг рдХреНрдпреЛрдВ рдХрд┐рдпрд╛?


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

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

рд╣рдо рдЗрд╕ рдЪрдорддреНрдХрд╛рд░ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдард╛рддреЗ рд╣реИрдВ


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд▓рд┐рдЦреЗрдВрдЧреЗ? рдЕрдВрддрд┐рдо рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рдЧреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

  • рд╕рд░рд▓ рд╕рдВрдпреЛрдЬрдХред VMs рдХреЗ рд▓рд┐рдП opcodes рдХреЗ рдПрдХ рд╕реЗрдЯ рдореЗрдВ рд╕рд░рд▓ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИред
  • рдЪрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╛ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
  • рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╛ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
  • рдЕрдиреБрд╡рд╛рдж рдХреЗ рдЪрд░рдг рдореЗрдВ рдЙрдирдХреЗ рдкрддреЗ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ред
  • рд╢рд╛рдпрдж рдХреБрдЫ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдмрдиреНрд╕ред

рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЪрд┐рддреНрд░рдг рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рдЖрджрд┐рдо рдЕрдиреБрд╡рд╛рджрдХ рджреНрд╡рд╛рд░рд╛ рд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдЗрд╕рд▓рд┐рдП, рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЖрдЗрдП рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВред

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрд╕реЗрдВрдмрд▓рд░ рд▓рд┐рдЦрдирд╛


рд╣рдо рдЦреБрдж рд╕реЗ рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдЕрд╕реЗрдореНрдмрд▓рд░ рдХреНрдпрд╛ рд╣реИ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдкрд╛рдареНрдп рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдУрдкрдХреЛрдбреНрд╕ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

push 0 push 1 add peek 2 pop 

рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИред

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рд░реНрджреЗрд╢ рдореЛрдиреЛрд╕реИрд▓реЗрдмрд┐рдХ рдФрд░ рдмрд╛рдЗрд╕рд▓реИрдмрд┐рдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЦрдбрд╝реА рд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВред

рд╣рдореЗрдВ рдПрдХ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдЯреЛрдХрди рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ (рд╣рдо рдЗрд╕ рдмрд╛рдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдореЗрдВ рддрд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред

рд╣рдо рдЗрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 function Tk(s: string; w: word): string; begin Result := ''; while (length(s) > 0) and (w > 0) do begin if s[1] = '"' then begin Delete(s, 1, 1); Result := copy(s, 1, pos('"', s) - 1); Delete(s, 1, pos('"', s)); s := trim(s); end else if Pos(' ', s) > 0 then begin Result := copy(s, 1, pos(' ', s) - 1); Delete(s, 1, pos(' ', s)); s := trim(s); end else begin Result := s; s := ''; end; Dec(w); end; end; 

рдареАрдХ рд╣реИ, рдЕрдм рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ-рдХреЗрд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдЬреИрд╕рд╛ рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░рд╛ рд╕рд░рд▓ рдЕрд╕реЗрдВрдмрд▓рд░ рддреИрдпрд╛рд░ рд╣реИред

рдЪрд░


рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд╡реАрдПрдо рдореЗрдВ рдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рд╕реНрдерд┐рд░ рдкрддреЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЛ рдПрдХ TStringList рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рддрд╛рд░ рдЪрд░ рдХреЗ рдирд╛рдо рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд╕реВрдЪрдХ рдЙрдирдХреЗ рд╕реНрдерд┐рд░ рдкрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рдЪрд░ рдирд╛рдореЛрдВ рдХрд╛ рджреЛрд╣рд░рд╛рд╡ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ / рдпрд╛ рдЦреБрдж рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рддреИрдпрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ: / lang/u_variables.pas

рд╕реНрдерд┐рд░рд╛рдВрдХ


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

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди: / lang/u_consts.pas

рд╡рд┐рдзрд┐ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ


рдХреЛрдб рдЕрд╡рд░реЛрдзрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдЬрд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди, рдЖрджрд┐ред рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛрдбрд╛рдВрддрд░рдХ рд╕реНрддрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 Summ: peek 0 pop peek 1 pop push 0 new peek 2 mov push 2 push 0 add jr 

рдЙрдкрд░реЛрдХреНрдд рдпреЛрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдЕрдиреБрд╡рд╛рдж рд╣реИ:

 func Summ(a, b): return a + b end 

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

рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рдЬрди рдХрд╛рдЙрдВрдЯрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд░рд▓ рдореЛрдиреЛрд╕реИрд▓рд┐рдХ рдСрдкрд░реЗрдЯрд░ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдкреЙрдк"ред рдЙрдиреНрд╣реЛрдВрдиреЗ 1 рдмрд╛рдЗрдЯ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд┐рдпрд╛ред рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "123 рдзрдХреНрдХрд╛" - рд╡реЗ 5 рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдУрдкрдХреЛрдб рдХреЗ рд▓рд┐рдП 1 рдФрд░ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЗрдВрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП 4ред

рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рд╕рд╛рд░:

  1. рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рд╣реИ, рдЖрдЗрдП рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ = 0ред
  2. рд╣рдо рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рдкреБрд╢ 123" рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ 5 рдЬреЛрдбрд╝ рджреЗрдВ, рдпрджрд┐ рд╕рд░рд▓ рдУрдкрдХреЛрдб рд╣реИред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреЛрдб рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рд╡реИрд▓реНрдпреВ рдФрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВред

рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛


рдпрд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рд░рд▓ рдХреЛрдб рд░реВрдкрд╛рдВрддрд░рдг рд╣реИред

рдкрд░рд┐рдгрд╛рдо


рд╣рдордиреЗ рдЕрдкрдиреЗ рдЫреЛрдЯреЗ рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрдиреБрд╡рд╛рджрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЕрдм рд╣рдо рдЕрдкрдиреЗ VM рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдЖрдЧреЗ рдХреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрдиреБрд╡рд╛рджрдХ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдиреЗ рдХрд┐рдпрд╛ рддреЛ рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдпрджрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред

Source: https://habr.com/ru/post/hi435258/


All Articles