рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореВрд▓ рд░реВрдк рд╕реЗ рдорд╢реАрди-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдкрд░ рдПрдХ рдЫреЛрдЯреЗ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╕рдореБрджрд╛рдп рдореЗрдВ рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ред рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрдВрдЯреЗрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЕрд╕реЗрдВрдмрд▓рд░ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдЯреА рдПрдВрдб рдЯреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛ рдореЗрдВред
рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "рд╕рд╛рдорд╛рдиреНрдп" рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдордЬреЗрджрд╛рд░ рдФрд░ рдереЛрдбрд╝рд╛ рдЧреИрд░-рдорд╛рдирдХ рд╣реИред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
рддреЛ, рдЖрдЗрдП рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд░рд┐рд╡рд░реНрд╕ рдкреЛрд▓рд┐рд╢ рдиреЛрдЯреЗрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВред
рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рд┐рддреНрд░ рдХреЛ рдмрджрд▓реЗ рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ:
- рдпрджрд┐ рдпрд╣ рд╡рд░реНрдг рдПрдХ рд╕рдВрдЦреНрдпрд╛ (рдпрд╛ рдЪрд░) рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдбрд╛рд▓реЗрдВред
- рдпрджрд┐ рдкреНрд░рддреАрдХ рдСрдкрд░реЗрд╢рди (+, -, *, /) рдХрд╛ рд╕рдВрдХреЗрдд рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдЧреБрдгрди рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ (рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ 3 рд╣реИ)ред рдЬреЛрдбрд╝ рдФрд░ рдШрдЯрд╛рд╡ рд╕рдВрдЪрд╛рд▓рди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрдо рд╣реЛрддреА рд╣реИ (2 рдХреЗ рдмрд░рд╛рдмрд░)ред рд╕рдмрд╕реЗ рдЫреЛрдЯреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ (1 рдХреЗ рдмрд░рд╛рдмрд░) рдЙрджреНрдШрд╛рдЯрди рдмреНрд░реИрдХреЗрдЯ рд╣реИред
рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд╡рд░реНрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рд╕реНрдЯреИрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП:
- a) рдпрджрд┐ рд╕реНрдЯреИрдХ рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реИ, рдпрд╛ рдЙрд╕рдореЗрдВ рдореМрдЬреВрдж рдкреНрд░рддреАрдХреЛрдВ (рдФрд░ рдХреЗрд╡рд▓ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рдВрдХреЗрдд рдФрд░ рдЙрджреНрдШрд╛рдЯрди рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЪрд┐рд╣реНрди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╡рд░реНрддрдорд╛рди рдкреНрд░рддреАрдХ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦ рджреЗрддреЗ рд╣реИрдВред
- рдмреА) рдпрджрд┐ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рдЪрд░рд┐рддреНрд░ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдЙрд╕рдХреЗ рдмрд░рд╛рдмрд░ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╕реНрдЯреИрдХ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╢рд░реНрдд рдкреВрд░реА рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА; рддрдм рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рдПрдВ)
- рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмреНрд░реИрдХреЗрдЯ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦреЗрдВред
- рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг рдПрдХ рд╕рдорд╛рдкрди рдмреНрд░реИрдХреЗрдЯ рд╣реИ, рддреЛ рд╣рдо рд╕реНрдЯреИрдХ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд▓рд╛рдЗрди рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рд╕реНрдЯреИрдХ рдкрд░ рдЙрджреНрдШрд╛рдЯрди рдмреНрд░реИрдХреЗрдЯ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛рдиреА, 1 рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд░реНрдг), рдЬрд┐рд╕реЗ рдмрд╕ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдорд╛рдкрди рдмреНрд░реИрдХреЗрдЯ рднреА рдирд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред
- рдпрджрд┐ рдкреВрд░реА рдЗрдирдкреБрдЯ рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕ рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ рд╕реНрдЯреИрдХ рдкрд░ рдЕрднреА рднреА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рдВрдХреЗрдд рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯреИрдХ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд▓рд╛рдЗрди рддрдХ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред
рдПрдХ рд╣рдм рдкрд░ рдкрд╣рд▓реЗ
рд╕реЗ рд╣реА
рдПрдХ рд╡рд┐рд╖рдп рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкрдж рдХреЛ рдЗрд╕ рдкрдж рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред
рдХрд╛рд░реНрдпрдХреНрд░рдо
рддреЛ, рдЪрд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдСрдкрд░реЗрд╢рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХреЗ рд╕рдорд╛рди рд╣реИрдВ - рдЧреБрдгрди рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ 3 рдХреЗ рдмрд░рд╛рдмрд░ рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдШрдЯрд╛рд╡ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ 2 рдХреЗ рдмрд░рд╛рдмрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рд╕рдорд╛рдкрди рдмреНрд░реИрдХреЗрдЯ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╢реВрдиреНрдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИрдВред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдкреЗрд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдорд╛рдкрди рдХреЛрд╖реНрдардХ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдердорд┐рдХрддрд╛ 5. рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдЪрд░рд┐рддреНрд░ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
.text
.globl getPriotiry
# %eax
.type getPriority, @function
getPriority:
pushl %ebp
movl %esp, %ebp
movl 8(%esp), %eax
cmpl $42, %eax # *
je priority3
cmpl $47, %eax # /
je priority3
cmpl $43, %eax # +
je priority2
cmpl $45, %eax # -
je priority2
cmpl $40, %eax # (
je priority1
cmpl $41, %eax # )
je priority5
# -- 0
movl $0, %eax
jmp exit
priority3: # * and /
movl $3, %eax
jmp exit
priority2: # + and -
movl $2, %eax
jmp exit
priority1: # (
movl $1, %eax
jmp exit
priority5: # )
movl $5, %eax
jmp exit
exit:
leave
ret
.size getPriority, .-getPriority
рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рд╕реНрдЯреИрдХ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдореИрдВрдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕рдордЭ рдХреЛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕реНрдЯреИрдХ рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рддрддреНрд╡ рд╕реНрдЯреИрдХ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рддреЛ, рдиреАрдЪреЗ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд┐рдП рдЧрдП рд╣реИрдВ: рд╢реВрдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдХреЛ рд░рдЦреЗрдВ, рд▓реЗрдВ, рд╕реНрдЯреИрдХ рдХрд╛ рдЖрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреИрдХ рдкрд░ рдПрдХ рдкрддрд╛ рд▓реЗрддрд╛ рд╣реИред
#
.text
.globl stack_push
.type stack_push, @function
stack_push:
pushl %ebp
movl %esp, %ebp
# -- , --
movl 8(%ebp), %eax
cmp $50, %eax # . -- , , --
jg address
movl %eax, %edx
jmp number
address:
movzbl (%eax), %ebx
number:
movzbl 12(%ebp), %edx
movl %edx, (%eax, %ebx, 1)
#
movl 8(%ebp), %eax
addl $1, (%eax)
leave
ret
.size stack_push, .-stack_push
#-------------------------------------------------------------------
#
.text
.globl stack_pop
.type stack_pop, @function
stack_pop:
pushl %ebp
movl %esp, %ebp
#
movl 8(%ebp), %eax
subl $1, (%eax)
movzbl (%eax), %ebx
#
movzbl (%eax, %ebx, 1), %eax
# movzbl %edx, %eax
leave
ret
.size stack_pop, .-stack_pop
#-------------------------------------------------------------------
# 0 . 1
.text
.globl stack_isEmpty
.type stack_isEmpty, @function
stack_isEmpty:
pushl %ebp
mov %esp, %ebp
movl 8(%esp), %eax
movzbl (%eax), %eax
cmpl $1, %eax
movl $0, %eax
jg exit
movl $1, %eax
exit:
leave
ret
.size stack_isEmpty, .-stack_pop
#-------------------------------------------------------------------
#
.text
.globl stack_size
.type stack_size, @function
stack_size:
pushl %ebp
movl %esp, %ebp
movl 8(%esp), %eax
movzbl (%eax), %eax
subl $1, %eax
leave
ret
.size stack_size, .-stack_size
#-------------------------------------------------------------------
#
.text
.globl stack_top
.type stack_top, @function
stack_top:
pushl %ebp
movl %esp, %ebp
movl 8(%esp), %eax
movzbl (%eax), %ebx
subl $1, %ebx
movzbl (%eax, %ebx, 1), %eax
leave
ret
.size stack_top, .-stack_size
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдореБрдЦреНрдп рдЪрдХреНрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЕрдЧрд▓рд╛ рддрддреНрд╡ рд▓реЗрдВ
- рдЪрд░рд┐рддреНрд░ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВ
- рдСрдкрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░реЗрдВ: рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓реЗрдВ, рдкрд░рд┐рдгрд╛рдореА рд▓рд╛рдЗрди рдореЗрдВ рдзрдХреЗрд▓реЗрдВ, рдпрд╛ рд╕реНрдЯреИрдХ рд╕реЗ рд╕рднреА рдСрдкрд░реЗрд╢рди рдХреЛ рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рдзрдХреЗрд▓ рджреЗрдВред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдХрд╛рдлреА рд╕реАрдзрд╛ рдФрд░ рдирд┐рд░реНрдмрд╛рдз рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд▓рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
рдкреВрд░рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдФрд░ рд╕рд╛рде рд╣реА
рдореЗрдХрдлрд╛рдЗрд▓ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
dl.dropbox.com/u/1379084/4.pip