ObjectScript 0.99-vm3 рдХреЗ рд▓рд┐рдП рдмрдбрд╝рд╛ рдЕрдкрдбреЗрдЯред рднрд╛рдЧ 1: рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди

ObjectScript рдПрдХ рдирдпрд╛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдмрд╣реБрдд рд╣рд▓реНрдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ рд╣реИред ObjectScript рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд▓реБрдЖ, рд░реВрдмреА, рдФрд░ PHP рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореВрд▓ рднрд╛рд╖рд╛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

ObjectScript 0.99-vm3 - рдПрдХ рдирдИ рддреЗрдЬрд╝ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдФрд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБред

рдХреБрдЫ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ clone, numberof рдЬрд╛рддрд╛ clone, numberof , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, clone, numberof , рдЖрджрд┐ рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЕрдВрддрд┐рдо рдорд╛рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реА рдЧрдИ - @varname , рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЕрдзрд┐рдХ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд▓рдШреБ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ред рдПрдЯ рдЕрд▓ред

рднрд╛рдЧ 1. рд░рдЬрд┐рд╕реНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди


рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рд╕реНрдЯреИрдХреНрдб рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди (рдЬрд╛рд╡рд╛, .Net, рдПрдХреНрд╢рдирд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдРрд╕реЗ VMs рд╕реНрдЯреИрдХ рдореЗрдВ рдорд╛рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП push, pop рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВред рдЧрдгрд┐рддреАрдп рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп, рдвреЗрд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рджреЛ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рддрд░реНрдХреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб:

  i = j + k 

рд╕реНрдЯреИрдХ рдкрд░ VM рдХреЛ рдХрдорд╛рдВрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

  push_local j -     push_local k -     operator + -     set_local i -       pop -     

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

  add i, j, k 

рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

  var i = var j [operator +] var k 

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

рдЪрд░ рдореЗрдВ рдмрджрд▓рддреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг:

  i, j = j, i 

ObjectScript рдЗрд╕ рдХреЛрдб рдХреЛ рддреАрди рдХрдорд╛рдВрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ:

  move: # = var j move: var j = var i move: var i = # 

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

  temp = j j = i i = temp 


рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреНрдпрд╛ рд╣реИ?


рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рдвреЗрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рдеред рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╣реИ рдЬреЛ рд╣рд░ рд╕рдордп рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдВрднрд╡ рд╣реИред

рдпрд╣ рд░рдЬрд┐рд╕реНрдЯрд░ VM рдХреЗ рдкрд╣рд▓реЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИред рд░рдЬрд┐рд╕реНрдЯрд░ рд╣рдореЗрд╢рд╛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рд╡реАрдПрдо рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪрд░ (рд░рдЬрд┐рд╕реНрдЯрд░) рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡, рдЗрд╕рдХреЗ рдЖрд╡рдВрдЯрди рдФрд░ рд╡рд┐рдирд╛рд╢ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

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

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

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦрд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рдЦрдбрд╝реА рд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдПрдХ рдкрд░рдорд╛рдгреБ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИ, рдпрд╣ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд░рд▓ рд╣реИ рдФрд░ рдХрдо рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ push рдХрдорд╛рдВрдб рдХреЛ 1 рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рдХрдорд╛рдВрдб рдХреЛ рдЕрдЧрд▓реЗ рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдПрдирдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рдкреНрд▓рд╕ рдФрд░ рдПрдХ рдореЛрдЯреА рдорд╛рдЗрдирд╕ рд╣реИред

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

рдорд╛рдЗрдирд╕ рдпрд╣ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЕрднреА рднреА рдПрдХ рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдб рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, push_double, jump , рдЖрджрд┐ред рдРрд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, push_double рдПрдХ рдбрдмрд▓-рд╕рдЯреАрдХ рд╕рдВрдЦреНрдпрд╛ рдбрдмрд▓ (8 рдмрд╛рдЗрдЯреНрд╕) рд╣реИ, jump рдПрдХ рдСрдлрд╕реЗрдЯ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 4) рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдЯ - int32)ред рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреИрдХ рд╡реАрдПрдо рдореЗрдВ рдХрдорд╛рдВрдб рдПрдХ-рджреВрд╕рд░реЗ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдбрдмрд▓ рдирдВрдмрд░ рдпрд╛ рдСрдлрд╕реЗрдЯ рдЗрдВрдЯ 32 рдХрд┐рд╕реА рднреА рдкрддреЗ рдкрд░ рдореЗрдореЛрд░реА рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд┐рд╖рдо рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЬреЛ рд▓реЛрдЧ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рд╡реЗ рддреБрд░рдВрдд рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рд╡рд┐рд╖рдо рдкрддреЗ рдкрд░ dword рдХреЛ рдкрдврд╝реЗрдВ, рддреЛ рдПрдЖрд░рдПрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рд╕реНрддреБрдХрд╛рд░реЛрдВ рдХреЗ рдкрд╛рд╕ рдпрд╛ рддреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдПрдХ рднрдпрд╛рд╡рд╣ рдЧрд┐рд░рд╛рд╡рдЯ рдЖ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рдзрд╛рд░рд╛ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд▓реНрдЯреАрдмрд╛рдЗрдЯ рддрд░реНрдХреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдмрд╛рдЗрдЯ-рдмрд╛рдп-рдмрд┐рдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рддрд░реНрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдлрд╝рд╕реЗрдЯ рдХреЗ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡реАрдПрдо рдХреА рдЧрддрд┐ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡реАрдПрдо рдореЗрдВ, рдХрдИ рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рддреАрди рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрдмреНрдЬреЗ (рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде) 4 рдмрд╛рдЗрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рднреА рдХрдорд╛рдВрдбреНрд╕ рдЧрдардмрдВрдзрди рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рд╣рдореЗрд╢рд╛ 4 рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдХреБрдЫ рдмрд┐рдЯреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реЛрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ObjectScript рдореЗрдВ move рдХрдорд╛рдВрдб рдХреЗ рджреЛ рддрд░реНрдХ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА, рдСрдмреНрдЬреЗрдХреНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИред рдмрд╣реБрдд рдмрд╛рд░, move рдХрдорд╛рдВрдб рдПрдХ рджреВрд╕рд░реЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рджреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рднрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, ObjectScript (рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдЯреЗрдЬ рдкрд░) рджреЛ move рдмрдЬрд╛рдп рдПрдХ move2 рдХрдорд╛рдВрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:

  move2 R, A, B 

