From edb3249ea6edbf37126da663e9ee46f548225206 Mon Sep 17 00:00:00 2001 From: pancake Date: Sat, 30 Nov 2013 18:48:32 +0100 Subject: [PATCH] Fix 'mov rax, 33' assemble for x86-64 and fallback to eax on 32bit --- libr/asm/p/asm_x86_nz.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libr/asm/p/asm_x86_nz.c b/libr/asm/p/asm_x86_nz.c index ed791a5118..aa13ecf2c9 100644 --- a/libr/asm/p/asm_x86_nz.c +++ b/libr/asm/p/asm_x86_nz.c @@ -327,7 +327,7 @@ static int assemble(RAsm *a, RAsmOp *ao, const char *str) { if (p) { *p = 0; ut32 n = getnum (a, p+1); - ut8 *ptr = &n; + ut8 *ptr = (ut8*)&n; arg1 = getreg (arg2+1); data[l++] = 0x3b; if (arg1 == 4) { // esp @@ -806,9 +806,8 @@ static int assemble(RAsm *a, RAsmOp *ao, const char *str) { data[l++] = ptr[3]; return l; } -#if 0 - if (a->bits==64) { -eprintf ("--> \n"); + // mov rax, 33 + if (a->bits==64 && *arg == 'r') { if (isnum (a, arg2)) { data[l++] = 0x48; data[l++] = 0xc7; @@ -824,7 +823,6 @@ eprintf ("--> \n"); data[l++] = arg0 | (getreg (arg2)<<3) | pfx; return l; } -#endif if (isnum (a, arg2)) { if (delta) {