Commit Graph

1547 Commits

Author SHA1 Message Date
Paul Sokolovsky 263853ef84 modffi: Update for latest binary API refactors. 2014-04-11 05:17:41 +03:00
Paul Sokolovsky 0c43cf9154 modstruct: Basic implementation of native struct alignment and types. 2014-04-11 03:59:16 +03:00
Paul Sokolovsky ef9124f5ff binary: Rename array accessors for clarity. 2014-04-11 03:58:49 +03:00
Paul Sokolovsky 2da81fa80c mpconfig.h: Add basic support for target endianness configuration.
A specific target can define either MP_ENDIANNESS_LITTLE or MP_ENDIANNESS_BIG
to 1. Default is MP_ENDIANNESS_LITTLE.

TODO: Autodetect based on compiler predefined macros?
2014-04-11 03:58:49 +03:00
Paul Sokolovsky 6582d64d01 modstruct: Refactor to support both LE and BE packed structs. 2014-04-11 03:58:49 +03:00
Damien George 2b9419b5bf Merge pull request #460 from lurch/patch-2
Update .gitignore
2014-04-10 22:52:10 +01:00
Damien George 037b3e0e21 Merge pull request #458 from lurch/patch-1
Tweak pybcdc.inf to match recent changes to pybcdc.h
2014-04-10 22:51:48 +01:00
Damien George 3f4898456b stmhal: Add stm module, which contains some constants for the MCU.
Also contains raw memory read/write functions, read8, read16, read32,
write8, write16, write32.  Can now do:

stm.write16(stm.GPIOA + stm.GPIO_BSRRL, 1 << 13)

This turns on the red LED.

