Commit Graph

4137 Commits

Author SHA1 Message Date
Damien
6d4f3462c4 Viper: function calls now convert constant arguments to objects. 2013-11-16 20:44:39 +00:00
Damien
6b92d451b2 Add len and subscr (a hack) support for strings. 2013-11-09 20:13:55 +00:00
Damien
94658e2e25 Add JUMP_IF_x_OR_POP opcodes to VM. 2013-11-09 20:12:32 +00:00
Damien
f3822fc34c Fix but with optimised range being 1 over. 2013-11-09 20:12:03 +00:00
Damien
f72fd0e875 Add optimisation for "for x in range". 2013-11-06 20:20:49 +00:00
Damien
5bf32c3b6b Built-in print function supports variable number of arguments. 2013-11-06 17:16:35 +00:00
Damien
ae0bc08a37 Viper supports inplace add (trivial). 2013-11-06 17:11:07 +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
6addc89e55 Byte code for SMALL_INT uses 3 bytes for integer. 2013-11-04 23:04:50 +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
9b9e996df6 Support for for-loop in native thumb. 2013-11-03 14:25:43 +00:00
Damien
1a6633a74d Implement more thumb branch instructions. 2013-11-03 13:58:19 +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
d2c1a732e5 Call gc_free in gc_realloc after allocating new block. 2013-10-23 21:03:27 +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
92c06561a3 Improve REPL compount statement detection. 2013-10-22 22:32:27 +01:00
Damien
bb5316b905 gc: reserve first block; lexer: free vstr. 2013-10-22 21:12:29 +01:00
Damien
fd8b6bcf55 Add gc_free function to force a block to be freed. 2013-10-22 20:26:36 +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
eefcc79022 Clear ATBs on gc_init; better gc_info. 2013-10-22 15:25:25 +01:00
Damien
dcced92c26 Add mark-sweep garbage collector. 2013-10-21 23:45:08 +01:00
Damien
fa2162bc77 Integrate new lexer stream with stm framework. 2013-10-20 17:42:00 +01:00
Damien
27fb45eb1c Add local_num skeleton framework to deref/closure emit calls. 2013-10-20 15:07:49 +01:00
Damien
a5185f4bc8 Abstract out back-end stream functionality from lexer. 2013-10-20 14:41:27 +01:00
Damien
68f59a96e3 Add vstr and its functions. 2013-10-20 14:39:58 +01:00
Damien
df4b4f31ef Make grammar rules const so the go in .text section. 2013-10-19 18:28:01 +01:00
Damien
4d7adce9c5 Remove obsolete emitthumb.c (now use emitnative.c). 2013-10-19 18:17:12 +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
7bbd110691 Remove line in emitbc.c to print code size. 2013-10-18 19:57:17 +01:00
Damien
3997be444c Add single_input rule to grammar, for REPL. 2013-10-18 19:56:48 +01:00
Damien
9f770c658f Fix up insertion of newline at end of lexer stream. 2013-10-18 19:54:31 +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
5fd09668b7 Add MAP_ADD opcode to VM. 2013-10-16 20:54:01 +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
152568bcb6 NLR and Python exceptions work on the board. 2013-10-16 00:46:39 +01:00
Damien
c9f91976e1 Crude try-except working. 2013-10-15 23:46:01 +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
0efb3a1b66 Tidy up SMALL_INT optimisations and CPython compatibility. 2013-10-12 16:16:56 +01:00
Damien
3a205179ea Option in compile.c to emit compatible or not with CPython. 2013-10-12 15:01:56 +01:00
Damien
c025ebb2dc Separate out mpy core and unix version. 2013-10-12 14:30:21 +01:00
Damien
a56f292626 Remove obsolete emitx64.c (now in emitnative.c). 2013-10-10 23:30:29 +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
5609cca2ce Rename vm.h to bc.h. 2013-10-10 20:00:08 +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
91d387de7d Improve indent/dedent error checking and reporting. 2013-10-09 15:09:52 +01:00
Damien
ff8ed77cc1 Improve push/pop and register usage for native emit. 2013-10-08 22:18:32 +01:00
Damien
13ed3a658d Native Python and Viper support for x64 and thumb all together. 2013-10-08 09:05:10 +01:00
Damien
3410be8035 Merge viper types with standard native emitter. 2013-10-07 23:09:10 +01:00
Damien
acbf9a50d0 Rename r64->reg, i64->imm. 2013-10-07 21:52:14 +01:00
Damien
016f75f434 Add comments. 2013-10-07 21:22:39 +01:00
Damien
7af3d19a3c Implement crude viper emit stage. 2013-10-07 00:02:49 +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
03d4124320 Add b_n opcode to inline thumb asm. 2013-10-06 00:36:05 +01:00
Damien
b14de21fc8 Optimise typedargslist_name to not create a node if just an id. 2013-10-06 00:28:28 +01:00
Damien
a2f2f7db1f Almost supports arguments for inline asm functions. 2013-10-06 00:14:13 +01:00
Damien
5fa5ae40be Make range of small int 24 bits. 2013-10-06 00:13:15 +01:00
Damien
39cf3285c7 Oops: add emitpass1.c for new factorised emit code. 2013-10-05 23:18:38 +01:00
Damien
826005c60b Add support for inline thumb assembly. 2013-10-05 23:17:28 +01:00
Damien
5bfb759980 Incorporate emit_thumb into new emit framework. 2013-10-05 18:41:24 +01:00
Damien
6cdd3af601 Implement built-in decorators to select emit type. 2013-10-05 18:08:26 +01:00
Damien
4b03e77d4a Factorise EMIT_COMMON calls, mostly into emit_pass1. 2013-10-05 14:17:09 +01:00
Damien
054848a1b8 Compiler computes labels and max_num_labels. 2013-10-05 13:44:41 +01:00
Damien
b05d707b23 Further factorise PASS_1 out of specific emit code. 2013-10-05 13:37:10 +01:00
Damien
415eb6f850 Restructure emit so it goes through a method table. 2013-10-05 12:19:06 +01:00
Damien
492d082455 Use macro EMIT_COMMON for emit_common calls. 2013-10-04 20:35:08 +01:00
Damien
d69adc19c7 Small fixes to Makefile. 2013-10-04 20:34:47 +01:00
Damien
429d71943d Initial commit. 2013-10-04 19:53:11 +01:00