Damien George
612599587b
py: Factor out common code from assemblers into asmbase.[ch].
...
All assemblers should "derive" from mp_asm_base_t.
2016-11-28 09:24:50 +11:00
Damien George
94e4bd456f
py/asmx64: Support all 16 regs in reg to memory move instructions.
2016-02-15 09:05:50 +00:00
Damien George
46fc7a3d75
py/asmx64: Add helper macro for generating REX_[WRXB] bits from a reg64.
2016-02-15 09:02:13 +00:00
Damien George
b8f9ac5411
py: Implement ptr32 load and store in viper emitter.
2015-10-13 00:50:17 +01:00
Damien George
567b349c2b
py: Implement native multiply operation in viper emitter.
2015-06-04 14:00:29 +00:00
Damien George
4dea922610
py: Adjust some spaces in code style/format, purely for consistency.
2015-04-09 15:29:54 +00:00
Damien George
9988618e0e
py: Implement full func arg passing for native emitter.
...
This patch gets full function argument passing working with native
emitter. Includes named args, keyword args, default args, var args
and var keyword args. Fully Python compliant.
It reuses the bytecode mp_setup_code_state function to do all the hard
work. This function is slightly adjusted to accommodate native calls,
and the native emitter is forced a bit to emit similar prelude and
code-info as bytecode.
2015-04-07 22:43:28 +01:00
Damien George
4cd9ced8dc
py: Implement closures in native code generator.
...
Currently supports only x64 and Thumb2 archs.
2015-04-03 15:05:53 +01:00
Paul Sokolovsky
089c3f321e
py/asm*.c: Typo fixes in comments.
2015-02-14 02:20:35 +08:00
Damien George
e5bcbcdebd
py: Allow asmx64 to compile with -Wsign-compare.
...
See issue #699 .
2015-01-22 14:08:58 +00:00
Damien George
d9dc6fff21
py: Allocate memory for assembled code at start of PASS_EMIT.
...
Previously was allocating at end of PASS_COMPUTE, and this pass was
being run twice, so memory was being allocated twice.
2015-01-14 00:38:33 +00:00
Damien George
3dd1c0a88a
py: Make a function static and comment out those not used.
2015-01-12 22:22:46 +00:00
Damien George
51dfcb4bb7
py: Move to guarded includes, everywhere in py/ core.
...
Addresses issue #1022 .
2015-01-01 20:32:09 +00:00
Damien George
91cfd414c0
py: Implement native load for viper.
...
Viper can now do: ptr8(buf)[0], which loads a byte from a buffer using
machine instructions.
2014-10-12 16:59:29 +01:00
Damien George
1ef2348df0
py: Implement and,or,xor native ops for viper.
2014-10-12 14:21:06 +01:00
Damien George
1c6a1dc740
py: Allow x86-64 to mov r16 to rm16 with extended src reg.
...
Fixes bug with x86-64 viper ptr16.
2014-09-29 22:44:18 +01:00
Damien George
3112cde900
py: Implement more binary ops for viper emitter.
...
This included a bit of restructuring of the assembler backends. Note
that the ARM backend is missing a few functions and won't compile.
2014-09-29 19:42:06 +01:00
Damien George
0b610de017
py: Make macro names in assemblers consistent, and tidy up a bit.
2014-09-29 19:42:06 +01:00
Damien George
d66e48662b
py: Add store r8 and store r16 ops to asm_x86 and asm_x64.
2014-09-29 19:42:06 +01:00
Damien George
8105736982
py: Clean up x86-64 native assembler; allow use of extended regs.
...
Native x86-64 now has 3 locals in registers.
2014-09-07 01:06:19 +01:00
Damien George
dda46460ff
Code style/whitespace cleanup; remove obsolete headers.
...
And move the MAP_ANON redefinition from py/asmx64.c to unix/alloc.c.
2014-09-03 22:47:23 +01:00
Fabian Vogt
b7235b8412
Add cache flush in py/asmarm.c and add new MP_PLAT_ALLOC_EXEC and MP_PLAT_FREE_EXEC macros
...
Fixes issue #840
2014-09-03 23:07:42 +02:00
Paul Sokolovsky
59c675a64c
py: Include mpconfig.h before all other includes.
...
It defines types used by all other headers.
Fixes #691 .
2014-06-21 22:43:22 +03:00
Damien George
36db6bcf54
py, compiler: Improve passes; add an extra pass for native emitter.
2014-05-07 17:24:22 +01:00
Damien George
04b9147e15
Add license header to (almost) all files.
...
Blanket wide to all .c and .h files. Some files originating from ST are
difficult to deal with (license wise) so it was left out of those.
Also merged modpyb.h, modos.h, modstm.h and modtime.h in stmhal/.
2014-05-03 23:27:38 +01:00
Paul Sokolovsky
520e2f58a5
Replace global "static" -> "STATIC", to allow "analysis builds". Part 2.
2014-02-12 18:31:30 +02:00
Damien George
cd82e02e84
py: Partially fix native emitter to work with latest runtime.
...
Native emitter has been broken since stack order has changed from
reverse to standard. This fix gets it partially working.
2014-02-02 13:11:48 +00:00
Markus Siemens
19ccc6bdc7
Added Windows port (see #233 )
2014-01-28 18:21:05 +01:00
Damien George
d3ebe4829d
Factor and simplify Makefile's and mpconfig, part 2.
2014-01-07 15:20:33 +00:00
Damien George
e2e3d11e87
py: Fix up number operations and coercion.
2014-01-06 22:13:00 +00:00
Damien George
e67ed5d285
Improve configurability for native x64/thumb emitter.
...
With MICROPY_EMIT_X64 and MICROPY_EMIT_THUMB disabled, the respective
emitters and assemblers will not be included in the code. This can
significantly reduce binary size for unix version.
2014-01-04 13:55:24 +00:00
Damien George
ebd2e8702d
py: __MACH__ also uses MAP_ANON.
2014-01-02 20:28:12 +00:00
Edd Barrett
67ab5ee779
On OpenBSD MAP_ANONYMOUS is called MAP_ANON.
2014-01-01 23:16:27 +00:00
Damien George
212c296c0b
Make unix-cpy cross platform; remove dependency of asmx64 on mpconfig.
2013-12-30 12:52:32 +00:00
Paul Sokolovsky
e85c38992d
Make "unix" target be crossplatform and support x86, x64, ARM hosts.
2013-12-30 03:38:32 +02:00
Damien
732407f1bf
Change memory allocation API to require size for free and realloc.
2013-12-29 19:33:23 +00:00
Damien
7af3d19a3c
Implement crude viper emit stage.
2013-10-07 00:02:49 +01:00
Damien
054848a1b8
Compiler computes labels and max_num_labels.
2013-10-05 13:44:41 +01:00
Damien
415eb6f850
Restructure emit so it goes through a method table.
2013-10-05 12:19:06 +01:00
Damien
429d71943d
Initial commit.
2013-10-04 19:53:11 +01:00