From 530294922ab2a6f7bde5f1dd434358c2f4e40be2 Mon Sep 17 00:00:00 2001 From: losfair Date: Mon, 25 Feb 2019 23:55:27 +0800 Subject: [PATCH] Allow more registers to be used. --- lib/dynasm-backend/src/codegen_x64.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/dynasm-backend/src/codegen_x64.rs b/lib/dynasm-backend/src/codegen_x64.rs index efbdb144f..cc65bf7ec 100644 --- a/lib/dynasm-backend/src/codegen_x64.rs +++ b/lib/dynasm-backend/src/codegen_x64.rs @@ -24,6 +24,11 @@ lazy_static! { let offset = assembler.offset(); dynasm!( assembler + ; push rbx + ; push r12 + ; push r13 + ; push r14 + ; push r15 ; lea rax, [>after_call] ; push rax ; push rbp @@ -43,6 +48,11 @@ lazy_static! { ; _loop_end: ; jmp rdx ; after_call: + ; pop r15 + ; pop r14 + ; pop r13 + ; pop r12 + ; pop rbx ; ret ); let buf = assembler.finalize().unwrap(); @@ -85,6 +95,11 @@ impl Register { 5 => R9, 6 => R10, 7 => R11, + 8 => RBX, + 9 => R12, + 10 => R13, + 11 => R14, + 12 => R15, _ => unreachable!(), } }