рдЬрд┐рд╕реЗ рджреЛ move рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  move R, A move R+1, B 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, move2 рдореЗрдВ рддреАрди рддрд░реНрдХ рд╣реИрдВ рдФрд░ 4 рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрджреЗрд╢реЛрдВ рдХрд╛ рд╕рдВрд░реЗрдЦрдг рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкрдврд╝рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡реАрдПрдо рдХреА рдЧрддрд┐ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред

рдЕрдиреНрдп рдкреНрд▓рд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рдирдП рд░рдЬрд┐рд╕реНрдЯрд░ VM3 рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдм рдкрд┐рдЫрд▓реЗ рд╕реНрдЯреИрдХ VM2 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреАрд╕рд░рд╛ рддреЗрдЬ рд╣реИред

рд░рдЬрд┐рд╕реНрдЯрд░ рд╡реАрдПрдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддреЗ рд╣реИрдВ


рдСрдмреНрдЬреЗрдХреНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рди рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рднреА рдЕрд╕реНрдерд╛рдпреА рдЪрд░ (рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╣реИред VM рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорддреБрд▓реНрдп рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡рд╣реА рд╡реАрдПрдо рдХрдорд╛рдВрдб рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рд╕рд╛рде рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдХреЗ рддреБрд░рдВрдд рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдореЗрдВ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб:

  k = i - j*k / (x + y - z*i / j) + i 

ObjectScript рд╕рдВрдХрд▓рди:

  # (59) = var j (5) [operator *] var k (6) # (60) = var x (7) [operator +] var y (8) # (61) = var z (9) [operator *] var i (4) # (61) = # (61) [operator /] var j (5) # (60) = # (60) [operator -] # (61) # (59) = # (59) [operator /] # (60) # (58) = var i (4) [operator -] # (59) var k (10) = # (58) [operator +] var i (4) 

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

рд░рдЬрд┐рд╕реНрдЯрд░ VM рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓


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

  func(i, k - x*y * (z + i), j*k) 

ObjectScript рд╕рдВрдХрд▓рди:

  begin call move: # (59) = var func (11) move: # (60) = const null (-1) move: # (61) = var i (4) # (63) = var x (7) [operator *] var y (8) # (64) = var z (9) [operator +] var i (4) # (63) = # (63) [operator *] # (64) # (62) = var k (10) [operator -] # (63) # (63) = var j (5) [operator *] var k (10) end call: start 59, params 5 

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкрд╛рдБрдЪ рдорд╛рдиреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕реВрдЪрдХрд╛рдВрдХ 59 рдкрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдкрд╣рд▓реЗ рджреЛ рдореВрд▓реНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН 59 - рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдпрдВ, 60 - рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╢реВрдиреНрдп):

  move: # (59) = var func (11) move: # (60) = const null (-1) 

