<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://home.roboticlab.eu/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://home.roboticlab.eu/feed.php">
        <title>Robotic &amp; Microcontroller Educational Knowledgepage - Network of Excellence</title>
        <description></description>
        <link>https://home.roboticlab.eu/</link>
        <image rdf:resource="https://home.roboticlab.eu/_media/wiki/logo.png" />
       <dc:date>2026-10-14T23:26:06+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm9?rev=1791840576&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm6?rev=1791839106&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm4?rev=1791838931&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm2?rev=1791838569&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/start?rev=1791837795&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/?image=en%3Amultiasm%3Aexercisesbook%3Aarm%3Asut%3Ascreenshotgdb.png&amp;ns=en%3Amultiasm%3Aexercisesbook%3Aarm%3Asut&amp;rev=1791834720&amp;tab_details=history&amp;media_do=diff&amp;do=media"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/et/iot/examples/quickstart?rev=1791810085&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/iot/examples/quickstart?rev=1791810031&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/remotelab?rev=1791799643&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/start?rev=1791797914&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu?rev=1791797646&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab12?rev=1791797631&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab11?rev=1791797630&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab10?rev=1791797587&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab09?rev=1791797586&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab08?rev=1791797549&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab07?rev=1791797548&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab06?rev=1791797520&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab05?rev=1791797519&amp;do=diff"/>
                <rdf:li rdf:resource="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab04?rev=1791797488&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://home.roboticlab.eu/_media/wiki/logo.png">
        <title>Robotic & Microcontroller Educational Knowledgepage - Network of Excellence</title>
        <link>https://home.roboticlab.eu/</link>
        <url>https://home.roboticlab.eu/_media/wiki/logo.png</url>
    </image>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm9?rev=1791840576&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T21:29:36+00:00</dc:date>
        <dc:creator>at312466 (at312466@undisclosed.example.com)</dc:creator>
        <title>ARM 9: Creating dynamic libraries</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm9?rev=1791840576&amp;do=diff</link>
        <description>ARM 9: Creating dynamic libraries

As shown in ARM 2: Calling C functions from Assembly, one can link object files from assembly sources against the C standard library in order to use some common functions. It is also possible to create custom dynamic libraries (shared objects) from both C and assembly sources.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm6?rev=1791839106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T21:05:06+00:00</dc:date>
        <dc:creator>at312466 (at312466@undisclosed.example.com)</dc:creator>
        <title>ARM 6: Reading current time from system</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm6?rev=1791839106&amp;do=diff</link>
        <description>ARM 6: Reading current time from system

In this scenario, you will ask the operating system for the current time using a syscall, passing it a pointer to a structure allocated on the stack.

 Prerequisites 

Know about UNIX time format. 

 Scenario</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm4?rev=1791838931&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T21:02:11+00:00</dc:date>
        <dc:creator>at312466 (at312466@undisclosed.example.com)</dc:creator>
        <title>ARM 4: Conditionally Executed Instructions</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm4?rev=1791838931&amp;do=diff</link>
        <description>ARM 4: Conditionally Executed Instructions

While technically conditional branches are a subset of all conditionally executed instructions, they will be omitted in this scenario. Instead, emphasis will be laid on conditional set, select and compare.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm2?rev=1791838569&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T20:56:09+00:00</dc:date>
        <dc:creator>at312466 (at312466@undisclosed.example.com)</dc:creator>
        <title>ARM 2: Calling C functions from Assembly</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/scenarios/arm2?rev=1791838569&amp;do=diff</link>
        <description>ARM 2: Calling C functions from Assembly

Programs written entirely in assembly are rarely seen today. For the sake of convenience, external libraries written in other languages can be linked against your assembly sources. Similarly, it is also possible to create a library from your assembly files so that you can use it in other languages as well.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/start?rev=1791837795&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T20:43:15+00:00</dc:date>
        <dc:creator>at312466 (at312466@undisclosed.example.com)</dc:creator>
        <title>Programming for ARM in GNU assembly prerequisites and introduction - [Debugging] </title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/sut/start?rev=1791837795&amp;do=diff</link>
        <description>Programming for ARM in GNU assembly prerequisites and introduction

