рдПрдЯреА рдПрдВрдб рдЯреА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдкреЛрд▓рд┐рд╢ рд░рд┐рд╡рд░реНрд╕ рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛

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



рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "рд╕рд╛рдорд╛рдиреНрдп" рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдордЬреЗрджрд╛рд░ рдФрд░ рдереЛрдбрд╝рд╛ рдЧреИрд░-рдорд╛рдирдХ рд╣реИред



рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо



рддреЛ, рдЖрдЗрдП рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд░рд┐рд╡рд░реНрд╕ рдкреЛрд▓рд┐рд╢ рдиреЛрдЯреЗрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВред

рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рд┐рддреНрд░ рдХреЛ рдмрджрд▓реЗ рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ:

  1. рдпрджрд┐ рдпрд╣ рд╡рд░реНрдг рдПрдХ рд╕рдВрдЦреНрдпрд╛ (рдпрд╛ рдЪрд░) рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдбрд╛рд▓реЗрдВред
  2. рдпрджрд┐ рдкреНрд░рддреАрдХ рдСрдкрд░реЗрд╢рди (+, -, *, /) рдХрд╛ рд╕рдВрдХреЗрдд рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдЧреБрдгрди рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ (рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ 3 рд╣реИ)ред рдЬреЛрдбрд╝ рдФрд░ рдШрдЯрд╛рд╡ рд╕рдВрдЪрд╛рд▓рди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрдо рд╣реЛрддреА рд╣реИ (2 рдХреЗ рдмрд░рд╛рдмрд░)ред рд╕рдмрд╕реЗ рдЫреЛрдЯреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ (1 рдХреЗ рдмрд░рд╛рдмрд░) рдЙрджреНрдШрд╛рдЯрди рдмреНрд░реИрдХреЗрдЯ рд╣реИред

    рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд╡рд░реНрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рд╕реНрдЯреИрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП:

    • a) рдпрджрд┐ рд╕реНрдЯреИрдХ рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реИ, рдпрд╛ рдЙрд╕рдореЗрдВ рдореМрдЬреВрдж рдкреНрд░рддреАрдХреЛрдВ (рдФрд░ рдХреЗрд╡рд▓ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рдВрдХреЗрдд рдФрд░ рдЙрджреНрдШрд╛рдЯрди рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЪрд┐рд╣реНрди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╡рд░реНрддрдорд╛рди рдкреНрд░рддреАрдХ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦ рджреЗрддреЗ рд╣реИрдВред
    • рдмреА) рдпрджрд┐ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рдЪрд░рд┐рддреНрд░ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЪрд░рд┐рддреНрд░ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдЙрд╕рдХреЗ рдмрд░рд╛рдмрд░ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╕реНрдЯреИрдХ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╢рд░реНрдд рдкреВрд░реА рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА; рддрдм рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рдПрдВ)


  3. рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмреНрд░реИрдХреЗрдЯ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦреЗрдВред
  4. рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдг рдПрдХ рд╕рдорд╛рдкрди рдмреНрд░реИрдХреЗрдЯ рд╣реИ, рддреЛ рд╣рдо рд╕реНрдЯреИрдХ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд▓рд╛рдЗрди рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рд╕реНрдЯреИрдХ рдкрд░ рдЙрджреНрдШрд╛рдЯрди рдмреНрд░реИрдХреЗрдЯ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛рдиреА, 1 рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд░реНрдг), рдЬрд┐рд╕реЗ рдмрд╕ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдорд╛рдкрди рдмреНрд░реИрдХреЗрдЯ рднреА рдирд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред
  5. рдпрджрд┐ рдкреВрд░реА рдЗрдирдкреБрдЯ рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕ рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ рд╕реНрдЯреИрдХ рдкрд░ рдЕрднреА рднреА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рдВрдХреЗрдд рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯреИрдХ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд▓рд╛рдЗрди рддрдХ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред


рдПрдХ рд╣рдм рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╖рдп рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкрдж рдХреЛ рдЗрд╕ рдкрдж рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред



рдХрд╛рд░реНрдпрдХреНрд░рдо



рддреЛ, рдЪрд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдСрдкрд░реЗрд╢рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХреЗ рд╕рдорд╛рди рд╣реИрдВ - рдЧреБрдгрди рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ 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







рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдореБрдЦреНрдп рдЪрдХреНрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  1. рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЕрдЧрд▓рд╛ рддрддреНрд╡ рд▓реЗрдВ
  2. рдЪрд░рд┐рддреНрд░ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВ
  3. рдСрдкрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░реЗрдВ: рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓реЗрдВ, рдкрд░рд┐рдгрд╛рдореА рд▓рд╛рдЗрди рдореЗрдВ рдзрдХреЗрд▓реЗрдВ, рдпрд╛ рд╕реНрдЯреИрдХ рд╕реЗ рд╕рднреА рдСрдкрд░реЗрд╢рди рдХреЛ рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рдзрдХреЗрд▓ рджреЗрдВред


рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдХрд╛рдлреА рд╕реАрдзрд╛ рдФрд░ рдирд┐рд░реНрдмрд╛рдз рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд▓рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рдкреВрд░рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдФрд░ рд╕рд╛рде рд╣реА рдореЗрдХрдлрд╛рдЗрд▓ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: dl.dropbox.com/u/1379084/4.pip



All Articles