来自微软的大佬写的aarch64指令集系列介绍,可以对该指令集有一个直观的认知
- part 1: Introduction :Make it a double
- part 2: Extended register operations :The weird ways of transforming the value in a register.
- part 3: Addressing modes : The ways of accessing memory.
- part 4: Addition and subtraction :Starting with the basic arithmetic.
- part 5: Multiplication and division :Arithmetic gets harder.
- part 6: Bitwise operations :And their very strange immediates.
- part 7: Bitfield manipulation :Peeking inside the words.
- part 8: Bit shifting and rotation :Sliding around.
- part 9: Sign and zero extension :Nothing new here, but old things being used in clever ways.
- part 10: Loading constants :Getting them into a register.
- part 11: Loading addresses :Finding a needle in the haystack of the 64-bit address space.
- part 12: Memory access and alignment :The load and store part of the load/store architecture.
- part 13: Atomic access :Don't let someone else get a word in edgewise.
- part 14: Barriers :Keeping things in the right order.
- part 15: Control transfer :We're going places.
- part 16: Conditional execution :Making decisions.
- part 17: Manipulating flags :Trying to twiddle the knobs directly.
- part 18: Return address protection :Making it even harder to smash the return address.
- part 19: Miscellaneous instructions :Sweeping up the crumbs.
- part 20: The classic calling convention :How parameters are passed.
- part 21: Classic function prologues and epilogues :Implementing the ABI.
- part 22: Other kinds of classic prologues and epilogues :Taking shortcuts, or maybe adding steps.
- part 23: Common patterns :Learning to recognize various code generation patterns.
- part 24: Code walkthrough :Putting theory into practice.
- part 25: The ARM64EC ABI :Aligning with the x86-64 calling convention.