mirror of
https://github.com/micropython/micropython.git
synced 2026-01-04 11:10:14 +01:00
Some checks failed
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_c2_c6) (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb_hardfp) (push) Has been cancelled
qemu port / build_and_test_arm (thumb_softfp) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
qemu port / build_and_test_rv64 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / longlong (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / gil_enabled (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / repr_b (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, true, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, true, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
With the aim of getting consistency, and removing the need to learn an additional term, replace uses of uPy/uPython with MPy/MicroPython. Rule of thumb was to use "MPy" abbreviation where "CPy" is used nearby, but the full word MicroPython otherwise. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
74 lines
3.0 KiB
ReStructuredText
74 lines
3.0 KiB
ReStructuredText
.. _asm_thumb2_index:
|
|
|
|
Inline assembler for Thumb2 architectures
|
|
=========================================
|
|
|
|
This document assumes some familiarity with assembly language programming and should be read after studying
|
|
the :ref:`tutorial <pyboard_tutorial_assembler>`. For a detailed description of the instruction set consult the
|
|
Architecture Reference Manual detailed below.
|
|
The inline assembler supports a subset of the ARM Thumb-2 instruction set described here. The syntax tries
|
|
to be as close as possible to that defined in the above ARM manual, converted to Python function calls.
|
|
|
|
Instructions operate on 32 bit signed integer data except where stated otherwise. Most supported instructions
|
|
operate on registers ``R0-R7`` only: where ``R8-R15`` are supported this is stated. Registers ``R8-R12`` must be
|
|
restored to their initial value before return from a function. Registers ``R13-R15`` constitute the Link Register,
|
|
Stack Pointer and Program Counter respectively.
|
|
|
|
Document conventions
|
|
--------------------
|
|
|
|
Where possible the behaviour of each instruction is described in Python, for example
|
|
|
|
* add(Rd, Rn, Rm) ``Rd = Rn + Rm``
|
|
|
|
This enables the effect of instructions to be demonstrated in Python. In certain case this is impossible
|
|
because Python doesn't support concepts such as indirection. The pseudocode employed in such cases is
|
|
described on the relevant page.
|
|
|
|
Instruction categories
|
|
----------------------
|
|
|
|
The following sections details the subset of the ARM Thumb-2 instruction set supported by MicroPython.
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
:numbered:
|
|
|
|
asm_thumb2_mov.rst
|
|
asm_thumb2_ldr.rst
|
|
asm_thumb2_str.rst
|
|
asm_thumb2_logical_bit.rst
|
|
asm_thumb2_arith.rst
|
|
asm_thumb2_compare.rst
|
|
asm_thumb2_label_branch.rst
|
|
asm_thumb2_stack.rst
|
|
asm_thumb2_misc.rst
|
|
asm_thumb2_float.rst
|
|
asm_thumb2_directives.rst
|
|
|
|
Usage examples
|
|
--------------
|
|
|
|
These sections provide further code examples and hints on the use of the assembler.
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
:numbered:
|
|
|
|
asm_thumb2_hints_tips.rst
|
|
|
|
References
|
|
----------
|
|
|
|
- :ref:`Assembler Tutorial <pyboard_tutorial_assembler>`
|
|
- `Wiki hints and tips
|
|
<http://wiki.micropython.org/platforms/boards/pyboard/assembler>`__
|
|
- `MicroPython Inline Assembler source-code,
|
|
emitinlinethumb.c <https://github.com/micropython/micropython/blob/master/py/emitinlinethumb.c>`__
|
|
- `ARM Thumb2 Instruction Set Quick Reference
|
|
Card <http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf>`__
|
|
- `RM0090 Reference
|
|
Manual <http://www.google.ae/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&sqi=2&ved=0CBoQFjAA&url=http%3A%2F%2Fwww.st.com%2Fst-web-ui%2Fstatic%2Factive%2Fen%2Fresource%2Ftechnical%2Fdocument%2Freference_manual%2FDM00031020.pdf&ei=G0rSU66xFeuW0QWYwoD4CQ&usg=AFQjCNFuW6TgzE4QpahO_U7g3f3wdwecAg&sig2=iET-R0y9on_Pbflzf9aYDw&bvm=bv.71778758,bs.1,d.bGQ>`__
|
|
- ARM v7-M Architecture Reference Manual (Available on the
|
|
ARM site after a simple registration procedure. Also available on academic sites but beware of out of date versions.)
|