Sections

Program in assembly consists as usually of sections, which are pieces of code or data that are then managed by the linker during ELF executable creation, and by the OS loader during program startup.
Program may consist of multiple sections, they are defined with:</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/?image=en%3Amultiasm%3Aexercisesbook%3Aarm%3Asut%3Ascreenshotgdb.png&amp;ns=en%3Amultiasm%3Aexercisesbook%3Aarm%3Asut&amp;rev=1791834720&amp;tab_details=history&amp;media_do=diff&amp;do=media">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T19:52:00+00:00</dc:date>
        <dc:creator>at312466 (at312466@undisclosed.example.com)</dc:creator>
        <title>screenshotgdb.png - created</title>
        <link>https://home.roboticlab.eu/?image=en%3Amultiasm%3Aexercisesbook%3Aarm%3Asut%3Ascreenshotgdb.png&amp;ns=en%3Amultiasm%3Aexercisesbook%3Aarm%3Asut&amp;rev=1791834720&amp;tab_details=history&amp;media_do=diff&amp;do=media</link>
        <description>&lt;img src=&quot;https://home.roboticlab.eu/_media/en/multiasm/exercisesbook/arm/sut/screenshotgdb.png?w=500&amp;amp;h=500&amp;amp;tok=03a794&quot; alt=&quot;screenshotgdb.png&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot; /&gt;</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/et/iot/examples/quickstart?rev=1791810085&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T13:01:25+00:00</dc:date>
        <dc:creator>karllall (karllall@undisclosed.example.com)</dc:creator>
        <title>Kiirstardi juhend - [Ühenduse kontrollimine] </title>
        <link>https://home.roboticlab.eu/et/iot/examples/quickstart?rev=1791810085&amp;do=diff</link>
        <description>Kiirstardi juhend

Arenduskeskkonna seadistamine

Laadige alla ja installige VS Code siit

Python&#039;i installimine Windowsi

Laadige alla Python siit

Enne installimist veenduge, et Add Python to PATH valik oleks märgitud



Python&#039;i installimine Linuxi

Avage terminal ja kontrollige, kas teil on Python 3 installitud.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/iot/examples/quickstart?rev=1791810031&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T13:00:31+00:00</dc:date>
        <dc:creator>karllall (karllall@undisclosed.example.com)</dc:creator>
        <title>Quickstart guide - [Verifying the connection] </title>
        <link>https://home.roboticlab.eu/en/iot/examples/quickstart?rev=1791810031&amp;do=diff</link>
        <description>Quickstart guide

Configuring the development environment

Download and install VS Code from here

Install Python on Windows

Download Python from here

Before installing check the Add Python to PATH



Install Python on Linux

Open terminal and check if you have Python 3 installed.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/remotelab?rev=1791799643&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T10:07:23+00:00</dc:date>
        <dc:creator>pczekalski (pczekalski@undisclosed.example.com)</dc:creator>
        <title>MultiASM - Exercises and Laboratory Book</title>
        <link>https://home.roboticlab.eu/en/multiasm/remotelab?rev=1791799643&amp;do=diff</link>
        <description>MultiASM - Exercises and Laboratory Book

Current version of PDF Book

Generate new PDF document!

Writing rules

ToDo list for an orange  book

Versions

Authors

Basic information:

	*  Project Information
	*  Introduction

