aboutsummaryrefslogtreecommitdiff
path: root/py/emitinlinethumb.c
AgeCommit message (Collapse)Author
2015-02-25py: Make inline assembler raise exception when branch not in range.Damien George
Addresses issue #1132.
2015-02-24py: In inline assembler, add return statement to fix flow logic.Damien George
2015-02-24py: Factor some code in inline thumb assembler to reduce code size.Damien George
2015-02-24py: Make more asmthumb functions inline to reduce code size.Damien George
2015-02-24py: Reduce code size of inline thumb assembler by using static tables.Damien George
Reduces stmhal by about 300 bytes ROM.
2015-02-16py: Implement bl/bx instructions for inline Thumb assembler.Damien George
2015-02-16py: Implement "it" instruction for inline Thumb assembler.Damien George
2015-02-13py: Implement clz and rbit for inline Thumb assembler.Damien George
2015-02-13py: Implement sdiv/udiv for inline Thumb assembler.Damien George
2015-02-13py: Implement push/pop for inline Thumb assembler.Damien George
2015-02-13py: Make inline assembler raise proper SyntaxError exception on error.Damien George
Also gives line number of location of error. Very useful!
2015-02-12py: Add ldrex and strex to thumb2 inline assembler.Damien George
These are useful for implementing atomic lock operations.
2015-01-01py: Move to guarded includes, everywhere in py/ core.Damien George
Addresses issue #1022.
2014-12-20py: Remove unnecessary RULE_none and PN_none from parser.Damien George
2014-12-10py: Make functions static where appropriate.Damien George
2014-09-29py: Make macro names in assemblers consistent, and tidy up a bit.Damien George
2014-09-29py: In asmthumb, clean up unit/int types and ite ops.Damien George
2014-09-08py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files.Damien George
Towards resolving issue #50.
2014-08-15py: Allow viper to have type annotations.Damien George
Viper functions can now be annotated with the type of their arguments and return value. Eg: @micropython.viper def f(x:int) -> int: return x + 1
2014-07-17py, inline asm: Change "and" op name to "and_" to avoid keyword clash.Damien George
Addresses issue #753.
2014-06-21py: Include mpconfig.h before all other includes.Paul Sokolovsky
It defines types used by all other headers. Fixes #691.
2014-06-19Prefix ARRAY_SIZE with micropython prefix MP_Emmanuel Blot
2014-05-10py: Combine native emitters to 1 glue function; distinguish viper.Damien George
This patch simplifies the glue between native emitter and runtime, and handles viper code like inline assember: return values are converted to Python objects. Fixes issue #531.
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-04-27py: Implement keyword-only args.Damien George
Implements 'def f(*, a)' and 'def f(*a, b)', but not default keyword-only args, eg 'def f(*, a=1)'. Partially addresses issue #524.
2014-04-26Add ARRAY_SIZE macro, and use it where possible.Damien George
2014-04-21py: Add 'align' and 'data' meta-instructions to inline assembler.Damien George
2014-04-18inlinethumb: Add wfi, cpsid and cpsie instructions.Damien George
2014-04-13py: Remove unique_codes from emitglue.c. Replace with pointers.Damien George
Attempt to address issue #386. unique_code_id's have been removed and replaced with a pointer to the "raw code" information. This pointer is stored in the actual byte code (aligned, so the GC can trace it), so that raw code (ie byte code, native code and inline assembler) is kept only for as long as it is needed. In memory it's now like a tree: the outer module's byte code points directly to its children's raw code. So when the outer code gets freed, if there are no remaining functions that need the raw code, then the children's code gets freed as well. This is pretty much like CPython does it, except that CPython stores indexes in the byte code rather than machine pointers. These indices index the per-function constant table in order to find the relevant code.
2014-04-13py: Big improvements to inline assembler.Damien George
Improved the Thumb assembler back end. Added many more Thumb instructions to the inline assembler. Improved parsing of assembler instructions and arguments. Assembler functions can now be passed the address of any object that supports the buffer protocol (to get the address of the buffer). Added an example of how to sum numbers from an array in assembler.
2014-04-12py: Improve inline assembler; improve compiler constant folding.Damien George
2014-04-10py: Make labels unsigned ints (converted from int).Damien George
Labels should never be negative, and this modified type signature reflects that.
2014-04-08py: Improve inline assembler; add a few more opcodes.Damien George
2014-03-27py: Factor out code from runtime.c to emitglue.c.Damien George
2014-03-17py: Clean up includes.xbe
Remove unnecessary includes. Add includes that improve portability.
2014-02-22parse: Refactor parse node encoding to support full range of small ints.Paul Sokolovsky
Based on suggestion by @dpgeorge at https://github.com/micropython/micropython/pull/313
2014-02-12Replace global "static" -> "STATIC", to allow "analysis builds". Part 2.Paul Sokolovsky
2014-01-24py: Improve freeing of emitters in mp_compile.Damien George
There can be multiple emitters allocated during compile (eg byte code and native).
2014-01-21Revamp qstrs: they now include length and hash.Damien George
Can now have null bytes in strings. Can define ROM qstrs per port using qstrdefsport.h
2013-12-21Change object representation from 1 big union to individual structs.Damien
A big change. Micro Python objects are allocated as individual structs with the first element being a pointer to the type information (which is itself an object). This scheme follows CPython. Much more flexible, not necessarily slower, uses same heap memory, and can allocate objects statically. Also change name prefix, from py_ to mp_ (mp for Micro Python).
2013-11-03Implement more thumb branch instructions.Damien
2013-10-12Change ifdef/if defined to simple if's.Damien
2013-10-12Separate out mpy core and unix version.Damien
2013-10-06Make runtime able to call inline asm with 1 argument.Damien
2013-10-06Add b_n opcode to inline thumb asm.Damien
2013-10-06Almost supports arguments for inline asm functions.Damien
2013-10-05Add support for inline thumb assembly.Damien