<feed xmlns='http://www.w3.org/2005/Atom'>
<title>suspect-devices/circuitpython/py/emitinlinethumb.c, branch 0.8.4</title>
<subtitle>CircuitPython - a Python implementation for teaching coding with microcontrollers</subtitle>
<id>https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=0.8.4</id>
<link rel='self' href='https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=0.8.4'/>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/'/>
<updated>2016-12-09T10:23:17+00:00</updated>
<entry>
<title>py/emitinline: Move common code for end of final pass to compiler.</title>
<updated>2016-12-09T10:23:17+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-12-09T10:23:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=e920bab9768f71c7e22fcfc5af3e1c40f2db8eeb'/>
<id>urn:sha1:e920bab9768f71c7e22fcfc5af3e1c40f2db8eeb</id>
<content type='text'>
This patch moves some common code from the individual inline assemblers to
the compiler, the code that calls the emit-glue to assign the machine code
to the functions scope.
</content>
</entry>
<entry>
<title>py/emitinline: Move inline-asm align and data methods to compiler.</title>
<updated>2016-12-09T09:54:54+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-12-09T09:54:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=dd53b12193dca4800ab207170fcc883142dd0f22'/>
<id>urn:sha1:dd53b12193dca4800ab207170fcc883142dd0f22</id>
<content type='text'>
These are generic methods that don't depend on the architecture and so
can be handled directly by the compiler.
</content>
</entry>
<entry>
<title>py/emitinline: Embed entire asm struct instead of a pointer to it.</title>
<updated>2016-12-09T09:35:21+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-12-09T09:35:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=a7fd786a1f8a0bd13ec97d9742f8705b90cd1c46'/>
<id>urn:sha1:a7fd786a1f8a0bd13ec97d9742f8705b90cd1c46</id>
<content type='text'>
This reduces fragmentation, and memory use by 1 word.  But more
importantly it means the emit_inline_asm_t struct now "derives" from
mp_asm_base.
</content>
</entry>
<entry>
<title>py: Factor out common code from assemblers into asmbase.[ch].</title>
<updated>2016-11-27T22:24:50+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-11-27T22:24:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=612599587bef71e1deca9a77a8e2e16e69b045de'/>
<id>urn:sha1:612599587bef71e1deca9a77a8e2e16e69b045de</id>
<content type='text'>
All assemblers should "derive" from mp_asm_base_t.
</content>
</entry>
<entry>
<title>py/emitinlinethumb: Use qstrs instead of char* for names of asm ops.</title>
<updated>2016-02-23T15:20:39+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-02-23T15:20:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=28adab36c795691a9064495a18d44ebc69c5db64'/>
<id>urn:sha1:28adab36c795691a9064495a18d44ebc69c5db64</id>
<content type='text'>
Reduces code size by 112 bytes on Thumb2 arch, and makes assembler faster
because comparison can be a simple equals instead of a string compare.

Not all ops have been converted, only those that were simple to convert
and reduced code size.
</content>
</entry>
<entry>
<title>py/inlineasm: Add ability to specify return type of asm_thumb funcs.</title>
<updated>2016-01-27T14:27:10+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-01-15T15:20:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=8f54c08691faa3dd859852d211230fd7d9791abd'/>
<id>urn:sha1:8f54c08691faa3dd859852d211230fd7d9791abd</id>
<content type='text'>
Supported return types are: object, bool, int, uint.

For example:

@micropython.asm_thumb
def foo(r0, r1) -&gt; uint:
    add(r0, r0, r1)
</content>
</entry>
<entry>
<title>py/inlinethumb: Remove 30-bit restriction on movwt instruction.</title>
<updated>2016-01-07T16:34:11+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-01-07T14:54:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=ea8be373a975356808a19a79f1dd20383bec82ba'/>
<id>urn:sha1:ea8be373a975356808a19a79f1dd20383bec82ba</id>
<content type='text'>
movwt can now move a full 32-bit constant into a register.
</content>
</entry>
<entry>
<title>py/inlinethumb: Allow assembler to use big ints as args to instructions.</title>
<updated>2016-01-07T16:21:07+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2016-01-07T14:45:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=47dc5922cab047003acbdb404b9e151f343f9679'/>
<id>urn:sha1:47dc5922cab047003acbdb404b9e151f343f9679</id>
<content type='text'>
</content>
</entry>
<entry>
<title>py/emitinlinethumb: Add support for MRS instruction.</title>
<updated>2015-12-10T17:32:54+00:00</updated>
<author>
<name>Henrik Sölver</name>
<email>henrik.solver@gmail.com</email>
</author>
<published>2015-11-21T21:27:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=e242b1785f9e25b36f5d225652c679cd7cec6ec0'/>
<id>urn:sha1:e242b1785f9e25b36f5d225652c679cd7cec6ec0</id>
<content type='text'>
Only IPSR and BASEPRI special registers supported at the moment, but easy
to extend in the future.
</content>
</entry>
<entry>
<title>py: Change qstr_* functions to use size_t as the type for str len arg.</title>
<updated>2015-11-29T14:25:04+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2015-11-27T12:23:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=c3f64d9799cdf8af88087eebe6628e83d658405c'/>
<id>urn:sha1:c3f64d9799cdf8af88087eebe6628e83d658405c</id>
<content type='text'>
</content>
</entry>
</feed>
