Karol Harasim
d190e0d3c3
Add description for Xtensa instructions
2016-05-31 21:48:18 +02:00
pancake
c64eeaa266
Initial implementation of asm.assembler to select different assembler plugin than the disasm
2016-05-30 18:53:32 +02:00
Duncan Ogilvie
216de66e68
fixed jcc ( #5034 )
2016-05-30 04:21:02 +02:00
Duncan Ogilvie
021a3ea8b2
Update x86 ( #5035 )
2016-05-30 04:20:29 +02:00
Duncan Ogilvie
18ffea18cc
added/fixed various cmovXX opcodes ( #5033 )
...
As per the Intel manual:
```
CMOVcc - Conditional Move:
| Opcode | Instruction | Op/En| 64-Bit Mode| Compat/Leg Mode| Description
| 0F 47 /r | CMOVA r16, r/m16 | RM | Valid | Valid | Move if above (CF=0 and ZF=0).
| REX.W + 0F 43 /r| CMOVAE r64, r/m64 | RM | Valid | N.E. | Move if above or equal (CF=0).
| 0F 42 /r | CMOVB r16, r/m16 | RM | Valid | Valid | Move if below (CF=1).
| REX.W + 0F 46 /r| CMOVBE r64, r/m64 | RM | Valid | N.E. | Move if below or equal (CF=1 or ZF=1).
| 0F 42 /r | CMOVC r16, r/m16 | RM | Valid | Valid | Move if carry (CF=1).
| REX.W + 0F 44 /r| CMOVE r64, r/m64 | RM | Valid | N.E. | Move if equal (ZF=1).
| 0F 4F /r | CMOVG r16, r/m16 | RM | Valid | Valid | Move if greater (ZF=0 and SF=OF).
| REX.W + 0F 4D /r| CMOVGE r64, r/m64 | RM | Valid | N.E. | Move if greater or equal (SF=OF).
| 0F 4C /r | CMOVL r16, r/m16 | RM | Valid | Valid | Move if less (SF!= OF).
| REX.W + 0F 4E /r| CMOVLE r64, r/m64 | RM | Valid | N.E. | Move if less or equal (ZF=1 or SF!= OF).
| 0F 46 /r | CMOVNA r16, r/m16 | RM | Valid | Valid | Move if not above (CF=1 or ZF=1).
| REX.W + 0F 42 /r| CMOVNAE r64, r/m64| RM | Valid | N.E. | Move if not above or equal (CF=1).
| 0F 43 /r | CMOVNB r16, r/m16 | RM | Valid | Valid | Move if not below (CF=0).
| REX.W + 0F 47 /r| CMOVNBE r64, r/m64| RM | Valid | N.E. | Move if not below or equal (CF=0 and
| | | | | | ZF=0).
| 0F 43 /r | CMOVNC r16, r/m16 | RM | Valid | Valid | Move if not carry (CF=0).
| REX.W + 0F 45 /r| CMOVNE r64, r/m64 | RM | Valid | N.E. | Move if not equal (ZF=0).
| 0F 4E /r | CMOVNG r16, r/m16 | RM | Valid | Valid | Move if not greater (ZF=1 or SF!= OF).
| REX.W + 0F 4C /r| CMOVNGE r64, r/m64| RM | Valid | N.E. | Move if not greater or equal (SF!= OF).
| 0F 4D /r | CMOVNL r16, r/m16 | RM | Valid | Valid | Move if not less (SF=OF).
| REX.W + 0F 4F /r| CMOVNLE r64, r/m64| RM | Valid | N.E. | Move if not less or equal (ZF=0 and
| | | | | | SF=OF).
| 0F 41 /r | CMOVNO r16, r/m16 | RM | Valid | Valid | Move if not overflow (OF=0).
| REX.W + 0F 4B /r| CMOVNP r64, r/m64 | RM | Valid | N.E. | Move if not parity (PF=0).
| 0F 49 /r | CMOVNS r16, r/m16 | RM | Valid | Valid | Move if not sign (SF=0).
| REX.W + 0F 45 /r| CMOVNZ r64, r/m64 | RM | Valid | N.E. | Move if not zero (ZF=0).
| 0F 40 /r | CMOVO r16, r/m16 | RM | Valid | Valid | Move if overflow (OF=1).
| REX.W + 0F 4A /r| CMOVP r64, r/m64 | RM | Valid | N.E. | Move if parity (PF=1).
| 0F 4A /r | CMOVPE r16, r/m16 | RM | Valid | Valid | Move if parity even (PF=1).
| REX.W + 0F 4B /r| CMOVPO r64, r/m64 | RM | Valid | N.E. | Move if parity odd (PF=0).
| 0F 48 /r | CMOVS r16, r/m16 | RM | Valid | Valid | Move if sign (SF=1).
| REX.W + 0F 44 /r| CMOVZ r64, r/m64 | RM | Valid | N.E. | Move if zero (ZF=1).
```
* fixed typo
* or -> nor
2016-05-30 04:20:19 +02:00
Sven Steinbauer
c58689bae1
Fixes for mov op for nz assembler ( #5020 )
...
A number of fixes and updates to the `mov` command for the nz assembler
including:
* handling of `esp` register in more cases
* able to handle negative offsets for target register both byte and word
* able to handle negative offsets for target with immediate value as
source, both byte and word
* refactor mov block of code to be more consistent (further work needed)
2016-05-27 18:11:01 +02:00
Sven Steinbauer
76a4e0ca7a
Add support for immediate word for sub ( #5006 )
...
`nz` now generates the correct opcode when using a word as an immediate
in the `sub` instruction with a register + offset as the target
Also adds support for word register offsets and refactors that portion
of the code a little
For 32bit only so far
2016-05-25 17:22:00 +02:00
jvoisin
4b8af71ef4
Removed a duplicate loopne and loopnz entry
...
removed a duplicate `loopne` and `loopnz` entry
2016-05-25 15:24:13 +02:00
Jeffrey Crowell
2a77791616
add 64bit xchg instruction
...
still broken for the special case of xchg (E|R)ax, r(32|64)
but will add that next
2016-05-24 15:13:37 +00:00
Roman Valls Guimerà
6f66ba9b84
Typo "intro"->"into memory" ( #4991 )
2016-05-24 16:07:38 +02:00
Anton Kochkov
f6b18bcb56
Fix CID 1356018
2016-05-24 08:54:39 +03:00
Sven Steinbauer
8da8ad740f
Cleanup fixes
...
* For commit comments and compiler errors
* Fixes for PR comments
* fix some "infer fixes" commits
Signed-off-by: Riccardo Schirone <sirmy15@gmail.com>
2016-05-23 11:25:44 +02:00
Sven Steinbauer
599b6553e4
Infer fixes for asm
...
Signed-off-by: Riccardo Schirone <sirmy15@gmail.com>
2016-05-23 11:25:44 +02:00
pancake
7f6029f17c
Fix OR x86.nz test
2016-05-18 11:17:26 +02:00
pancake
2fd754a76c
Fix #4938 - Implement 'or REG, NUM' in the x86.nz assembler
2016-05-18 10:48:48 +02:00
Riccardo Schirone
5b92204c27
asm/arch/avr: do not print space if there are no operands
2016-05-17 13:18:23 +02:00
pancake
22989f1ce9
Workaround for x86.nz inc [eax]
2016-05-14 10:59:54 +02:00
Sven Steinbauer
074b327c1c
Fix #3644 : Add SIB addressing support to nz compiler
2016-05-13 11:45:54 +02:00
pancake
b4bb247791
Add nop for arm64 assembler
2016-05-10 11:22:13 +02:00
Sven Steinbauer
766b9ec4f0
Add support for dword offsets ( #4825 )
...
* Add support for dword offsets to internal assembler
Internal assembler produces incorrect opcodes for offsets that were
greater than a short.
rasm2 "mov eax, [eax + 1337]"
8b8039
This adds support for values >127.
rasm2 "mov eax, [eax + 1337]"
8b8039050000
producing the same output as the `nasm` assembler.
* Fix support for negative short and dword offsets
Handle negative offsets for `mov` instructions both short and dword
sizes.
* Whitespace fixes
* Remove rogue character
Remove the reogue `:` that got into the code
2016-05-09 15:25:20 +02:00
Damien Zammit
5e1ad580db
build: fix warnings
2016-05-08 12:21:11 +02:00
Sven Steinbauer
7c0b3eb64a
Fix #4745 incorrect assembly for x86 mov ( #4791 )
2016-05-06 16:08:41 +02:00
Damien Zammit
632dccc217
Remove LIL_ENDIAN macro and configure option
...
TODO: Remove other endian cruft from:
- hashing algs
- judy
- squashfs
- grub
- tms320
Signed-off-by: Damien Zammit <damien@zamaudio.com>
2016-05-06 10:21:55 +02:00
Damien Zammit
af0a865d9f
WIP - Totally remove host endianness dependence
...
- Adds endian aware functions
- Removes references to host endian
- Uses binary detected endianness else tries LE and restricts by RAsmPlugin
- Fixes gdb debugger endianness when debugging BE qemu gdbserver
Signed-off-by: Damien Zammit <damien@zamaudio.com>
2016-05-04 23:42:17 +10:00
Álvaro Felipe Melchor
149c7567ed
improve arm/thumb detection for .so
2016-05-02 23:00:53 +02:00
pancake
1f7db90e41
Priorize keystone plugins and other random changes
2016-05-02 02:46:01 +02:00
pancake
b417da6d4d
Add setarch/(from|to).string simplified RAsm APIs
2016-04-29 11:30:38 +02:00
Riccardo Schirone
26fc8f92ef
libr: remove some unused variables and functions
2016-04-27 12:59:45 +02:00
pancake
bfc8e5318e
More fixes from osx-ppc
2016-04-27 11:27:22 +02:00
pancake
e9dc4ae89e
Fix #4695 - no prompt after r2 -qp
2016-04-26 19:11:11 +02:00
kolen
a65ea77725
Fix 'ed' opcode range resulted in overflow
...
Should be:
40 41 .. 4a 4b
maps to
00 01 .. 0a 0b
Was:
3a 3b 3c 3d 3e 3f 40 41 .. 4a 4b
maps to
fa fb fc fd fe ff 00 01 .. 0a 0b
2016-04-21 15:33:26 +02:00
Christoph Sarnowski
145688a60a
Fix tricore disasm buffer copy function
...
- Did not take `memaddr' argument into account, resulting in wrong disassembly.
- Check boundaries
2016-04-15 15:51:28 +02:00
NaveenBoggarapu
4c04b98b47
few memory leaks fixed
2016-04-13 21:55:48 +02:00
Travis Goodspeed
3ca3b4f534
This patch fixes a bug in which many MSP430 instructions would be mistaken for emulated instructions.
2016-04-12 23:11:14 +02:00
pancake
5ef2b3cc0f
Fix many warnings
2016-04-11 12:22:15 +02:00
Alexander Couzens
7c6ec5f146
fix mips forward assembler when using negative offset
...
Fix 'Invalid reg name (-0x5c60)' when try to assemble
'lw t9, -0x5c60(gp)'
2016-04-11 00:58:04 +02:00
pancake
4e0a71c0c3
Fix #4573 - fix oobread in java disassembler
2016-04-10 01:23:18 +02:00
pancake
3f7a70fb7d
Fix #4564 - oobread in dalvik disasm+analyzer
2016-04-10 01:12:58 +02:00
pancake
6f4518a247
Fix #4588 - uninit memory in m68k dis
2016-04-10 01:06:16 +02:00
pancake
eb99ec8580
Fix android build
2016-04-07 16:20:29 +02:00
Anton Kochkov
d558dec5b7
Fix CID 1353073
2016-04-05 12:38:34 +03:00
pancake
62195cc005
Fix #4502 - Implement blx for thumb
2016-04-05 00:15:45 +02:00
Anders Kaare
cb2d45e491
fixing m68k branch disasm bug
...
16bit displacement must be signed, but were unsigned. I've converted the
branch variants to 8/16/32bit signed casts rather than duplicating the
8bit ISBITSET() special case.
2016-04-04 21:27:06 +02:00
pancake
e8263655be
Fix more memleaks
2016-04-04 00:17:57 +02:00
pancake
9eb63df89f
Fix #4502 - Implement blx address for arm32 assembler
2016-04-03 17:35:52 +02:00
Evan Shaw
58328def22
Show absolute offsets for relative branches in SNES disassembly
...
This makes the disassembly easier to read.
2016-04-02 10:02:27 +02:00
Anders Kaare
ff21bb5fbf
fixing 6502 analysis
...
36e42b33fe broke analysis by introducing a
new enum value. The analysis code didn't switch on the enum but rather
used it directly as an integer, so since the new SNES_OP_IMM has 5 as
its integer value the analysis code would think that the op was 5 bytes
in length.
2016-03-30 22:08:52 +02:00
Léo Gaspard
353ff45443
Add EBC 'not' instruction decoding
2016-03-29 17:10:04 +02:00
Léo Gaspard
5c8a663e23
Identify external calls for EBC
2016-03-29 01:22:48 +02:00
Léo Gaspard
7595af19e3
Use decode_index32 for EBC calls
2016-03-29 01:22:48 +02:00
Léo Gaspard
ff4bce16db
Actually follow UEFI spec for index{32,64}
2016-03-29 01:22:48 +02:00
pancake
d629165ec8
Remove unnecessary = NULL in bin/p/*.c
2016-03-27 23:02:29 +02:00
pancake
9d62ee0ddf
Fix m68k.cs disassembler issue, honor asm.cpu in anal.m68k.cs
2016-03-24 16:21:49 +01:00
pancake
a461bbc536
Fix #4304 - asm.filter for m68k
2016-03-22 12:45:05 +01:00
pancake
76fa5bddcf
Add missing signature
2016-03-18 17:19:06 +01:00
pancake
446add902f
Fix #4345 - Add scas{bwd} for x86.nz
2016-03-18 16:59:47 +01:00
pancake
dc33b03011
Handle movk and movz in the arm64 assembler and pseudo disassembler
2016-03-17 17:26:08 +01:00
pancake
ae32acc5bc
Add missing space after commas in m68k
2016-03-15 11:59:19 +01:00
pancake
1c443caccf
Fix some COVs in snes disassembler
2016-03-13 21:04:12 +01:00
pancake
526d8d8e63
Fix #4275 - Fix lanai format string warnings
2016-03-13 03:23:54 +01:00
Evan Shaw
36e42b33fe
Support 16-bit immediate operands in SNES
...
Size for immediate operands depends on the value of the M flag
(for register A) or the X flag (for registers X and Y). A register is
8-bit when its respective flag is set and 16-bit when clear.
These flags can be set or unset independently, so this still isn't quite right
for when one flag is set and the other isn't, but it's an improvement. It's
possible to force a particular instruction to decode correctly by using the
`afh` command.
2016-03-12 03:06:46 +01:00
oddcoder
966900121d
adding bunch of another esil & fixing the bits
2016-03-09 15:32:50 +01:00
oddcoder
888b7d575d
fixing bug in goto disassmebly
2016-03-09 12:21:56 +01:00
Álvaro Felipe Melchor
0efdf9cf97
Fix again #4215
2016-03-07 22:17:59 +01:00
pancake
d00beba767
Fix arm.cs thumb thing
2016-03-07 17:06:26 +01:00
pancake
75bf9b233a
Fix aat->aap typo and add no-mclass option for x86.arm.cs
2016-03-07 12:31:50 +01:00
pancake
be9d53417e
Fix #4215 - Fix disasm of thumb mrs 0, primask
2016-03-07 04:50:06 +01:00
pancake
650e99407b
Oops. copypaste error in 6502dis
2016-03-07 04:44:42 +01:00
pancake
8de14dc2b6
Fix #4242 - OOB read in riscv disassembler
2016-03-07 00:21:49 +01:00
pancake
36ce331815
Fix #4239 - oobread in 6502 disassembler
2016-03-06 23:43:07 +01:00
oddcoder
9b21040898
fixing logic error in rcall instruction
...
I just misread the operands of the rcall instruction
their is 2 similar types of instruction (naming conveintions used only
by me and mentioned no where in the manual) the N_T where the n operand
is 8 bit and NET_T where the n operand is 11 bit
the rcall looks like the following 1101 1nnn nnnn nnnn which is obviosly
NEX_T
2016-03-05 19:54:31 +01:00
oddcoder
115c0bd40d
fixing OSX Darwin compilation error #4218
2016-03-04 15:20:20 +01:00
oddcoder
599cbcd3c7
attempt to fix scan.converity bugs
...
I also hunted 4th illegal memory read
the first 2 bytes of b is always casted to (ut16) type
with out checking if b even contains 2 bytes
now it is handled it correctly
2016-03-04 00:50:25 +01:00
oddcoder
87b6ada97a
Add asm.describe for pic18c
2016-03-03 03:18:03 +01:00
oddcoder
7fe6c6dff2
Adding initial support for PIC18C diassembler
2016-03-02 11:55:22 +01:00
mrdanielps
7fe1d56932
V810: fixes
...
* Proper bound checking when decoding.
* Reuse some macros.
* Follow code style guidelines.
2016-02-28 17:43:40 +01:00
Prasanna Balan
d9f4bce40b
MSP430: add support for illegal opcodes
...
Before this commit,any illegal opcode would return -1 which
would make r2 use 1 byte as default opcode width.This was
wrong on MSP430 as it uses fixed 2 byte opcodes.Fix this
2016-02-25 02:58:38 +01:00
pancake
af2f02515f
Support and load r_fs plugins
2016-02-21 02:32:28 +01:00
pancake
7c76d45ab7
Fix #4114 - Remove the use of setjmp in xtensa arch
2016-02-20 23:41:23 +01:00
William Robinet
a67adbcbb8
Typos
2016-02-17 13:38:43 +01:00
pancake
f52d3c114c
Add missing signature for the lanai disassembler
2016-02-16 23:26:55 +01:00
William Robinet
d3ab5f38aa
Remove execution bit from source files
2016-02-16 23:21:46 +01:00
William Robinet
0c7cacc2dc
Fix typos
2016-02-16 23:21:24 +01:00
pancake
55eee73c6d
Fix #4061 - properly assemble ldr.w thumb instruction
2016-02-16 17:12:37 +01:00
pancake
384cfb1042
Fix last coverities
2016-02-16 02:08:09 +01:00
mrdanielps
d6f49bc54e
V810: Implement ESIL
2016-02-16 00:57:42 +01:00
pancake
ce7ca97cb6
Wip fixes for r_strbuf
2016-02-16 00:28:57 +01:00
pancake
fd359e9121
Implement radiff2 -D and optimize r_strbuf
2016-02-15 23:51:20 +01:00
pancake
cdf63617d7
Initial support for LANAI disassembler
2016-02-15 13:27:23 +01:00
pancake
838b254cc8
Fix #4090 - Do not assemble one-arg xors in x86.nz
2016-02-11 07:35:51 -06:00
mrdanielps
8ee43270e8
V810: Add opcode descriptions
2016-02-11 00:13:27 -06:00
evanrichter
7f43919750
add propeller architecture to asm.describe
...
source: http://nagasm.org/ASL/Propeller/printedPDF/QuickReference-v15.pdf
2016-02-10 17:21:08 -05:00
Jonathan Neuschäfer
91c940738c
Add opcode descriptions for riscv
2016-02-03 11:29:32 +01:00
Jonathan Neuschäfer
edbb677a79
libr/asm/d/arm: Fix description of ORR opcode
2016-02-03 11:22:13 +01:00
condret
44b06b11de
fix something
2016-02-01 14:10:09 +00:00
condret
b1d894ab7b
fix some warning
2016-02-01 10:58:36 +00:00
condret
f66e7a4c46
fix #4012
2016-02-01 10:09:20 +00:00
pancake
bb073cf5db
Modernize asm/code.c
2016-01-30 03:02:06 +01:00
pancake
b08892dbb3
Fix Tricore warnings and handle in ELF
2016-01-30 02:58:45 +01:00
Kitsu
73f2995d2e
Added tms320 description
2016-01-30 02:50:41 +01:00