Exercises, laboratories and scenarios:

	*  Programming in Assembler for Embedded Systems
		*  VREL NextGen Management and IoT Developer Software
			*  User&#039;s Guide

		*  Introduction to the Arduino Uno programming in Assembler
		*  SUT AVR Assembler Laboratory Node Hardwar…</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/start?rev=1791797914&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T09:38:34+00:00</dc:date>
        <dc:creator>mcp_agent (mcp_agent@undisclosed.example.com)</dc:creator>
        <title> - Moved to en:multiasm:exercisesbook:arm:sut:start</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/start?rev=1791797914&amp;do=diff</link>
        <description></description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu?rev=1791797646&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T09:34:06+00:00</dc:date>
        <dc:creator>mcp_agent (mcp_agent@undisclosed.example.com)</dc:creator>
        <title>RTU&#039;s ARM laboratory - Laboratory route: scenario links show their titles (ARM10-ARM21) automatically</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu?rev=1791797646&amp;do=diff</link>
        <description>RTU&#039;s ARM laboratory

This chapter provides a progressive laboratory course in AArch64 assembly using Raspberry Pi 5 and 64-bit Raspberry Pi OS. It accompanies Programming in Assembler for Mobiles and ARM in the MultiASM coursebook. The core labs need only a Pi and a terminal; GPIO is an optional extension.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab12?rev=1791797631&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T09:33:51+00:00</dc:date>
        <dc:creator>mcp_agent (mcp_agent@undisclosed.example.com)</dc:creator>
        <title>ARM 21: Integration project: a bounded sample analyser - Renumbered as ARM21, reformatted to the scenario template (Start, Steps, FAQ), lab references turned into links</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab12?rev=1791797631&amp;do=diff</link>
        <description>ARM 21: Integration project: a bounded sample analyser

This project combines the skills from the preceding scenarios into a single, tested command-line tool. C handles input, allocation and printing, while the analysis itself is written in AArch64 assembly.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab11?rev=1791797630&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T09:33:50+00:00</dc:date>
        <dc:creator>mcp_agent (mcp_agent@undisclosed.example.com)</dc:creator>
        <title>ARM 20: Optional hardware laboratory: an LED through Linux GPIO - Renumbered as ARM20, reformatted to the scenario template (Start, Steps, FAQ), lab references turned into links</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab11?rev=1791797630&amp;do=diff</link>
        <description>ARM 20: Optional hardware laboratory: an LED through Linux GPIO

Pi 5 header GPIO is managed through RP1 and Linux drivers. Legacy Raspberry Pi GPIO register addresses and Arduino DDR/PORT code are not interchangeable with this interface. The C bridge owns a libgpiod version-2 line request; assembly implements the control loop and obeys AAPCS64. No physical-address mapping or privileged register access is needed</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab10?rev=1791797587&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T09:33:07+00:00</dc:date>
        <dc:creator>mcp_agent (mcp_agent@undisclosed.example.com)</dc:creator>
        <title>ARM 19: Measuring performance and avoiding busy waits - Renumbered as ARM19, reformatted to the scenario template (Start, Steps, FAQ), lab references turned into links</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab10?rev=1791797587&amp;do=diff</link>
        <description>ARM 19: Measuring performance and avoiding busy waits

Wall-clock time includes interruptions by other processes. Cache state, CPU frequency and temperature affect results. An instruction-count reduction need not produce the same speedup. Correctness comes first: benchmark exactly the implementation that passed the tests. Clock readings surround many calls, and printing and result validation occur outside each timed region.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab09?rev=1791797586&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T09:33:06+00:00</dc:date>
        <dc:creator>mcp_agent (mcp_agent@undisclosed.example.com)</dc:creator>
        <title>ARM 18: Neon vectorisation with a correct scalar tail - Renumbered as ARM18, reformatted to the scenario template (Start, Steps, FAQ), lab references turned into links</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab09?rev=1791797586&amp;do=diff</link>
        <description>ARM 18: Neon vectorisation with a correct scalar tail

A Neon register is 128 bits: v0.4s describes four 32-bit lanes. fadd interprets those lanes as floats; add would perform integer addition on the bits. Processing four elements consumes 16 bytes. For a length not divisible by four, finish with scalar operations and never load a full vector beyond the valid range.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab08?rev=1791797549&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T09:32:29+00:00</dc:date>
        <dc:creator>mcp_agent (mcp_agent@undisclosed.example.com)</dc:creator>
        <title>ARM 17: Scalar floating-point calculations - Renumbered as ARM17, reformatted to the scenario template (Start, Steps, FAQ), lab references turned into links</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab08?rev=1791797549&amp;do=diff</link>
        <description>ARM 17: Scalar floating-point calculations

The AAPCS64 passes these named double arguments in d0–d2 and returns the result in d0. Scalar s and d registers are views of the vector register bank. scvtf converts a signed integer&#039;s value; fmov between general and floating-point registers can copy a bit pattern. Those operations are not interchangeable. Floating-point arithmetic rounds, and many decimal fractions are not exactly representable in binary.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab07?rev=1791797548&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T09:32:28+00:00</dc:date>
        <dc:creator>mcp_agent (mcp_agent@undisclosed.example.com)</dc:creator>
        <title>ARM 16: Linux input, output and error handling - Renumbered as ARM16, reformatted to the scenario template (Start, Steps, FAQ), lab references turned into links</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab07?rev=1791797548&amp;do=diff</link>
        <description>ARM 16: Linux input, output and error handling

A raw Linux system call returns a negative error number on failure; this differs from the libc convention of returning -1 and setting errno. read returns zero at end of file, or a positive byte count. A successful read need not fill the buffer and does not append a zero terminator. A write may transfer fewer bytes than requested. Advance the pointer and retry only the remaining bytes.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab06?rev=1791797520&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T09:32:00+00:00</dc:date>
        <dc:creator>mcp_agent (mcp_agent@undisclosed.example.com)</dc:creator>
        <title>ARM 15: Byte strings and bounded conversion - Renumbered as ARM15, reformatted to the scenario template (Start, Steps, FAQ), lab references turned into links</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab06?rev=1791797520&amp;do=diff</link>
        <description>ARM 15: Byte strings and bounded conversion

A C string ends in a zero byte. A byte buffer need not contain that terminator. bounded_len returns the first zero-byte index or capacity if no terminator exists within the readable region. It never reads when capacity is zero. Its return equal to capacity means no terminator was found, not that one exists at that address.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab05?rev=1791797519&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T09:31:59+00:00</dc:date>
        <dc:creator>mcp_agent (mcp_agent@undisclosed.example.com)</dc:creator>
        <title>ARM 14: Functions, the stack and C interoperability - Renumbered as ARM14, reformatted to the scenario template (Start, Steps, FAQ), lab references turned into links</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab05?rev=1791797519&amp;do=diff</link>
        <description>ARM 14: Functions, the stack and C interoperability

For these integer/pointer interfaces, x0–x7 pass arguments and x0 returns the result. Caller-saved temporaries include x0–x17; avoid x18, which has a platform-defined role. Preserve any x19–x29 registers you change.</description>
    </item>
    <item rdf:about="https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab04?rev=1791797488&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-10-12T09:31:28+00:00</dc:date>
        <dc:creator>mcp_agent (mcp_agent@undisclosed.example.com)</dc:creator>
        <title>ARM 13: Memory, arrays and addressing modes - Renumbered as ARM13, reformatted to the scenario template (Start, Steps, FAQ), lab references turned into links</title>
        <link>https://home.roboticlab.eu/en/multiasm/exercisesbook/arm/rtu/lab04?rev=1791797488&amp;do=diff</link>
        <description>ARM 13: Memory, arrays and addressing modes

An address identifies a byte. Consecutive 32-bit elements are four bytes apart. ldrsw loads a signed 32-bit value and extends its sign to 64 bits; ldr w3 instead clears the upper half of x3. [x0], #4 accesses the old pointer then advances it. Initialised writable data belongs in</description>
    </item>
</rdf:RDF>
