From e9dac3b4d039997f446b6a615d580d284497d59b Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 29 Sep 2014 22:10:41 +0100 Subject: py: Add casting to viper; add native mem stores to viper. Viper can now do the following: def store(p:ptr8, c:int): p[0] = c This does a store of c to the memory pointed to by p using a machine instructions inline in the code. --- tests/micropython/viper_ptr8_store.py | 29 +++++++++++++++++++++++++++++ tests/micropython/viper_ptr8_store.py.exp | 4 ++++ 2 files changed, 33 insertions(+) create mode 100644 tests/micropython/viper_ptr8_store.py create mode 100644 tests/micropython/viper_ptr8_store.py.exp (limited to 'tests/micropython') diff --git a/tests/micropython/viper_ptr8_store.py b/tests/micropython/viper_ptr8_store.py new file mode 100644 index 000000000..fc24290c9 --- /dev/null +++ b/tests/micropython/viper_ptr8_store.py @@ -0,0 +1,29 @@ +# test ptr8 type + +@micropython.viper +def set(dest:ptr8, val:int): + dest[0] = val + +@micropython.viper +def memset(dest:ptr8, val:int, n:int): + for i in range(n): + dest[i] = val + +@micropython.viper +def memset2(dest_in, val:int): + dest = ptr8(dest_in) + n = int(len(dest_in)) + for i in range(n): + dest[i] = val + +b = bytearray(4) +print(b) + +set(b, 42) +print(b) + +memset(b, 43, len(b)) +print(b) + +memset2(b, 44) +print(b) diff --git a/tests/micropython/viper_ptr8_store.py.exp b/tests/micropython/viper_ptr8_store.py.exp new file mode 100644 index 000000000..30ca5b10e --- /dev/null +++ b/tests/micropython/viper_ptr8_store.py.exp @@ -0,0 +1,4 @@ +bytearray(b'\x00\x00\x00\x00') +bytearray(b'*\x00\x00\x00') +bytearray(b'++++') +bytearray(b',,,,') -- cgit v1.2.3