Skip to content
Snippets Groups Projects
  1. Mar 08, 2019
    • Damien George's avatar
      py: Add support to save native, viper and asm code to .mpy files. · 1396a026
      Damien George authored
      This commit adds support for saving and loading .mpy files that contain
      native code (native, viper and inline-asm).  A lot of the ground work was
      already done for this in the form of removing pointers from generated
      native code.  The changes here are mainly to link in qstr values to the
      native code, and change the format of .mpy files to contain native code
      blocks (possibly mixed with bytecode).
      
      A top-level summary:
      
      - @micropython.native, @micropython.viper and @micropython.asm_thumb/
        asm_xtensa are now allowed in .py files when compiling to .mpy, and they
        work transparently to the user.
      
      - Entire .py files can be compiled to native via mpy-cross -X emit=native
        and for the most part the generated .mpy files should work the same as
        their bytecode version.
      
      - The .mpy file format is changed to 1) specify in the header if the file
        contains native code and if so the architecture (eg x86, ARMV7M, Xtensa);
        2) for each function block the kind of code is specified (bytecode,
        native, viper, asm).
      
      - When native code is loaded from a .mpy file the native code must be
        modified (in place) to link qstr values in, just like bytecode (see
        py/persistentcode.c:arch_link_qstr() function).
      
      In addition, this now defines a public, native ABI for dynamically loadable
      native code generated by other languages, like C.
      1396a026
  2. Oct 13, 2018
  3. Oct 01, 2018
  4. Sep 27, 2018
  5. Sep 14, 2018
  6. Aug 16, 2018
  7. Aug 04, 2018
    • Damien George's avatar
      py/emitnative: Fix x86 native zero checks by comparing full word. · 10830059
      Damien George authored
      On x86 archs (both 32 and 64 bit) a bool return value only sets the 8-bit
      al register, and the higher bits of the ax register have an undefined
      value.  When testing the return value of such cases it is required to just
      test al for zero/non-zero.  On the other hand, checking for truth or
      zero/non-zero on an integer return value requires checking all bits of the
      register.  These two cases must be distinguished and handled correctly in
      generated native code.  This patch makes sure of this.
      
      For other supported native archs (ARM, Thumb2, Xtensa) there is no such
      distinction and this patch does not change anything for them.
      10830059
  8. Feb 24, 2018
  9. Jul 31, 2017
  10. Jul 18, 2017
  11. Dec 09, 2016
    • Damien George's avatar
      py/asm: Remove need for dummy_data when doing initial assembler passes. · 155fdc74
      Damien George authored
      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).
      155fdc74
  12. Nov 27, 2016
  13. Feb 15, 2016
  14. Oct 12, 2015
  15. Jun 04, 2015
  16. Apr 09, 2015
  17. Apr 07, 2015
    • Damien George's avatar
      py: Implement full func arg passing for native emitter. · 9988618e
      Damien George authored
      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.
      9988618e
  18. Apr 03, 2015
  19. Feb 13, 2015
  20. Jan 22, 2015
  21. Jan 14, 2015
  22. Jan 12, 2015
  23. Jan 01, 2015
  24. Oct 12, 2014
  25. Sep 29, 2014
  26. Sep 07, 2014
  27. Sep 03, 2014
  28. Jun 21, 2014
  29. May 07, 2014
  30. May 03, 2014
    • Damien George's avatar
      Add license header to (almost) all files. · 04b9147e
      Damien George authored
      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/.
      04b9147e
  31. Feb 12, 2014
Loading