рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд╛рд░реВрдк рдХреЗ рднреАрддрд░ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдПрд╕-рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╡реИрдз рдкрд╛рд░реНрд╕-рдЯрд╛рдЗрдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдмрд╕реЗрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдПрд╕рдУрдПрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╣реИред
рдпрд╣ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛:
(func $swap (param i32 i32) (result i32 i32) (get_local 1) (get_local 0))
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд╕рд╛рд░:
(func, $swap, (param, i32, i32), (result, i32, i32), (get_local, 1) (get_local, 0))
рдЗрд╕рдХрд╛ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдорд╛рдиреНрдп рд╡рд╛рдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд░рд╣рд╛ рд╣реИ
function add (a, b) {
(i32.const, a)
(i32.const, b)
(i32.const, add)
}
рдХрд┐ рдЖрдк рд╡реИрдз рд╡рд╛рдЯ рд╕реНрд░реЛрдд рдХреЛрдб рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП add.toString()
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд░рддреЗ рд╕рдордп рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рднреАрддрд░ рд╡рд╛рдЯ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдЗрдВрдЯрд░рд▓реАрд╡ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрд╕-рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдореБрдЭреЗ рд▓рд┐рд╕реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдореИрдВ '
рдХрд╛ рдЕрд░реНрде рдЙрджреНрдзрд░рдг рдФрд░ ,
рдХрд╛ рдЕрд░реНрде рдЕрдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВред
рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
рдореБрдЭреЗ рд╕рдЪ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо JS-рд╕рдВрдЧрдд WAST рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрддрд░ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдкрд╛рд░реНрд╕рд░ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рдпрд╣ рдмрддрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк WAST рдпрд╛ JS рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЬреЗрдПрд╕ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛:
function add (a, b) {
wast`
(i32.const, a)
(i32.const, b)
(i32.const, add)
`
}
рдЖрдк рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рд╡рд╛рдЯ рдбреАрдПрд╕рдПрд▓ рджрд╕реНрддрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рд╕рдЪ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо JS-рд╕рдВрдЧрдд WAST рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрддрд░ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдкрд╛рд░реНрд╕рд░ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рдпрд╣ рдмрддрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк WAST рдпрд╛ JS рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЬреЗрдПрд╕ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛: