рдПрдЖрд░рдПрдо 64 рдПрдЖрд░рдПрдо (рдЬрд┐рд╕реЗ рдХрднреА-рдХрднреА рдЖрд░реНрдо 64 рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рд╕реЗ 64-рдмрд┐рдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ "рдирд┐рдпрдорд┐рдд" (32-рдмрд┐рдЯ) рдПрдЖрд░рдПрдо рд╕реЗ рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЗрд╕реЗ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдпрд╣ рдЖрд▓реЗрдЦ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрди рд╕рд┐рд╕реНрдЯрдо рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдПрдХ рдкреВрд░реЗ 32-рдмрд┐рдЯ рдПрдЖрд░рдПрдо рд╕реЗ рднрд┐рдиреНрди рд░реВрдк рдореЗрдВ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд┐рддрдирд╛ рд╣реЛрдЧрд╛; рдпрд╣ рд╕рдм рдореЗрд░реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рд╕реЗ Embox рдХреЛ рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдЖрдкрдХреЛ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдЫреЛрдбрд╝ рджрд┐рдП рдЬреЛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдорд╛рдирддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЕрдВрддрд░ рд╣реИрдВ, рдФрд░ Aarch64 рдкрд░рд┐рдЪрд┐рдд рдПрдЖрд░рдПрдо рдХреЗ 64-рдмрд┐рдЯ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдирдИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЕрдзрд┐рдХ рд╣реИред Aarch64 рдХрд╛ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдХрд╛рдлреА рд╣рдж рддрдХ Aarch32 рд╣реИ (рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп 32-рдмрд┐рдЯ ARM рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ), рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ :)
рд▓реЗрдЦ рдореЗрдВ рдЖрдЧреЗ, рдЕрдЧрд░ рдореИрдВ "рдкреБрд░рд╛рдиреЗ" рдпрд╛ "рдкреБрд░рд╛рдиреЗ" рдПрдЖрд░рдПрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдореЗрд░рд╛ рдорддрд▓рдм 32-рдмрд┐рдЯ рдПрдЖрд░рдПрдо (рдПрдЖрд░рдПрдо рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде) рд╣реИред
рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ 32-рдмрд┐рдЯ рдПрдЖрд░рдПрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдЧреБрдЬрд░реВрдВрдЧрд╛, рдФрд░ рдлрд┐рд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдВрдЧрд╛ред
- рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рд░рдЬрд┐рд╕реНрдЯрд░ 2 рдЧреБрдирд╛ рд╡реНрдпрд╛рдкрдХ рд╣реЛ рдЧрдП рд╣реИрдВ (рдЕрдм рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 64 рдмрд┐рдЯреНрд╕ рд╣реИрдВ), рдФрд░ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рджреЛрдЧреБрдиреА рд╣реЛ рдЧрдИ рд╣реИ (рдпрд╛рдиреА рдЕрдм 16 рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ 32 рд╣реИрдВ)ред
msr vbar_el1, x0
рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реБрдП, рдЕрдм рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдирд╛рдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП msr vbar_el1, x0
(рдкрд┐рдЫрд▓реЗ mcr p15, 0, %0, c1, c1, 2
рдЦрд┐рд▓рд╛рдл mcr p15, 0, %0, c1, c1, 2
)- рдирдпрд╛ MMU рдореЙрдбрд▓ (рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛)ред
- рдкрд╣рд▓реЗ, рджреЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╕реНрддрд░ рдереЗ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдпреВрдПрд╕рдЖрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЛрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдФрд░ рд╕рд┐рд╕реНрдЯрдо (рдПрд╕рд╡рд╛рдИрдПрд╕, рдЖрдИрдЖрд░рдХреНрдпреВ, рдПрдлрдЖрдИрдХреНрдпреВ, рдПрдмреАрдЯреА ...) рдХреЗ рдЕрдиреБрд░реВрдк, рдЕрдм рд╕рдм рдХреБрдЫ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ - рдЕрдм 4 рдореЛрдб рд╣реИрдВред
- AdvSIMD рдиреЗ NEON рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛, рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдСрдкрд░реЗрд╢рди рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдП рдЧрдПред
рдЕрдм рдЕрдВрдХ рдкрд░ рдЕрдзрд┐рдХред
рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рдирд┐рд░реНрджреЗрд╢ рд╕реЗрдЯ
рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рд░рдЬрд┐рд╕реНрдЯрд░ r0-r30 рд╣реИрдВ, рдЬрдмрдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ 64-рдмрд┐рдЯ (x0-x30) рдпрд╛ 32-рдмрд┐рдЯ (w0-w30, рдирд┐рдЪрд▓реЗ 32 рдмрд┐рдЯ рддрдХ рдкрд╣реБрдВрдЪ) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Aarch64 рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд┐рд░реНрджреЗрд╢ A64 рдХрд╣рд▓рд╛рддрд╛ рд╣реИред рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрдврд╝реЗрдВред рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛ рдореЗрдВ рдореВрд▓ рдЕрдВрдХрдЧрдгрд┐рдд рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЖрджреЗрд╢ рд╕рдорд╛рди рд░рд╣реЗ:
mov w0, w1 /* w1 w0 */ add x0, x1, 13 /* x0 x1 13 */ b label /* "" "label" bl label /* "" "label", x30 */ ldr x3, [x1, 0] /* x3 , x1 */ str x3, [x0, 0] /* x3 , x0 */
рдЕрдм рдорддрднреЗрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛:
- рдПрдХ рд╡рд┐рд╢реЗрд╖ "рд╢реВрдиреНрдп"
rzr/xzr/wzr
, рдЬреЛ рдкрдврд╝рддреЗ рд╕рдордп рд╢реВрдиреНрдп рд╣реИ (рдЖрдк рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЧрдгрдирд╛ рдкрд░рд┐рдгрд╛рдо рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛)ред
subs xzr, x1, x2 /* x1 x2 NZCV, */
- рдЖрдк рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдХрдИ рд░рдЬрд┐рд╕реНрдЯрд░ (
stmfd sp!, {r0-r3}
) рдХреЛ рдвреЗрд░ рдореЗрдВ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ, рдЖрдкрдХреЛ рдЬреЛрдбрд╝реЗ рдореЗрдВ рдпрд╣ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
stp x0, x1, [sp, 16]! stp x2, x3, [sp, 16]!
рдкреАрд╕реА рд░рдЬрд┐рд╕реНрдЯрд░ (рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдЙрдВрдЯрд░, рд╡рд░реНрддрдорд╛рди рдирд┐рд╖реНрдкрд╛рджрди рдЕрдиреБрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ) рдЕрдм рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд░рдЬрд┐рд╕реНрдЯрд░ рдирд╣реАрдВ рд╣реИ (рдпрд╣ R15 рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛), рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрдорд╛рдВрдб ( mov
, ldr
) рдХреЗ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ ret
, bl
рдФрд░ рдЗрддрдиреЗ рдкрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕реНрдерд┐рддрд┐ рдЕрдм рд╕реАрдкреАрдПрд╕рдЖрд░ рдирд╣реАрдВ рджрд┐рдЦрд╛рддреА рд╣реИ (рдпрд╣ рд░рдЬрд┐рд╕реНрдЯрд░ рдмрд╕ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рдбреАрдПрдЖрдИрдПрдл рд░рдЬрд┐рд╕реНрдЯрд░ (рдЖрдИрдЖрд░рдХреНрдпреВ, рдПрдлрдЖрдИрдХреНрдпреВ рдорд╛рд╕реНрдХ, рдЖрджрд┐, рдПрдЖрдИрдПрдл - рд╕рдорд╛рди рдмрд┐рдЯреНрд╕ рдП, рдЖрдИ, рдПрдл рд╕реАрдкреАрдПрд╕рдЖрд░ рд╕реЗ), рдПрдирдЬреЗрдбрд╕реАрд╡реА (рдмрд┐рдЯреНрд╕ рдирдХрд╛рд░рд╛рддреНрдордХ, рд╢реВрдиреНрдп, рдХреИрд░реА) , OVerflow - рдЕрдЪрд╛рдирдХ, CPSR рд╕реЗ рдПрдХ рд╣реА NZCV) рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХрдВрдЯреНрд░реЛрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ (SCTLR, рдХреИрд╢рд┐рдВрдЧ, MMU, рдПрдВрдбрд┐рдпрдирдиреЗрд╕ рдФрд░ рдЗрддрдиреЗ рдкрд░ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдХрдорд╛рдВрдб рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреВрдЯрд▓реЛрдбрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ рдЬреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╕реНрд╡рддрдВрддреНрд░ рдХреЛрдб рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :)
рдкреНрд░рджрд░реНрд╢рди рдореЛрдб рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛
рдкреНрд░рджрд░реНрд╢рди рдореЛрдб рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ ARMv8-A рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдореИрдВ рдпрд╣рд╛рдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╕рд╛рд░ рдмрддрд╛рдКрдВрдЧрд╛ред
Aarch64 рдореЗрдВ 4 рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╕реНрддрд░ рд╣реИрдВ (рдирд┐рд╖реНрдкрд╛рджрди рд╕реНрддрд░, рдЗрд╕рдХреЗ рдмрд╛рдж рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ EL)ред
- EL3 - рд╕рд┐рдХреНрдпреЛрд░ рдореЙрдирд┐рдЯрд░ (рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдлрд░реНрдорд╡реЗрдпрд░ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ)
- EL2 - рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░
- рдИрдПрд▓ 1 - рдУрдПрд╕
- EL0 - рдЕрдиреБрдкреНрд░рдпреЛрдЧ
64-рдмрд┐рдЯ OS рдкрд░, рдЖрдк 32-рдмрд┐рдЯ рдФрд░ 64-рдмрд┐рдЯ рджреЛрдиреЛрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ; 32-рдмрд┐рдЯ OS рдкрд░, рдХреЗрд╡рд▓ 32-рдмрд┐рдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдИрдПрд▓ рдХреЗ рдмреАрдЪ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдкрд╡рд╛рджреЛрдВ (рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓, рдЗрдВрдЯрд░рдкреНрдЯ, рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдПрд░рд░) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╛ рдЕрдкрд╡рд╛рдж ( eret
) eret
рд╕реЗ рд░рд┐рдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ EL рдХрд╛ рдЕрдкрдирд╛ рд░рдЬрд┐рд╕реНрдЯрд░ SPSR, ELR, SP рд╣реЛрддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд рдпрд╣ "рдмреИрдВрдХ рд░рдЬрд┐рд╕реНрдЯрд░реНрдб" рд╣реИ)ред
рдХрдИ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рднреА рдИрдПрд▓ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдордПрдордпреВ рд╕рдВрджрд░реНрдн рд░рдЬрд┐рд╕реНрдЯрд░ ttbr0
- ttbr0_el2
, ttbr0_el1
, рдФрд░ рдЖрдкрдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдИрдПрд▓ рдкрд░ рдЕрдкрдиреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд╣реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ - DAIF, NZCV, SCTLR, SPSR, ELR ...
MMU
Armv8-A MMU ARMv8.2 LPA рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА ARMv8, Armv8-A рдХреЗ рд▓рд┐рдП ARM рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд░реЗрдлрд░реЗрдВрд╕ рдореИрдиреБрдЕрд▓ рдХреЗ D5 рдЪреИрдкреНрдЯрд░ рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ MMU 4KiB рдкреГрд╖реНрдареЛрдВ (рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдЯреЗрдмрд▓ рдХреЗ 4 рд╕реНрддрд░реЛрдВ), 16KiB (4 рд╕реНрддрд░реЛрдВ) рдФрд░ 64KiB (3 рд╕реНрддрд░реЛрдВ) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдордзреНрдпрд╡рд░реНрддреА рд╕реНрддрд░ рдкрд░, рдЖрдк рдПрдХ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдХрд╛рд░ рдХреА рд╕реНрдореГрддрд┐ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЯреБрдХрдбрд╝рд╛ рдЬрд┐рд╕реЗ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ "рдХрд╡рд░" рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛-рдЪреМрдбрд╝рд╛ рд▓реЗрдЦ рд╣реИ , рдЬрд╣рд╛рдВ рдЖрдк рдЯреЗрдмрд▓, рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕реНрддрд░ рдФрд░ рдЙрд╕ рд╕рдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЫреЛрдЯреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдбреЛрдореЗрди рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЧрдВрджреЗ рдмрд┐рдЯ рдЬреИрд╕реЗ рдЭрдВрдбреЗ рдЬреЛрдбрд╝реЗред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдордзреНрдпрд╡рд░реНрддреА рдЕрдиреБрд╡рд╛рдж рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп "рдмреНрд▓реЙрдХ" рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╡реИрдЪрд╛рд░рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рджреЗрдЦрд╛ рдЧрдпрд╛, MMU MMU рдХреЗ рд░реВрдк рдореЗрдВред
рдЙрдиреНрдирдд рд╕рд┐рдордб
рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдФрд░ рд╡реЗрдХреНрдЯрд░ рдСрдкрд░реЗрд╢рди (SIMD) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкреБрд░рд╛рдиреЗ NEON рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг AdvSIMD рдЕрдВрддрд░ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкрд╣рд▓реЗ D0 рдореЗрдВ S0 рдФрд░ S1 рд╢рд╛рдорд┐рд▓ рдереЗ, рдФрд░ Q0 - D0 рдФрд░ D1 рдХреЗ рдереЗ, рддреЛ рдЕрдм рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ: Q0 D0 рдФрд░ S0 рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, Q1 - D1 рдФрд░ S0 рдХреЗ рд▓рд┐рдП, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЙрд╕реА рд╕рдордп, VFP / SIMD рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ, рд╕рдордЭреМрддреЗ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЕрдм рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ "рд╕реЙрдлреНрдЯ рдлреНрд▓реЛрдЯ рдПрдмреАрдЖрдИ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рдЬреАрд╕реАрд╕реА рдореЗрдВ - рдлреНрд▓реИрдЧ -mfloat-abi=softfp
), рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред
128 рдмрд┐рдЯреНрд╕ рдХреЗ 16 рд░рдЬрд┐рд╕реНрдЯрд░ рдереЗ:

128 рдмрд┐рдЯреНрд╕ рдХреЗ 32 рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реИрдВ:

рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ NEON рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ; Aarch64 рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдЖрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред
рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдореВрд▓ рд╕рдВрдЪрд╛рд▓рди:
fadd s0, s1, s2 /* s0 = s1 + s2 */ fmul d0, d1, d2 /* d0 = d1 * d2 */
рдореВрд▓ SIMD рд╕рдВрдЪрд╛рд▓рди:
/* , : NEON, */ /* q0 = q1 + q2, -- 4 */ vadd.s32 q0, q1, q2 /* : AdvSIMD, */ /* v0 = v1 + v2, -- 4 */ add v0.4s, v1.4s, v2.4s /* v1 ( 2 64- ) d1 */ addv d1, v1.ds /* 4 0 */ movi v1.4s, 0x0
QEMU
AEM64 рдХреЗ рд▓рд┐рдП QEMU рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ virt
, рддрд╛рдХрд┐ рдпрд╣ 64-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рд╣реЛ, рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ -cpu cortex-a53
рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ:
qemu-system-aarch64 -M virt -cpu cortex-a53 -kernel ./embox -m 1024 -nographic # ./embox -- ELF-
рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕ рдордВрдЪ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Embox рдореЗрдВ рдереЗ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП PL011, ARM Generic Interrupt Controller, рдЖрджрд┐ред рдмреЗрд╢рдХ, рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдзрд╛рд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрддреЗ рдФрд░ рдЕрдиреНрдп рд░реБрдХрд╛рд╡рдЯ рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛрдб рдирдИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕рд┐рд╕реНрдЯрдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдирд┐рдпрдВрддреНрд░рдг EL1 рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред
i.MX8
рд▓реЛрд╣реЗ рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдХрд╛рд░рдг, Aarch64 - i.MX8MQ Nitrogen8M рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

