diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2015-08-08 18:04:38 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2015-08-08 18:04:38 +0200 |
| commit | 5e2842a5847ceeb9903ef5b4c66cab37f846f222 (patch) | |
| tree | a378cdca45c90eb296016ce3e160b0cc315345e2 /miasm2/jitter/vm_mngr.c | |
| parent | dcc488ec39d9a96b70c728ccdbcd43e62b25ae99 (diff) | |
| download | miasm-5e2842a5847ceeb9903ef5b4c66cab37f846f222.tar.gz miasm-5e2842a5847ceeb9903ef5b4c66cab37f846f222.zip | |
Jitter/vm_mngr: fix rot_right operator
Diffstat (limited to 'miasm2/jitter/vm_mngr.c')
| -rw-r--r-- | miasm2/jitter/vm_mngr.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/miasm2/jitter/vm_mngr.c b/miasm2/jitter/vm_mngr.c index 23464bfb..bf1eb7df 100644 --- a/miasm2/jitter/vm_mngr.c +++ b/miasm2/jitter/vm_mngr.c @@ -821,11 +821,11 @@ uint64_t rot_left(uint64_t size, uint64_t a, uint64_t b) } } -unsigned int rot_right(unsigned int size, unsigned int a, unsigned int b) +uint64_t rot_right(uint64_t size, uint64_t a, uint64_t b) { - unsigned int tmp; + uint64_t tmp; - b = b&0x1F; + b = b&0x3F; b %= size; switch(size){ case 8: @@ -837,8 +837,11 @@ unsigned int rot_right(unsigned int size, unsigned int a, unsigned int b) case 32: tmp = ((a&0xFFFFFFFF) >> b) | (a << (size-b)); return tmp&0xffffffff; + case 64: + tmp = ((a&0xFFFFFFFFFFFFFFFF) >> b) | (a << (size-b)); + return tmp&0xFFFFFFFFFFFFFFFF; default: - fprintf(stderr, "inv size in rotleft %d\n", size); + fprintf(stderr, "inv size in rotright %"PRIX64"\n", size); exit(0); } } @@ -1699,3 +1702,5 @@ uint64_t get_exception_flag(vm_mngr_t* vm_mngr) { return vm_mngr->exception_flags; } + + |