рдЕрдЧрд▓рд╛, рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡рдпрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╡реЗ 61 рд╕реЗ 63 рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд┐рд░реНрдл i рдЪрд░ рд╣реИ, рдпрд╣ 61 рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  move: # (61) = var i (4) 

рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЧрдгрд┐рддреАрдп рд╕рдВрдЪрд╛рд▓рди k - x*y * (z + i) , рдЗрд╕реЗ рд░рдЬрд┐рд╕реНрдЯрд░ 62 рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  # (63) = var x (7) [operator *] var y (8) # (64) = var z (9) [operator +] var i (4) # (63) = # (63) [operator *] # (64) # (62) = var k (10) [operator -] # (63) 

рддреАрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ ( j*k ) рд░рдЬрд┐рд╕реНрдЯрд░ 63 рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ:

  # (63) = var j (5) [operator *] var k (10) 

рдЕрдм рдЕрдиреБрдХреНрд░рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░ рд╣реИ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдФрд░ рдХрд╣рд╛рдБ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


рд░рдЬрд┐рд╕реНрдЯрд░ VM рдХрд╛ рдЙрдкрдпреЛрдЧ Lua 5.0 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, quecec рдореЗрдВ (рднреВрдХрдВрдк 1 рдФрд░ рдХрдИ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдереА), Java (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Dalvik VM) рдХреЗ рд▓рд┐рдП рд░рдЬрд┐рд╕реНрдЯрд░ VMs рд╣реИрдВред рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, C ++ / C рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдорд╢реАрди рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдИ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЙрдбрд▓ рдФрд░ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░


рдирдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди (VM3) рдкрд┐рдЫрд▓реЗ рд╕реНрдЯреИрдХ VM2 рдХреЗ рдПрдХ рддрд┐рд╣рд╛рдИ рд╕реЗ рддреЗрдЬ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдо рдХрдорд╛рдВрдб рд╣реИрдВ, VM2 рдореЗрдВ рдХреЗрд╡рд▓ 36 рдмрдирд╛рдо 111ред рдмрд╣реБрдд рдХрдо рдЯреАрдореЗрдВ рд╡реАрдПрдо рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреА рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЬреЗрдЖрдИрдЯреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрдврд╝рд╛рддреА рд╣реИрдВред

рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд╛рдиреАрдп рдлрд╝рдВрдХреНрд╢рди рдЪрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХ рд╕реНрдЯреИрдХ рдЖрдХрд╛рд░ рдХреЛ рдПрдХ рдмрд╛рд░ рдЖрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, VM3 рдЦреБрдж рдХреЛ рд╕реНрдЯреИрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХрд╕реНрдЯрдо рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП ObjectScript API рдореЗрдВ рд╕реНрдЯреИрдХ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ API рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рд╛ рдФрд░ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИред

рд╡рд┐рд╕реНрддрд╛рд░


рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЕрдиреНрдп рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреИрдХреНрдЯрд░рд┐рдпрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 print "factorial(10) = " .. {|a| a <= 1 ? 1 : a * _F(a-1)}(10) 

рдЙрддреНрдкрд╛рджрди рд╣реЛрдЧрд╛:

 factorial(10) = 3628800 

рдФрд░ рдХрдИ рдЕрдиреНрдп рдПрдЯ рдЕрд▓ред

ObjectScript рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреНрдп рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд▓реЗрдЦ:

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


All Articles