With the new constant folding, the above constants for the GPIO address
are actually compiled to constants (and the addition done) at compile
time.  For viper code and inline assembler, this optimisation will make
a big difference.  In the inline assembler, using these constants would
not be possible without this constant folding.
2014-04-10 22:46:40 +01:00
Damien George 57e99ebc86 py: Add simple way of looking up constants in compiler.
Working towards trying to support compile-time constants (see discussion
in issue #227), this patch allows the compiler to look inside arbitrary
uPy objects at compile time.  The objects to search are given by the
macro MICROPY_EXTRA_CONSTANTS (so they must be constant/ROM objects),
and the constant folding occures on forms base.attr (both base and attr
must be id's).

It works, but it breaks strict CPython compatibility, since the lookup
will succeed even without importing the namespace.
2014-04-10 22:42:11 +01:00
Andrew Scheller 4391c8f38e Update .gitignore
Add test failure logs
2014-04-10 22:32:04 +01:00
Damien George ae491055fa py: Fix float/complex binop returning NULL; implement complex power. 2014-04-10 20:08:11 +01:00
Damien George f31b6ff334 tests: Add test for multi-comparison. 2014-04-10 17:29:51 +00:00
Damien George d66ae18640 py: Simplify stack get/set to become stack adjust in emitters.
Can do this now that the stack size calculation is improved.
2014-04-10 17:28:54 +00:00
Damien George 069a35e3a5 py, compiler: Improve stack depth counting.
Much less of a hack now.  Hopefully it's correct!
2014-04-10 17:22:19 +00:00
Damien George 190d1ba297 py: Make sure state/stack of byte code function has at least 1 slot. 2014-04-10 16:59:56 +00:00
Damien George a1ef441d18 py: Fix VM stack overflow detection. 2014-04-10 16:59:44 +00:00
Damien George e90be0ddf5 py: Add option to VM to detect stack overflow. 2014-04-10 16:21:34 +00:00
Damien George c90717a3e4 py: Add missing dummy functions to pass 1 emitter. 2014-04-10 15:40:38 +00:00
Damien George 58ba4c3b4c py: Check explicitly for memory allocation failure in parser.
Previously, a failed malloc/realloc would throw an exception, which was
not caught.  I think it's better to keep the parser free from NLR
(exception throwing), hence this patch.
2014-04-10 14:27:31 +00:00
Damien George ffa9bddfc4 Make lexerunix not allocate RAM for the entire script.
Now reads in small chunks at a time.
2014-04-10 15:00:58 +01:00
Damien George f0954e3fac py: Add emergency exception object for when heap allocation fails. 2014-04-10 14:38:25 +01:00
Damien George 6f355fd3b9 py: Make labels unsigned ints (converted from int).
Labels should never be negative, and this modified type signature
reflects that.
2014-04-10 14:11:31 +01:00
Damien George bf8ae4d96e py: Fix modstruct to compile on 64-bit machine. 2014-04-10 13:53:31 +01:00
Damien George 3a8b1607fc Merge branch 'master' of github.com:micropython/micropython 2014-04-10 12:58:31 +01:00
Damien George 635543c72c py, compiler: Implement compiling of relative imports. 2014-04-10 12:56:52 +01:00
Damien George 2e9eb2d207 py: Fix lexer so it doesn't allow ! and .. 2014-04-10 12:19:33 +01:00
Damien George 175cecfa87 py: Make form-feed character a space (following C isspace).
Eg, in CPython stdlib, email/header.py has a form-feed character.
2014-04-10 11:39:36 +01:00
Damien George a91f41407b py, lexer: Fix parsing of raw strings (allow escaping of quote). 2014-04-10 11:30:55 +01:00
Damien George f22626ee4f unix: Add option to only compile, and not execute code. 2014-04-10 11:30:35 +01:00
Paul Sokolovsky 978607aeff objfun: Fix default arguments filling loop, was broken in presense of kwargs. 2014-04-10 05:39:38 +03:00
Paul Sokolovsky 41e2dea4ca objfun: More debug logging when calling a bytecode function. 2014-04-10 05:37:58 +03:00
Andrew Scheller fec6f018ee Tweak pybcdc.inf to match recent changes to pybcdc.h 2014-04-10 02:07:55 +01:00
Paul Sokolovsky e9db840480 py: Start implementing "struct" module.
Only calcsize() and unpack() functions provided so far, for little-endian
byte order. Format strings don't support repition spec (like "2b3i").

Unfortunately, dealing with all the various binary type sizes and alignments
will lead to quite a bloated "binary" helper functions  - if optimizing for
speed. Need to think if using dynamic parametrized algos makes more sense.
2014-04-10 03:58:03 +03:00
Paul Sokolovsky acb133d1b1 makeqstrdata.py: Add support for conditionally defined qstrs.
Syntax is usual C #if*/#endif, but each qstr must be wrapped individually.
2014-04-10 03:38:42 +03:00
Paul Sokolovsky 881d9af05e objstr: Add TODO-optimize for using .join with arbitrary iterable. 2014-04-10 01:42:40 +03:00
Damien George 87bb093eb6 Merge branch 'master' of github.com:micropython/micropython 2014-04-09 23:31:30 +01:00
Damien George 7a5f9e94ad stmhal: Make /src/main.py just /main.py; allow SD to be used as root device. 2014-04-09 23:30:34 +01:00
Damien George 1d2ba5ddf9 Merge pull request #455 from lurch/exception-messages
Remove exception name from inside the exception message
2014-04-09 20:49:35 +01:00
Damien George 038fd52faa Merge branch 'str-index' of github.com:xbe/micropython into xbe-str-index 2014-04-09 20:44:37 +01:00
Damien George 5589db88c7 py: Implement complex division. 2014-04-09 20:21:00 +01:00
Damien George e2835c16f4 py: Oops, fix emitcpy to compile with latest changes. 2014-04-09 20:20:34 +01:00
Andrew Scheller f78cfaf8b5 Remove exception name from inside the exception message
This prevents micropython printing exception messages like
ImportError: ImportError: No module named 'foo'
2014-04-09 19:56:38 +01:00
Damien George b5fbd0ba87 py: Add mp_obj_is_integer; make mp_get_index check for long int.
mp_obj_is_integer should be used to check if an object is of integral
type.  It returns true for bool, small int and long int.
2014-04-09 19:55:33 +01:00
Damien George d99944acdd py: Clear state to MP_OBJ_NULL before executing byte code. 2014-04-09 19:53:31 +01:00
Damien George a157e4caba py: str.join can now take arbitrary iterable as argument. 2014-04-09 19:17:53 +01:00
Damien George 13d6739cc7 py: Generators can have their locals closed over. 2014-04-09 19:01:45 +01:00
Damien George 2bf7c09222 py: Properly implement deletion of locals and derefs, and detect errors.
Needed to reinstate 2 delete opcodes, to specifically check that a local
is not deleted twice.
2014-04-09 15:26:46 +01:00
Damien George 11d8cd54c9 py, compiler: Turn id_info_t.param into a set of flags.
So we can add more flags.
2014-04-09 14:42:51 +01:00
Damien George b140bff877 py, compile: Simplify initialisation of compiler structure. 2014-04-09 12:54:21 +01:00
Damien George 02a4c05c5f py, compile: Reduce size of compiler structure. 2014-04-09 12:50:58 +01:00