QEMU рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпреВ-рдмреВрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдИрдПрд▓ 2 рдореЗрдВ рдЫрд╡рд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрд╕рдореЗрдВ рдПрдордПрдордпреВ (рд╕рднреА рдореЗрдореЛрд░реА 1 рд╕реЗ 1 рдореИрдк рдХреА рдЬрд╛рддреА рд╣реИ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред
Embox рдкрд╣рд▓реЗ рд╕реЗ рд╣реА i.MX6 рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░, i.MX8 рдореЗрдВ, рдкрд░рд┐рдзрд┐ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдорд╛рди рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, UART рдФрд░ рдИрдерд░рдиреЗрдЯ, рдЬреЛ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдореБрдЭреЗ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдерд╛ рдЬрд╣рд╛рдВ 32-рдмрд┐рдЯ рдкрддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрдЧ рдмрдВрдзрди рдерд╛)ред рджреВрд╕рд░реА рдУрд░, рдмрд╛рдзрд╛ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд╣рд╛рдВ рдЕрд▓рдЧ рд╣реИ - рдПрдЖрд░рдПрдо рдЬреАрдЖрдИрд╕реА 3, рдЬреЛ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдлрд┐рд▓рд╣рд╛рд▓, Embox рдореЗрдВ Aarch64 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ - рдЗрдВрдЯрд░рдкреНрдЯ, MMU, UART рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯред рдмрд╣реБрдд рдХреБрдЫ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рдХрджрдо рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдПрдЖрд░рдПрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдкреНрд░рд▓реЗрдЦрди рдФрд░ рд▓реЗрдЦ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рд░ рдЪреАрдЬ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдЖрд░рдПрдо рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рд╣реИ, рддреЛ Aarch64 рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдПрдХ рд╕рдВрднрд╡ рдХрд╛рд░реНрдп рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЖрдк рдХреБрдЫ рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдкрд░ рдареЛрдХрд░ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ :)
рдЖрдк рд╣рдорд╛рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ QEMU рдореЗрдВ рдЗрд╕реЗ рдкреНрд░реЛрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдпрд╛ рдиреНрдпреВрдЬрд╝рд▓реЗрдЯрд░ рдореЗрдВ , рдпрд╛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рдЪреИрдЯ рдореЗрдВ (рдПрдХ рдЪреИрдирд▓ рднреА рд╣реИ)ред
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ
рдкреБрдирд╢реНрдЪ
24-25 рдЕрдЧрд╕реНрдд, рд╣рдо TechTrain рдкрд░ рдмреЛрд▓ рд░рд╣реЗ рд╣реИрдВ, рджреЛ рдпрд╛ рддреАрди рдмрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕реБрдиреЗрдВрдЧреЗ , рд╕реНрдЯреИрдВрдб рдкрд░ рдЖрдПрдВрдЧреЗ - рд╣рдо рдЖрдкрдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ :)