Commit Graph

301 Commits

Author SHA1 Message Date
Damien d99b05282d Change object representation from 1 big union to individual structs.
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-12-21 18:17:45 +00:00
Damien a3dcd9e80c py: add more Python built-in functions. 2013-12-17 21:35:38 +00:00
Damien 660365e14c py: split runtime into map, obj, builtin. 2013-12-17 18:27:24 +00:00
Damien 9ecbcfff99 py: work towards working closures. 2013-12-11 00:41:43 +00:00
Damien db4c361f1c py: add skeletal import functionality. 2013-12-10 17:27:24 +00:00
Damien 033d17a633 py: built-in range now accepts variable number of arguments. 2013-11-28 19:22:56 +00:00
Damien 86c7fc7dd9 py: add list pop and sort, unpack_sequence, and keywords in method_call. 2013-11-26 15:16:41 +00:00
Damien d47f9d5a4f py: add call to __init__ when instantiating class object. 2013-11-25 23:40:02 +00:00
Damien f03001f8a6 Add function to decode and show byte code. 2013-11-17 13:19:33 +00:00
Damien 0446a0d76d Change some debugging/output messages for native code generation. 2013-11-17 13:16:36 +00:00
Damien 6b92d451b2 Add len and subscr (a hack) support for strings. 2013-11-09 20:13:55 +00:00
Damien 5bf32c3b6b Built-in print function supports variable number of arguments. 2013-11-06 17:16:35 +00:00
Damien 40fdfe3000 Improve allocation of stack for byte code. 2013-11-05 22:16:22 +00:00
Damien 03c9cfb015 Make byte code jumps relative. 2013-11-05 22:06:08 +00:00
Damien 96a0addb18 Fixup include of stdarg and va_list definition. 2013-11-03 18:30:10 +00:00
Damien 2f06c57f8a Add simple var-arg functions; add simple string.format. 2013-11-03 18:20:56 +00:00
Damien 33af3bf028 Change Py API names, py_get_* -> py_obj_get_*. 2013-11-03 14:39:47 +00:00
Damien d57eba51e5 Add user object to runtime. 2013-11-02 23:58:14 +00:00
Damien 6ba1314265 Fix bug: emit native didn't clear last_was_return in label_assign. 2013-11-02 20:34:54 +00:00
Damien 7410e440ab Add basic complex number support. 2013-11-02 19:47:57 +00:00
Damien e0b1864337 Small hack to temporarily fix allocation of unique_code slots. 2013-11-02 16:41:24 +00:00
Damien ccfc9c51ba Py runtime: list.append returns None. 2013-11-02 15:10:37 +00:00
Damien 4ebb32fb95 Implement: str.join, more float support, ROT_TWO in VM. 2013-11-02 14:33:10 +00:00
Damien 2839168340 Add py_get_array_fixed_n function. 2013-10-25 00:40:38 +01:00
Damien 6f08f8ce51 Add working MMA support. 2013-10-23 22:17:26 +01:00
Damien 8b3a7c2237 Fix func decls with no arguments: () -> (void). 2013-10-23 20:20:17 +01:00
Damien 9fc7933ff2 Add py_get_qstr. 2013-10-23 00:01:10 +01:00
Damien ec63cce470 Add simple support for C modules. 2013-10-22 22:58:17 +01:00
Damien 7b2d3f38ce Implement some more operators, mostly for small ints. 2013-10-22 16:53:02 +01:00
Damien f086ecf57c Shrink py_obj_base_t size to 4 machine words. 2013-10-22 16:05:11 +01:00
Damien df4b4f31ef Make grammar rules const so the go in .text section. 2013-10-19 18:28:01 +01:00
Damien 1595f3257e Make rt_fun_table const, so it goes in .text section. 2013-10-19 15:09:32 +01:00
Damien 5ac1b2efbd Implement REPL. 2013-10-18 19:58:12 +01:00
Damien d2755ec538 Add iterators and comprehension to emitnative. 2013-10-16 23:58:48 +01:00
Damien c12aa468a1 Add SET_ADD opcode to VM. 2013-10-16 20:57:49 +01:00
Damien bd25445a82 Implement BC & runtime support for generator/yielding. 2013-10-16 20:39:12 +01:00
Damien c226dca1f7 Support tuples and list comprehension, albeit crude. 2013-10-16 16:12:52 +01:00
Damien ce89a21ea4 Implement basic exception framework, and simple for loop. 2013-10-15 22:25:17 +01:00
Damien 3ef4abb446 Change ifdef/if defined to simple if's. 2013-10-12 16:53:13 +01:00
Damien c025ebb2dc Separate out mpy core and unix version. 2013-10-12 14:30:21 +01:00
Damien a1ddfcc213 Wrap out-native code in preprocessor declarations. 2013-10-10 23:25:50 +01:00
Damien eb19efb27e Simplify and improve function & method calling. 2013-10-10 22:06:54 +01:00
Damien 7f5dacf345 Implement basic class/object in native code. 2013-10-10 11:24:39 +01:00
Damien a397776d6b Implement basic class/object functionality in runtime. 2013-10-09 23:10:10 +01:00
Damien 13ed3a658d Native Python and Viper support for x64 and thumb all together. 2013-10-08 09:05:10 +01:00
Damien e4af64f307 Functions to convert values to/from inline asm. 2013-10-06 12:04:13 +01:00
Damien dc83382903 Make runtime able to call inline asm with 1 argument. 2013-10-06 01:01:01 +01:00
Damien 826005c60b Add support for inline thumb assembly. 2013-10-05 23:17:28 +01:00
Damien 6cdd3af601 Implement built-in decorators to select emit type. 2013-10-05 18:08:26 +01:00
Damien b05d707b23 Further factorise PASS_1 out of specific emit code. 2013-10-05 13:37:10 +01:00
Damien 429d71943d Initial commit. 2013-10-04 19:53:11 +01:00