| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2016-02-23 | py/emitinlinethumb: Use qstrs instead of char* for names of asm ops. | Damien George | |
| Reduces code size by 112 bytes on Thumb2 arch, and makes assembler faster because comparison can be a simple equals instead of a string compare. Not all ops have been converted, only those that were simple to convert and reduced code size. | |||
| 2016-01-27 | py/inlineasm: Add ability to specify return type of asm_thumb funcs. | Damien George | |
| Supported return types are: object, bool, int, uint. For example: @micropython.asm_thumb def foo(r0, r1) -> uint: add(r0, r0, r1) | |||
| 2016-01-07 | py/inlinethumb: Remove 30-bit restriction on movwt instruction. | Damien George | |
| movwt can now move a full 32-bit constant into a register. | |||
| 2016-01-07 | py/inlinethumb: Allow assembler to use big ints as args to instructions. | Damien George | |
| 2015-12-10 | py/emitinlinethumb: Add support for MRS instruction. | Henrik Sölver | |
| Only IPSR and BASEPRI special registers supported at the moment, but easy to extend in the future. | |||
| 2015-11-29 | py: Change qstr_* functions to use size_t as the type for str len arg. | Damien George | |
| 2015-11-13 | py: Add constant table to bytecode. | Damien George | |
| Contains just argument names at the moment but makes it easy to add arbitrary constants. | |||
| 2015-11-13 | py: Put all bytecode state (arg count, etc) in bytecode. | Damien George | |
| 2015-11-09 | py/emitinlinethumb: Allow to compile with -Wsign-compare. | Damien George | |
| 2015-10-31 | py: In inline asm, vldr and vstr offsets now in bytes not words. | adminpete | |
| As per ARM convention. | |||
| 2015-10-19 | py: Add lsl/lsr/asr opcode support to inline Thumb2 assembler. | Damien George | |
| 2015-10-16 | py: Add option for inline assembler to support ARMv7-M instructions. | Damien George | |
| Cortex-M0, M0+ and M1 only have ARMv6-M Thumb/Thumb2 instructions. M3, M4 and M7 have a superset of these, named ARMv7-M. This patch adds a config option to enable support of the superset of instructions. | |||
| 2015-04-19 | py/inlinethumb: Support for core floating point instructions. | = | |
| Adds support for the following Thumb2 VFP instructions, via the option MICROPY_EMIT_INLINE_THUMB_FLOAT: vcmp vsqrt vneg vcvt_f32_to_s32 vcvt_s32_to_f32 vmrs vmov vldr vstr vadd vsub vmul vdiv | |||
| 2015-04-16 | py: Add %q format support to mp_[v]printf, and use it. | Damien George | |
| 2015-04-11 | py: In emitinlinethumb, use qstr_data instead of qstr_str and strlen. | Damien George | |
| 2015-04-07 | py: 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-03-03 | py: In inline assembler, reset labels on code-size pass. | Damien George | |
| 2015-03-03 | py: Give error for duplicate label in inline assembler. | Damien George | |
| 2015-03-02 | py: For inline assembler, add bcc_n and bcc_w ops. | Damien George | |
| Addresses issue #1143. | |||
| 2015-02-25 | py: Make inline assembler raise exception when branch not in range. | Damien George | |
| Addresses issue #1132. | |||
| 2015-02-24 | py: In inline assembler, add return statement to fix flow logic. | Damien George | |
| 2015-02-24 | py: Factor some code in inline thumb assembler to reduce code size. | Damien George | |
| 2015-02-24 | py: Make more asmthumb functions inline to reduce code size. | Damien George | |
| 2015-02-24 | py: Reduce code size of inline thumb assembler by using static tables. | Damien George | |
| Reduces stmhal by about 300 bytes ROM. | |||
| 2015-02-16 | py: Implement bl/bx instructions for inline Thumb assembler. | Damien George | |
| 2015-02-16 | py: Implement "it" instruction for inline Thumb assembler. | Damien George | |
| 2015-02-13 | py: Implement clz and rbit for inline Thumb assembler. | Damien George | |
| 2015-02-13 | py: Implement sdiv/udiv for inline Thumb assembler. | Damien George | |
| 2015-02-13 | py: Implement push/pop for inline Thumb assembler. | Damien George | |
| 2015-02-13 | py: Make inline assembler raise proper SyntaxError exception on error. | Damien George | |
| Also gives line number of location of error. Very useful! | |||
| 2015-02-12 | py: Add ldrex and strex to thumb2 inline assembler. | Damien George | |
| These are useful for implementing atomic lock operations. | |||
| 2015-01-01 | py: Move to guarded includes, everywhere in py/ core. | Damien George | |
| Addresses issue #1022. | |||
| 2014-12-20 | py: Remove unnecessary RULE_none and PN_none from parser. | Damien George | |
| 2014-12-10 | py: Make functions static where appropriate. | Damien George | |
| 2014-09-29 | py: Make macro names in assemblers consistent, and tidy up a bit. | Damien George | |
| 2014-09-29 | py: In asmthumb, clean up unit/int types and ite ops. | Damien George | |
| 2014-09-08 | py: Convert [u]int to mp_[u]int_t in emit.h and associated .c files. | Damien George | |
| Towards resolving issue #50. | |||
| 2014-08-15 | py: 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-17 | py, inline asm: Change "and" op name to "and_" to avoid keyword clash. | Damien George | |
| Addresses issue #753. | |||
| 2014-06-21 | py: Include mpconfig.h before all other includes. | Paul Sokolovsky | |
| It defines types used by all other headers. Fixes #691. | |||
| 2014-06-19 | Prefix ARRAY_SIZE with micropython prefix MP_ | Emmanuel Blot | |
| 2014-05-10 | py: 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-07 | py, compiler: Improve passes; add an extra pass for native emitter. | Damien George | |
| 2014-05-03 | Add 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-27 | py: 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-26 | Add ARRAY_SIZE macro, and use it where possible. | Damien George | |
| 2014-04-21 | py: Add 'align' and 'data' meta-instructions to inline assembler. | Damien George | |
| 2014-04-18 | inlinethumb: Add wfi, cpsid and cpsie instructions. | Damien George | |
| 2014-04-13 | py: 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-13 | py: 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. | |||
