niravthakkar
ba4343d9d1
Added support for Immediate mode 16 bit
...
Currently only afi instruction is encoded, will be adding other instructions too. For encoding we are running out of characters so was planning to append the complete modes (RXa or rxa) which one do you think is better, and also thinking of just adding remaining instruction modes as well, which we don't support as of now. Let me know if you want me to add those, or we will wait for sometime before we add those.
2016-12-06 19:17:54 +05:30
ketank-new
7c79bbc768
Update test_z_inst.c
...
Added test case for add immediate 16 bits RI-a
Added test case for add immediate 32 bits RIL-a
2016-12-06 14:11:30 +05:30
niravthakkar
2156278508
Updated the addressing mode working
...
The case where immediate was passed as label was not covered initially, so updated it
2016-12-06 12:23:51 +05:30
Michael Munday
73ad6dc77d
Add support for jumps to local labels.
...
Currently limited to 16-bits ONLY.
Allows code like:
|1:
| ...
| j <1
2016-12-05 17:27:24 -05:00
Michael Munday
410bdb8182
Minor cleanup of dasm_s390x.lua.
2016-12-05 15:00:40 -05:00
Michael Munday
be3efbc65a
Add simple tests for RX and RXY style instructions.
...
Also changed the test function signature to int64_t fn(int64_t, int64_t)
to make it easier to test 64-bit operations.
2016-12-05 14:51:48 -05:00
Michael Munday
d9e61fe7a8
Shorten templates by four characters.
...
We only have 6-byte instructions, so we don't really need the ability
to encode 8-bytes.
2016-12-05 14:23:35 -05:00
Michael Munday
54199bd9bc
Clean up test file and add script to run tests.
...
./run.sh will now execute the tests. It is a very simple setup
currently, and is limited to linux on s390x. Enough to get started
with.
2016-12-05 14:02:58 -05:00
Michael Munday
d7f7509894
Minor indentation fixes.
2016-12-05 12:35:13 -05:00
Michael Munday
9745e9df26
Get DASM_SECTION argument from the correct place.
2016-12-05 12:35:13 -05:00
ketank-new
17d91e2f0c
Update test_z_inst.c
...
changed code to in the form of a test table
currently handles RR based , addition, subtraction and multiply test
2016-12-05 13:46:44 +05:30
Michael Munday
1dd736f09a
Auto-format dasm_s390x.h (again).
...
This time explicitly ban tabs.
indent -i2 -brs -cli0 -br -ce -npcs -nbc -di1 -npsl -ncs -nut dasm_s390x.h
2016-12-02 15:14:37 -05:00
Michael Munday
3ec573e750
Add support for .align directive.
2016-12-02 15:13:04 -05:00
Michael Munday
7181c391bd
Add C code to handle IMM16.
2016-12-02 14:20:59 -05:00
Michael Munday
2324be897e
Reduce indentation level of big switch statement.
...
A style thing. I find it easier to read this way.
i.e. do:
while(1) {
if (blah) {
...
continue;
}
... // big switch statement
}
instead of:
while(1) {
if (blah) {
...
} else {
... // big switch statement
}
}
2016-12-02 13:50:09 -05:00
Michael Munday
fc2b633532
Auto-format dasm_s390x.h.
...
I did this mostly to get rid of the annoying tabs/spaces mix in this
file. It has the side effect of forcing newlines before statements
which I think is a better style (and not particularly inconsistent
with the original which used both styles). Other than that I've tried
to match the original style as closely as possible.
Generated with this command:
indent -i2 -brs -cli0 -br -ce -npcs -nbc -di1 -npsl -ncs dasm_s390x.h
2016-12-02 13:41:45 -05:00
Michael Munday
621ae87058
Cleanup and fix compilation.
2016-12-02 13:06:03 -05:00
niravthakkar
3d5c692e13
Minor change: Cleanup
2016-12-02 17:39:00 +05:30
niravthakkar
f0dd40dc50
Adding support for Immediate add mode
...
The masking in immediate mode might not be proper. I could understand that you had masked 12bits and then 8bits to get the displacement in place for 20-bit displacement ( cp[-2] |= n&0xfff; cp[-1] |= (n>>4)&0xff00;) But in my case I need all the 32bits, so not sure how to go about it. Currently I have just used "n" since no point in "and with 0xffff" But I am getting core dump. Please Let me know your comments on these.
2016-12-02 17:37:20 +05:30
niravthakkar
b97a7f7b44
Minor cleanup and modified 32 bit signed check
...
Modified 32 bit signed check for the immediate value
2016-12-02 17:19:29 +05:30
ketank-new
f0cc29436c
Update test_z_inst.c
...
added functionality to test different modes of same instruction type
2016-12-02 15:46:45 +05:30
ketank-new
1d960f2286
Create test_z_inst.c
...
Added examples folder
Added test code to test basic instructions like add , sub and msr
This code is in processes of further expansion and tuning
2016-12-02 15:21:18 +05:30
niravthakkar
45553891da
Minor change , missed out brace
2016-12-02 14:13:55 +05:30
niravthakkar
4c7e494e0a
Added support for Immediate addressing mode
...
Adding support for Immediate add mode, need to check how 32 bits is returned, currently followed the displacement method.
2016-12-02 12:55:43 +05:30
Michael Munday
1b7ded5474
Add support for RS-a and RSY-a instructions like stm and stmg.
2016-12-01 19:45:06 -05:00
Michael Munday
6ae327df75
Add support for RXY instructions (20-bit displacements).
2016-12-01 19:26:30 -05:00
Michael Munday
77f283c328
Allow symbols to be used for 12-bit displacements.
...
The parse_mem_bx function now returns a function to call to add an
action to the action list to handle the evaluation of the
displacement. This allows us to delay adding said action until
after we have emitted the actions for the instruction encodings
themselves.
Code like this should now work:
int x = 24
| st r1, x(sp)
2016-12-01 17:09:45 -05:00
Michael Munday
c71a6189bb
Fix indentation.
...
I miss gofmt.
2016-12-01 14:43:23 -05:00
niravthakkar
dd6448ff1e
Changed the templates based on no of arguments
...
Have changed the templates based on number of parameters passed, mainly the memory and immediate ones are modified.
2016-12-01 15:15:06 +05:30
Michael Munday
575c907544
Minor cleanup of regular expressions.
2016-11-30 17:07:17 -05:00
Michael Munday
a34bcf9ef4
Add initial support for D(B,X) memory operands (12-bit only).
...
Most RX instructions don't specify the correct number of operands
so this won't work on many yet. It also won't yet emit an action
if D is a variable rather than a constant.
2016-11-30 16:05:36 -05:00
Michael Munday
cf225d27cc
Fix C code in header file and handle br template.
...
This means that code like this can now be generated on s390x:
| ar r2, r3
| br r14
Still need to add support for immediates, memory, labels, other
instructions and so on.
2016-11-30 14:11:01 -05:00
Michael Munday
000b1a84f0
Breakup instructions and action list into halfword chunks.
...
This should allow us to encode the instructions relatively naturally
and efficiently. For now I've escaped halfwords with a value <=
the maximum action. This means that 0 is escaped which probably
isn't ideal, so we may want to revisit that decision at some point.
2016-11-29 18:06:59 -05:00
Michael Munday
d97dea2e3f
Add a description of how immediate actions should be encoded.
...
Also sets the action list type to unsigned short (uint16_t) which
I think is the most appropriate type for s390x (x86 uses uint8_t
and other platforms use uint32_t).
2016-11-29 16:29:42 -05:00
Michael Munday
36479af87a
Add stubs for parsing memory operands and delete unwanted code.
...
Each memory operand will be a single parameter so we also need
to update the instruction encoding nargs field.
2016-11-29 15:24:11 -05:00
Michael Munday
89ca41cca5
Add sp -> r15 mapping and don't special case or_2
...
It's convenient for sp to be a pseudonym for r15 (the stack pointer).
'or_2' doesn't need to be special cased ('or' did because it is a
keyword).
2016-11-29 13:59:37 -05:00
Michael Munday
0e3241180f
Various cleanup of dasm_s390x.lua
...
- Fix syntax errors
- Fix whitespace (use two-space indentation to match surrounding code)
2016-11-29 13:45:59 -05:00
niravthakkar
7a49be07be
Added the required character for encoding
...
I have added the number depending on the number of operands, pls check for the ones which access memory.
Also For base register and displacement, should I assume that it will be passed in the same order as it is expected, since I dont have any means to see the output, I am confused a bit for those add modes.
Since we decided to test RR first, thats in progress, but would like to add others as well.
2016-11-29 19:00:28 +05:30
niravthakkar
538a4afee2
Updated size of the instruction word
...
We can discuss if we need to keep it 6 bytes or 8 bytes long, Not clear enough to me as well
2016-11-28 15:29:58 +05:30
niravthakkar
203006579f
Removed the extra check in parse_reg
...
The extra check for register is currently ignored, and trying to see what value does the encode function return. Its still to be worked out, how this value is used later, after decoding.
2016-11-28 13:32:30 +05:30
Michael Munday
cac5d4f2fb
Add extended mnemonics for branches.
2016-11-25 16:38:32 -05:00
niravthakkar
9b01b4dc6f
Added s390x instructions with their encoding
2016-11-25 19:44:04 +05:30
niravthakkar
dcb977d1db
Changed the encoding for add,and,branch instructions
2016-11-16 14:44:12 +05:30
niravthakkar
9583ba36de
Created s390x header file
...
Currently copy of ppc.h, which is same as arm64.h, and added the architecture definition
2016-11-10 19:00:51 +05:30
niravthakkar
f1f03ec44b
Copy of dasm_arm64.lua file, with few changes
...
Have changed few sections of file, other part is common across architectures
2016-11-10 19:00:41 +05:30
Mike Pall
e3c4c9af0f
DynASM/MIPS: Add missing MIPS64 instructions.
...
Contributed by Djordje Kovacevic and Stefan Pejic from RT-RK.com.
Sponsored by Cisco Systems, Inc.
2016-05-28 05:09:24 +02:00
Mike Pall
75d046dbdd
DynASM/x86: Add ADX instructions.
...
Thanks to Peter Cawley.
2016-03-06 12:25:03 +01:00
Mike Pall
f4231949b5
Merge branch 'master' into v2.1
2016-03-03 12:11:37 +01:00
Mike Pall
db1b399af1
Bump copyright date to 2016.
2016-03-03 12:02:22 +01:00
Mike Pall
22e7b00ddb
DynASM/x64: Fix for full VREG support.
...
Thanks to Peter Cawley.
2015-12-28 17:06:48 +01:00
Mike Pall
cfae3846f8
DynASM/x86: Add AVX AES instructions.
...
Contributed by Peter Cawley.
2015-12-28 16:40:39 +01:00
Mike Pall
a687a60eaa
DynASM/x64: Add full VREG support.
...
Contributed by Peter Cawley.
2015-12-28 13:44:13 +01:00
Mike Pall
0aa337a41c
Merge branch 'master' into v2.1
2015-11-04 14:09:59 +01:00
Mike Pall
367cba29ea
DynASM/x86: Add rdpmc instruction.
...
Thanks to Cosmin Apreutesei.
2015-11-04 14:04:19 +01:00
Mike Pall
4c08158be4
Whitespace.
2015-10-24 18:53:37 +02:00
Mike Pall
d62dc01984
DynASM: Bump version to 1.4.
...
Thanks to Peter Cawley.
2015-10-24 18:46:45 +02:00
Mike Pall
8a13c9cebf
DynASM/x86: Add AVX and AVX2 opcodes.
...
Thanks to Peter Cawley.
2015-10-24 18:43:47 +02:00
Mike Pall
7e22082480
DynASM/x86: Add AES-NI opcodes.
...
Thanks to Peter Cawley.
2015-10-24 18:18:52 +02:00
Mike Pall
e54ca424b5
Merge branch 'master' into v2.1
2015-10-24 18:18:07 +02:00
Mike Pall
7579b161af
DynASM/x86: Restrict shld/shrd to operands with same width.
...
Thanks to Peter Cawley.
2015-10-24 18:15:44 +02:00
Mike Pall
9dc785e0af
DynASM/x86: Fix some SSE instruction templates.
...
Thanks to Peter Cawley.
2015-10-24 18:12:40 +02:00
Mike Pall
1c968d5b63
DynASM/PPC: Add sub/shift/rotate/clear instruction aliases.
2015-04-12 03:46:16 +02:00
Mike Pall
b2a5cc8233
DynASM/PPC: Add support for parameterized shifts/masks.
2015-04-12 01:25:14 +02:00
Mike Pall
3e1703895a
DynASM/PPC: Add missing PPC64 instructions and various extensions.
...
Contributed by Caio Souza Oliveira.
2015-01-14 21:40:24 +01:00
Mike Pall
1b1bd08d3c
DynASM/ARM64: Fix checks for scaled immediates.
2015-01-07 13:17:11 +01:00
Mike Pall
0a5045c34e
Merge branch 'master' into v2.1
2015-01-06 00:12:45 +01:00
Mike Pall
86913b9bbf
Bump copyright date to 2015.
2015-01-05 23:59:31 +01:00
Mike Pall
a13dfd66c3
DynASM/ARM64: Various fixes.
2014-12-27 06:13:48 +01:00
Mike Pall
7a76d435da
Merge branch 'master' into v2.1
2014-12-27 06:11:14 +01:00
Mike Pall
db7cb5ab0e
DynASM/ARM: Fix rollback for variant templates.
2014-12-27 06:08:36 +01:00
Mike Pall
f49c61a277
DynASM/ARM64: Initial commit of ARM64 module.
2014-12-03 14:12:02 +01:00
Mike Pall
3f2e4ec699
DynASM/ARM: Fix description shown for multi-element templates.
2014-12-03 14:09:17 +01:00
Mike Pall
cb886b5817
DynASM/x86: Add fldenv, f[n]stenv, fxsave, fxrstor opcodes.
...
Thanks to Cosmin Apreutesei.
2014-09-22 13:44:28 +02:00
Mike Pall
ae7d4d5ad6
DynASM/x86: Add shld/shrd opcodes.
...
Thanks to Peter Cawley.
2014-09-21 18:03:47 +02:00
Mike Pall
80efb07750
DynASM: Emit version check after .arch directive.
2014-03-06 17:54:48 +01:00
Mike Pall
ef59e54820
Bump copyright date to 2014.
2014-01-16 23:10:16 +01:00
Mike Pall
1f7b326217
DynASM: Emit #line <n> <file> instead of #<n> <file>.
2013-09-12 12:46:28 +02:00
Mike Pall
ec96d8b494
DynASM/x64: Add VREG support to mov64.
...
Thanks to Peter Cawley.
2013-07-18 08:51:32 +02:00
Mike Pall
b2a13ddd74
DynASM/x86: Add lock prefix.
2013-06-24 12:20:25 +02:00
Mike Pall
d147eedac9
DynASM: Improve validation of local backwards relocations.
2013-03-17 14:20:40 +01:00
Mike Pall
4a44c4ff69
Bump copyright date to 2013.
2013-02-11 12:54:48 +01:00
Mike Pall
894d2d6ef4
DynASM/ARM: Fix conditional VFP instruction encoding.
2012-10-15 16:52:18 +02:00
Mike Pall
2d58872cb5
DynASM/ARM: Add VFP instructions.
2012-07-29 12:16:33 +02:00
Mike Pall
c00ffcb870
Change DynASM bit operations to use Lua BitOp.
2012-07-08 16:27:18 +02:00
Mike Pall
6b605bd455
DynASM/PPC: Add missing 64 bit rotates and mtocrf/mfocrf.
2012-06-12 16:47:25 +02:00
Mike Pall
6c8aaef2bb
DynASM: Compatibility with minilua.
2012-06-09 14:42:03 +02:00
Mike Pall
6c05739684
DynASM: Lua 5.2 compatibility fixes.
2012-02-17 11:40:18 +01:00
Mike Pall
10ef109eef
Bump copyright date to 2012.
2012-01-23 22:42:42 +01:00
Mike Pall
b9651b4ba2
MIPS: Add missing opcodes to the DynASM MIPS module plus minor fixes.
...
Allow single dot as macro name.
2012-01-23 19:06:58 +01:00
Mike Pall
ba4917b71b
MIPS: Add DynASM MIPS module and encoding engine.
2011-12-16 21:33:40 +01:00
Mike Pall
9df9c7ef73
PPC: Fix externally provided relocation offsets in DynASM.
2011-10-25 01:18:59 +02:00
Mike Pall
e2b89de92d
PPC: Add y-bit variants of conditional branches to DynASM.
2011-09-05 18:26:08 +02:00
Mike Pall
ec1b70ae35
PPC: Add PPC disassembler.
2011-08-18 19:41:27 +02:00
Mike Pall
b500b50edc
Clarify name of MIT license.
2011-08-14 21:18:58 +02:00
Mike Pall
5385809d30
PPC: Add mtcrf instruction to DynASM.
2011-08-10 21:50:11 +02:00
Mike Pall
fe1f9137a9
PPC: Fix range check for scaled immediates in DynASM.
2011-07-02 00:43:19 +02:00
Mike Pall
f0a7293e58
ARM: Remove redundant parse_gpr() in DynASM.
2011-05-16 02:39:26 +02:00
Mike Pall
cfdc356ebe
RELEASE LuaJIT-2.0.0-beta7
2011-05-05 16:31:13 +02:00
Mike Pall
7ff8409797
DynASM: x86/x64: Fix vreg in opcode. x64: Fix imm "I" after abs addr.
2011-04-28 12:54:46 +02:00
Mike Pall
161bc379f0
ARM: Add GPR variants for shift aliases to DynASM.
2011-04-10 16:50:04 +02:00