summaryrefslogtreecommitdiff
path: root/py/asmx64.c
AgeCommit message (Collapse)Author
2017-07-31all: Use the name MicroPython consistently in commentsAlexander Steffen
There were several different spellings of MicroPython present in comments, when there should be only one.
2017-07-18py/asmx64: Support moving a 64-bit immediate to one of top 8 registers.Damien George
If constants (eg mp_const_none_obj) are placed in very high memory locations that require 64-bits for the pointer then the assembler must be able to emit instructions to move such pointers to one of the top 8 registers (ie r8-r15).
2016-12-09py/asm: Remove need for dummy_data when doing initial assembler passes.Damien George
For all but the last pass the assembler only needs to count how much space is needed for the machine code, it doesn't actually need to emit anything. The dummy_data just uses unnecessary RAM and without it the code is not any more complex (and code size does not increase for Thumb and Xtensa archs).
2016-11-28py: Factor out common code from assemblers into asmbase.[ch].Damien George
All assemblers should "derive" from mp_asm_base_t.
2016-02-15py/asmx64: Support all 16 regs in reg to memory move instructions.Damien George
2016-02-15py/asmx64: Add helper macro for generating REX_[WRXB] bits from a reg64.Damien George
2015-10-13py: Implement ptr32 load and store in viper emitter.Damien George
2015-06-04py: Implement native multiply operation in viper emitter.Damien George
2015-04-09py: Adjust some spaces in code style/format, purely for consistency.Damien George
2015-04-07py: Implement full func arg passing for native emitter.Damien George
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-03py: Implement closures in native code generator.Damien George
Currently supports only x64 and Thumb2 archs.
2015-02-14py/asm*.c: Typo fixes in comments.Paul Sokolovsky
2015-01-22py: Allow asmx64 to compile with -Wsign-compare.Damien George
See issue #699.
2015-01-14py: Allocate memory for assembled code at start of PASS_EMIT.Damien George
Previously was allocating at end of PASS_COMPUTE, and this pass was being run twice, so memory was being allocated twice.
2015-01-12py: Make a function static and comment out those not used.Damien George
2015-01-01py: Move to guarded includes, everywhere in py/ core.Damien George
Addresses issue #1022.
2014-10-12py: Implement native load for viper.Damien George
Viper can now do: ptr8(buf)[0], which loads a byte from a buffer using machine instructions.
2014-10-12py: Implement and,or,xor native ops for viper.Damien George
2014-09-29py: Allow x86-64 to mov r16 to rm16 with extended src reg.Damien George
Fixes bug with x86-64 viper ptr16.
2014-09-29py: Implement more binary ops for viper emitter.Damien George
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-29py: Make macro names in assemblers consistent, and tidy up a bit.Damien George
2014-09-29py: Add store r8 and store r16 ops to asm_x86 and asm_x64.Damien George
2014-09-07py: Clean up x86-64 native assembler; allow use of extended regs.Damien George
Native x86-64 now has 3 locals in registers.
2014-09-03Code style/whitespace cleanup; remove obsolete headers.Damien George
And move the MAP_ANON redefinition from py/asmx64.c to unix/alloc.c.
2014-09-03Add cache flush in py/asmarm.c and add new MP_PLAT_ALLOC_EXEC and ↵Fabian Vogt
MP_PLAT_FREE_EXEC macros Fixes issue #840
2014-06-21py: Include mpconfig.h before all other includes.Paul Sokolovsky
It defines types used by all other headers. Fixes #691.
2014-05-07py, compiler: Improve passes; add an extra pass for native emitter.Damien George
2014-05-03Add license header to (almost) all files.Damien George
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-02-12Replace global "static" -> "STATIC", to allow "analysis builds". Part 2.Paul Sokolovsky
2014-02-02py: Partially fix native emitter to work with latest runtime.Damien George
Native emitter has been broken since stack order has changed from reverse to standard. This fix gets it partially working.
2014-01-28Added Windows port (see #233)Markus Siemens
2014-01-07Factor and simplify Makefile's and mpconfig, part 2.Damien George
2014-01-06py: Fix up number operations and coercion.Damien George
2014-01-04Improve configurability for native x64/thumb emitter.Damien George
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-02py: __MACH__ also uses MAP_ANON.Damien George
2014-01-01On OpenBSD MAP_ANONYMOUS is called MAP_ANON.Edd Barrett
2013-12-30Make unix-cpy cross platform; remove dependency of asmx64 on mpconfig.Damien George
2013-12-30Make "unix" target be crossplatform and support x86, x64, ARM hosts.Paul Sokolovsky
2013-12-29Change memory allocation API to require size for free and realloc.Damien
2013-10-07Implement crude viper emit stage.Damien
2013-10-05Compiler computes labels and max_num_labels.Damien
2013-10-05Restructure emit so it goes through a method table.Damien
2013-10-04Initial commit.Damien