<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://spo600.proximity.on.ca/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="http://spo600.proximity.on.ca/feed.php">
        <title>Chris Tyler's Wiki - spo600</title>
        <description></description>
        <link>http://spo600.proximity.on.ca/</link>
        <image rdf:resource="http://spo600.proximity.on.ca/lib/exe/fetch.php?media=wiki:dokuwiki.svg" />
       <dc:date>2026-04-21T18:48:25+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:64-bit_assembly_language_lab&amp;rev=1739276794&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:64_bit_assembly_language_lab&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:2024_fall&amp;rev=1735872115&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:2024_fall_project&amp;rev=1733628955&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:2024_sumer_project&amp;rev=1717615888&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:2024_summer_project&amp;rev=1724051667&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:2024_winter_project&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:2025_winter_participants&amp;rev=1745208190&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:2025_winter_project&amp;rev=1744699267&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502&amp;rev=1715233486&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_addressing_modes&amp;rev=1736373392&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_assembly_language_lab&amp;rev=1736544162&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_counting_loop_example&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_emulator&amp;rev=1744233262&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_emulator_example_code&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_instructions&amp;rev=1725980326&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_jumps_branches_and_procedures&amp;rev=1737500030&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_jumps_branches_and_subroutines&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_math&amp;rev=1737671274&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_math_and_strings_lab&amp;rev=1727191820&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_math_lab&amp;rev=1738167958&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_program_lab&amp;rev=1738706855&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:aarch64_register_and_instruction_quick_start&amp;rev=1739984070&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:address&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:addressing_mode&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:armv8&amp;rev=1739982477&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:assembler&amp;rev=1739982655&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:assembler_basics&amp;rev=1739275083&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:assembly_language&amp;rev=1739983117&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:atomic_operation&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:bcd&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:bitwise_operations&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:blog_guidelines&amp;rev=1727202551&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:building_gcc&amp;rev=1738336498&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:clock&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:compiler&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:compiler_intrinsics&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:compiler_optimizations&amp;rev=1738813442&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:computer_architecture&amp;rev=1736374239&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:creating_a_gcc_pass&amp;rev=1739890888&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:current_spo600_participants&amp;rev=1725369113&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:debugger&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:disassembler&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:elf&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:endian&amp;rev=1715114766&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:executable_and_linkable_format&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:expensive&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:flags&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:gcc_build_lab&amp;rev=1738343130&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:immediate_value&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:instruction&amp;rev=1739300960&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:instruction_encoding&amp;rev=1739981802&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:instruction_set_architecture&amp;rev=1715153964&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:link_time_optimization&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:machine_language&amp;rev=1736372653&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:make_and_makefiles&amp;rev=1738777118&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:memory_prefetch&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:opcode&amp;rev=1715115034&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:operation&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:pgo&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:portable&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:procedure_call&amp;rev=1739986950&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:profile-guided_optimization&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:public_key_cryptography&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:register&amp;rev=1725370934&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:screen_tutorial&amp;rev=1732130115&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:signed&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_64-bit_assembly_language_lab&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_2024_fall_participants&amp;rev=1733554657&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_2024_summer_participants&amp;rev=1724061397&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_2024_winter_participants&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_assembler_lab&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_communication_tools&amp;rev=1736220082&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_servers&amp;rev=1744233583&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_winter_2024&amp;rev=1714356548&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:ssh&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:stack&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:start&amp;rev=1743168042&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:symbol&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:syscalls&amp;rev=1739983156&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:truth_table&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:volatile&amp;rev=1716614214&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:word&amp;rev=1713291008&amp;do=diff"/>
                <rdf:li rdf:resource="http://spo600.proximity.on.ca/doku.php?id=spo600:x86_64_register_and_instruction_quick_start&amp;rev=1739301178&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://spo600.proximity.on.ca/lib/exe/fetch.php?media=wiki:dokuwiki.svg">
        <title>Chris Tyler's Wiki</title>
        <link>http://spo600.proximity.on.ca/</link>
        <url>http://spo600.proximity.on.ca/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
    </image>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:64-bit_assembly_language_lab&amp;rev=1739276794&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-11T12:26:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>64-bit_assembly_language_lab</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:64-bit_assembly_language_lab&amp;rev=1739276794&amp;do=diff</link>
        <description>64-Bit Assembly Language Lab

In this lab, you will experiment with assembler on the x86_64 and aarch64 platforms.

Perform this lab on SPO600 Servers (you may use your own systems if they are of the right architecture and appropriately configured).

Lab 5

Code Examples</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:64_bit_assembly_language_lab&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>64_bit_assembly_language_lab</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:64_bit_assembly_language_lab&amp;rev=1713291008&amp;do=diff</link>
        <description></description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:2024_fall&amp;rev=1735872115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-03T02:41:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2024_fall</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:2024_fall&amp;rev=1735872115&amp;do=diff</link>
        <description>SPO600 - 2024 Fall

This is the SPO600 course schedule. It's a live document and will be revised as the course proceed. Each topic will be linked to notes at the end of this page as the course proceeds.
WeekWeek of ...Class I (Tuesday - Syncronous on Zoom)</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:2024_fall_project&amp;rev=1733628955&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-12-08T03:35:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2024_fall_project</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:2024_fall_project&amp;rev=1733628955&amp;do=diff</link>
        <description>SPO600 2024 Fall Project

Goal

The goal of this project is to write a functioning proof-of-concept prototype for the function-pruning component of Automatic Function Multi-Versioning (AFMV) capability to the Gnu Compiler Collection (GCC) for AArch64 systems, building on previous work.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:2024_sumer_project&amp;rev=1717615888&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-06-05T19:31:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2024_sumer_project</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:2024_sumer_project&amp;rev=1717615888&amp;do=diff</link>
        <description>Wrong page! See 2024 Summer Project</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:2024_summer_project&amp;rev=1724051667&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-19T07:14:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2024_summer_project</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:2024_summer_project&amp;rev=1724051667&amp;do=diff</link>
        <description>SPO600 2024 Summer Project

Goal

The goal of this project is to add a functioning proof-of-concept prototype of Automatic Function Multi-Versioning (AFMV) capability to the Gnu Compiler Collection (GCC) for AArch64 systems, building on previous work.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:2024_winter_project&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2024_winter_project</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:2024_winter_project&amp;rev=1713291008&amp;do=diff</link>
        <description>SPO600 2024 Winter Project

Goal

The goal of this project is to add a functioning proof-of-concept prototype of auto-function-multi-versioning capability to the Gnu Compiler Collection (GCC) for AArch64 systems.

Specifically:

1. It will be possible to enable AFMV from the compiler command-line, with a list of one or more architectural feature versions (these will be versions accepted by the existing FMV code, such as</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:2025_winter_participants&amp;rev=1745208190&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-21T04:03:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2025_winter_participants</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:2025_winter_participants&amp;rev=1745208190&amp;do=diff</link>
        <description>SPO600 2024 Winter Participants
 Number  Name  Preferred Name  Seneca LDAP ID  Blog URL 0Chris TylerChrischris.tyler 1Hamza TeliHamzahteli1&lt;https://hteli1-spo600.hashnode.dev/&gt;2Sooyeon KimSooyeonskim499&lt;https://sooyeon-spo600.blogspot.com/&gt;3Ziyang WangKevinzwang331&lt;https://ziyangwang97.blogspot.com/&gt;4Amir MullagalievAmiramullagaliev&lt;https://dev.to/amullagaliev/series/30028&gt;5Jenny NguyenJennyjnguyen164</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:2025_winter_project&amp;rev=1744699267&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-15T06:41:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2025_winter_project</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:2025_winter_project&amp;rev=1744699267&amp;do=diff</link>
        <description>SPO600 2025 Winter Project

Before Starting

Before starting this project, please perform Lab 4.

Project Stage I: Create a Basic GCC Pass

Create a pass for the current development version of the GCC compiler which:

	*  Iterates through the code being compiled;</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502&amp;rev=1715233486&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-09T05:44:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502&amp;rev=1715233486&amp;do=diff</link>
        <description>6502

The MOS Technologies 6502 processor was introduced in the mid-1970s to fill the need for a affordable general-purpose CPU. Its low cost (US$25 at introduction, less than C$0.89 now) was less than one-sixth of competing CPUs, and it had very simple circuitry requirements which made it simple and inexpensive to incorporate it into products. The 6502 (or a slight variation) was therefore used in many home and personal computers, such as the Apple II; the Commodore PET, Vic-20, and C64; the At…</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_addressing_modes&amp;rev=1736373392&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-08T21:56:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_addressing_modes</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_addressing_modes&amp;rev=1736373392&amp;do=diff</link>
        <description>6502 Addressing Modes

The 6502 processor has 13 Addressing Modes, which affect how the arguments for instructions are accessed. 

For example, the Load Accumulator LDA instruction can load the accumulator from different sources:


 LDA #$05  ; Immediate addressing mode - load the accumulator with the number 5
 LDA $05   ; Zero-page addressing mode - load the accumulator from memory address 5
 LDA $0805 ; Absolute addressing mode - load the accumulator from memory address 0x8005 (32773).</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_assembly_language_lab&amp;rev=1736544162&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-10T21:22:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_assembly_language_lab</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_assembly_language_lab&amp;rev=1736544162&amp;do=diff</link>
        <description>6502 Assembly Language Lab

In this lab, you will learn some of the basics of 6502 assembly language, in preparation for learning more complex x86_64 and AArch64 assembly language.

Resources

	*   6502 Wiki Page
	*   6502 Emulator
	*   Opcode/Instruction References
		*</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_counting_loop_example&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_counting_loop_example</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_counting_loop_example&amp;rev=1713291008&amp;do=diff</link>
        <description>6502 Counting Loop Example

Here is a solution for part of the 64-bit Assembly Language Lab but implemented in 6502 Assembly language for use with the 6502 Emulator:


 ; ROM routines
 define		SCINIT		$ff81
 define		CHROUT		$ffd2
 START:
 	JSR SCINIT      ; Initialize and clear the screen
 	LDX #$00	; Loop index (0-9)
 LINE:
 	TXA		; Put loop index into A
 	CLC
 	ADC #$30	; Add $30 (ASCII '0')
 	STA MSG_DIGIT	; Store into the string
 	LDY #$00	; Character number to print
 CHARACTER:
 	LDA MSG,Y	…</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_emulator&amp;rev=1744233262&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-09T21:14:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_emulator</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_emulator&amp;rev=1744233262&amp;do=diff</link>
        <description>6502 Emulator

A simple web-based 6502 emulator is available at &lt;http://6502.proximity.on.ca&gt; (note that this is an http link, not an https link). This emulator is used in the SPO600 course to teach 8-bit assembly language before transitioning to more complex 64-bit x86_64 and AArch64 assembly language.

In most 6502 documentation, including this page, the</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_emulator_example_code&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_emulator_example_code</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_emulator_example_code&amp;rev=1713291008&amp;do=diff</link>
        <description>6502 Emulator Example Code

This is a collection of simple examples of 6502 assembly language code which will run in the 6502 Emulator. To use this code, copy and paste one of these programs into the text box of the emulator.

This code is Copyright©2020-2024 Seneca College of Applied Arts and Technology. Each of these programs is free software; you can redistribute them and/or modify them under the terms of the</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_instructions&amp;rev=1725980326&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-10T14:58:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_instructions</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_instructions&amp;rev=1725980326&amp;do=diff</link>
        <description>6502 Instructions

The 6502 processor has a compact instruction set, consisting of just 56 instructions:


 ADC	AND	ASL	BCC	BCS	BEQ	BIT	
 BMI	BNE	BPL	BRK	BVC	BVS	CLC  
 CLD	CLI	CLV	CMP	CPX	CPY	DEC
 DEX	DEY	EOR	INC	INX	INY	JMP
 JSR	LDA	LDX	LDY	LSR	NOP	ORA
 PHA	PHP	PLA	PLP	ROL	ROR	RTI 
 RTS	SBC	SEC	SED	SEI	STA	STX
 STY	TAX	TAY	TSX	TXA	TXS	TYA</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_jumps_branches_and_procedures&amp;rev=1737500030&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-21T22:53:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_jumps_branches_and_procedures</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_jumps_branches_and_procedures&amp;rev=1737500030&amp;do=diff</link>
        <description>6502 Jumps, Branches, and Procedures

Very few computer programs are perfectly lineary in their instruction sequence - the sequence of instructions executed may be repeated (loops), conditional (if/then/else), and involve procedures (aka subroutines, functions, or methods).</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_jumps_branches_and_subroutines&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_jumps_branches_and_subroutines</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_jumps_branches_and_subroutines&amp;rev=1713291008&amp;do=diff</link>
        <description>6502 Jumps, Branches, and Procedures

Very few computer programs are perfectly lineary in their instruction sequence - the sequence of instructions executed may be repeated (loops), conditional (if/then/else), and involve procedures (aka subroutines, functions, or methods).</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_math&amp;rev=1737671274&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-23T22:27:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_math</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_math&amp;rev=1737671274&amp;do=diff</link>
        <description>6502 Math

The 6502 processor is limited to very simple math operations, and various processor flags affect these operations.

Decimal Mode

The 6502 can perform math in binary or decimal mode.

In binary mode, operations are performed on a single 8-bit value. Numbers may be treated as signed or unsigned (the math is the same).</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_math_and_strings_lab&amp;rev=1727191820&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-24T15:30:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_math_and_strings_lab</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_math_and_strings_lab&amp;rev=1727191820&amp;do=diff</link>
        <description></description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_math_lab&amp;rev=1738167958&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-29T16:25:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_math_lab</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_math_lab&amp;rev=1738167958&amp;do=diff</link>
        <description>6502 Math Lab

In this lab, you will continue learning some of the basics of 6502 assembly language, in preparation for learning more complex x86_64 and AArch64 assembly language.

Resources

	*  Background knowledge
		*  Computer Architecture basics
		*  Assembly Language vs Machine Language
		*  Assembler Basics

	*  6502 - Basic information about the processor</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:6502_program_lab&amp;rev=1738706855&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-04T22:07:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>6502_program_lab</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:6502_program_lab&amp;rev=1738706855&amp;do=diff</link>
        <description>6502 Program Lab

In this lab, you will write code with arithmetic/math and strings in 6502 assembly language, including text output, graphical output, and keyboard input, in preparation for learning more complex x86_64 and AArch64 assembly language.

Resources</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:aarch64_register_and_instruction_quick_start&amp;rev=1739984070&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T16:54:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>aarch64_register_and_instruction_quick_start</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:aarch64_register_and_instruction_quick_start&amp;rev=1739984070&amp;do=diff</link>
        <description>AArch64 Register and Instruction Quick Start

This page contains very basic information on the AArch64 mode of the ARMv8/ARMv9 architecture: the register layout and naming and some basic instructions. For more comprehensive information, see the references listed below.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:address&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>address</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:address&amp;rev=1713291008&amp;do=diff</link>
        <description>Address

An address is the numeric identifier for a memory location. The term may also be used for other storage allocation identifiers -- for example, a logical block address on a disk identifies a block or sector on that disk using a unique number.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:addressing_mode&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>addressing_mode</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:addressing_mode&amp;rev=1713291008&amp;do=diff</link>
        <description>Addressing Mode

Addressing modes specify how the data/arguments for an instruction are stored and retrieved.

Addressing modes may include:

	*   Implied - Any arguments are implied by the instruction (e.g., a return-from-subroutine instruction, which will pop a value off the</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:armv8&amp;rev=1739982477&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T16:27:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>armv8</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:armv8&amp;rev=1739982477&amp;do=diff</link>
        <description>ARM 64-Bit Architectures

There are a few different terms swirling around the 64-bit ARM space. This page distinguishes between some of these terms and concepts.

ARMv9

ARM architecture version 9 -- known as ARMv9 -- was introduced on March 30, 2021. It is an evoltionary advancement of the ARMv8 architecture. As with ARMv8, the most powerful profile in the architecture is the Application profile, designated as ARMv9-a.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:assembler&amp;rev=1739982655&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T16:30:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>assembler</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:assembler&amp;rev=1739982655&amp;do=diff</link>
        <description>Assembler

An assembler is a compiler for assembly language code. (Assembly language code itself is sometimes called “assembler”).

On Linux systems, the GNU Assembler (“gas”) is a very commonly-used assembler.

In the 6502 Emulator, the “Assemble” button invokes an assembler.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:assembler_basics&amp;rev=1739275083&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-11T11:58:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>assembler_basics</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:assembler_basics&amp;rev=1739275083&amp;do=diff</link>
        <description>Assembler Basics

When you program in assembly language, you're directly programming the “bare metal” hardware. This means that many of the compile-time and run-time checks, error messages, and diagnostics that are present in other languages are not available. The computer will follow your instructions exactly, even if they are completely wrong (like executing data), and when something goes wrong, your program won't terminate until it tries to do something that's not permitted, such as execute a…</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:assembly_language&amp;rev=1739983117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T16:38:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>assembly_language</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:assembly_language&amp;rev=1739983117&amp;do=diff</link>
        <description>Assembly Language

Assembly language is a symbolic representation of machine language. It is therefore very architecture-specific.

Each instruction is represented by a short mnemonic word such as “LDR” for Load Register, “MOV” for move, or “MUL” for multiply, followed by (optional) arguments. The</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:atomic_operation&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>atomic_operation</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:atomic_operation&amp;rev=1713291008&amp;do=diff</link>
        <description>Atomic Operation

An atomic operation is one that cannot be interrupted. These operations are typically used for acquiring locks.

Consider the following code, intended to set a “lock” in shared memory so that only one thread or process performs a particular action at a time:</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:bcd&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>bcd</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:bcd&amp;rev=1713291008&amp;do=diff</link>
        <description>BCD

Binary coded decimal is a binary representation of decimal numbers where each nibble (4 bits) in a word represents a separate decimal digit.

For example, in BCD, the value 128 would be represented in a 16-bit value as:


 Binary:    0 0 0 0     0 0 0 1      0 0 1 0     1 0 0 0
 Decimal:         0           1            2           8</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:bitwise_operations&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>bitwise_operations</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:bitwise_operations&amp;rev=1713291008&amp;do=diff</link>
        <description>Bitwise Operations

Bitwise Operations are operations that are performed bit-by-bit on one or two operands (input values) to produce an output value.

Logical Bitwise Operations

Logical bitwise operations are performed by executing a logical operation such as OR, AND, or XOR on operands, processing corresponding bits in each operand. For example, the logical OR operation takes a two-bit input and produces a one-bit output. When applied bitwise to two 32-bit values, a logical OR is performed usi…</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:blog_guidelines&amp;rev=1727202551&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-24T18:29:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>blog_guidelines</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:blog_guidelines&amp;rev=1727202551&amp;do=diff</link>
        <description>Introduction

In the open source world blogs are one of the main vehicles for general discussions about technical and project issues.  One of the main reasons for this is that open source projects are interconnected, and developers working on one project want to follow what is happening in other projects.  Users also like to know what is happening behind the scenes with their favourite software.  Blogging is a great way to reach new people who share similar interests to you.  Sites like http:</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:building_gcc&amp;rev=1738336498&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-31T15:14:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>building_gcc</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:building_gcc&amp;rev=1738336498&amp;do=diff</link>
        <description>Building GCC

GCC is a large codebase that has developed over a period of several decades, works on many different architectures, has had many contributors, and is itself written in several different languages.

Building GCC is similar to building many other large codebases. Since the people working on this project are themselves experts in compilers and build tools, the software has a high-quality build system.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:clock&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>clock</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:clock&amp;rev=1713291008&amp;do=diff</link>
        <description>Clock

Clock / Clock Signal

A digital computer's CPU clock is a pulse generator which synchronizes operations throughout the system (or a portion of the system).

The higher the clock speed of a system, the more operations are performed per second. Performing more operations per second will usually lead to a more instructions being performed per second, but the relationship between the clock speed and instruction execution is rarely 1:1.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:compiler&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>compiler</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:compiler&amp;rev=1713291008&amp;do=diff</link>
        <description>Compiler

A compiler is a program which takes input code, typically human-readable source code, and produces output code, typically binary machine code but possibly an intermediate bytecode.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:compiler_intrinsics&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>compiler_intrinsics</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:compiler_intrinsics&amp;rev=1713291008&amp;do=diff</link>
        <description>Compiler Intrinsics

A compiler intrinsic is a built-in pseudo-function which is typically inlined.

Intrinsics are typically used to perform operations which cannot be performed (or guaranteed) in normal C code, such as atomics.

References

	*   GNU C Compiler Extensions - including many intrinsics/builtins.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:compiler_optimizations&amp;rev=1738813442&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-06T03:44:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>compiler_optimizations</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:compiler_optimizations&amp;rev=1738813442&amp;do=diff</link>
        <description>Compiler Optimizations

Compiler optimizations are alterations made to code by a compiler to achieve the same result as the original input code but with improved performance. This can mean reduced code size, reduced memory consumption, improved execution speed, or reduced energy consumption; often, these goals are in conflict and optimizing for one (such as speed) will come at the cost of another (such as code size).</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:computer_architecture&amp;rev=1736374239&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-08T22:10:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>computer_architecture</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:computer_architecture&amp;rev=1736374239&amp;do=diff</link>
        <description>Computer Architecture

The phrase Computer Architecture refers to the design of a computer, primarily focused on the central processing unit but also including main memory and input-output (IO) subsystems. The term “architecture” is generally used to refer to the core components of the system and not peripheral devices.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:creating_a_gcc_pass&amp;rev=1739890888&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-18T15:01:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_a_gcc_pass</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:creating_a_gcc_pass&amp;rev=1739890888&amp;do=diff</link>
        <description>Creating a GCC Pass

These are rough notes only! Unfortunately, this part of the GCC codebase is poorly documented at this point in time.

Structure of a Pass

GCC passes are used to transform code. Initially, the input source code is transformed into GLIMPSE, then into GIMPLE, then into RTL, and finally into assembly for the target system.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:current_spo600_participants&amp;rev=1725369113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-03T13:11:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>current_spo600_participants</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:current_spo600_participants&amp;rev=1725369113&amp;do=diff</link>
        <description></description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:debugger&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>debugger</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:debugger&amp;rev=1713291008&amp;do=diff</link>
        <description>Debugger

A debugger is a tool used to analyze running code.

Although debugging tools are available for interpreted and bytestream languages, the term debugger is often used to describe a tool that can analyze object code.

Typical features of a debugger include:</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:disassembler&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>disassembler</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:disassembler&amp;rev=1713291008&amp;do=diff</link>
        <description>Disassembler

A disassembler is a tool which converts machine code to an assembly language representations.

On GNU Linux systems, the objdump tool acts as a disassembler. The GNU debugger (gdb) can also do disassembly.

In the 6502 Emulator, the “Disassemble” button invokes a disassembler.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:elf&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>elf</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:elf&amp;rev=1713291008&amp;do=diff</link>
        <description></description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:endian&amp;rev=1715114766&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-07T20:46:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>endian</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:endian&amp;rev=1715114766&amp;do=diff</link>
        <description>Endian

The Endian-ism of a processor refers to the order in which multi-byte values are stored in memory.

Little-Endian

Little-endian systems store the least-significant byte of a multi-byte value at the lowest address.

For example, on 6502 systems (with a 8 bit/1 byte word size), the 16-bit value $FFEE stored at address $1000 would be stored like this:</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:executable_and_linkable_format&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>executable_and_linkable_format</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:executable_and_linkable_format&amp;rev=1713291008&amp;do=diff</link>
        <description>Executable and Linkable Format

The Executable and Linkable Format (ELF) is a file format for binary executable files, object code, shared libraries, and core dumps (diagnostic snapshots of running software). It is a multi-section file format and can therefore be readily extended with additional information, such as IR for</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:expensive&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>expensive</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:expensive&amp;rev=1713291008&amp;do=diff</link>
        <description>Expensive

An expensive operation is one which takes a lot of resources, particularly CPU clock cycles.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:flags&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>flags</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:flags&amp;rev=1713291008&amp;do=diff</link>
        <description>Flags

Flags are single-bit values which may be either on / set / binary “1” or off / cleared / binary 0.

Most CPUs have a status register containing multiple flag bits indicating current status; they may also have control registers which alter the operation of the CPU. Flags may also be maintained by software, or appear in IO device registers.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:gcc_build_lab&amp;rev=1738343130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-31T17:05:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>gcc_build_lab</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:gcc_build_lab&amp;rev=1738343130&amp;do=diff</link>
        <description>GCC Build Lab

The purpose of this lab is to become familiar with the process of building large software projects, utilizing tools such as make and automake/autotools. This is useful because we will be working on the GCC compiler for the course project.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:immediate_value&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>immediate_value</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:immediate_value&amp;rev=1713291008&amp;do=diff</link>
        <description>An immediate value in machine code is a constant or literal value argument. For example, the 6502 assembly instruction:
LDA #$80
...will load the literal value 0x80 (128) into the accumulator (A register).

Note that the value to be loaded comes from an argument within the instruction stream; this contrasts with loading a value from a memory location in a data area, or from another register.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:instruction&amp;rev=1739300960&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-11T19:09:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>instruction</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:instruction&amp;rev=1739300960&amp;do=diff</link>
        <description>Instruction

An Instruction is the smallest unit of code in Machine Language. Each instruction consists of an operation, addressing mode information, and zero or more arguments such as register numbers, addresses, bit counts, or immediate values. Each instruction is encoded into a binary value in the program text (see</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:instruction_encoding&amp;rev=1739981802&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T16:16:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>instruction_encoding</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:instruction_encoding&amp;rev=1739981802&amp;do=diff</link>
        <description>Instruction Encoding

The encoding of instructions, which is a key aspect of an Instruction Set Architecture, defines how instuctions and arguments are encoded as binary values in the machine code of a system.

Some architectures encode instructions as multi-byte sequences, where one or more bytes specify the operation to be performed and the</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:instruction_set_architecture&amp;rev=1715153964&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-08T07:39:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>instruction_set_architecture</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:instruction_set_architecture&amp;rev=1715153964&amp;do=diff</link>
        <description>Instruction Set Architecture

The Instruction Set Architecture of a processor is the set of instructions which that processor can execute, the addressing modes available, and the encoding of those instructions as machine code.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:link_time_optimization&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>link_time_optimization</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:link_time_optimization&amp;rev=1713291008&amp;do=diff</link>
        <description>Link Time Optimization

Link Time Optimization (LTO) defers some portions of a program's optimization from compile time to link time. In order to accomplish this, the internal representation (IR) of each portion of the program (compilation unit) must be stored in the object file. On a Linux system, this is performed with additional</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:machine_language&amp;rev=1736372653&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-08T21:44:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>machine_language</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:machine_language&amp;rev=1736372653&amp;do=diff</link>
        <description>Machine Language

Machine language, machine code, or object code is code that is directly executable by a CPU. It consist of a sequence of binary instructions encoded for a machine's Instruction Set Architecture (ISA) and is therefore very specific to a particular architecture.

General Format

Machine code consists of a series of instructions, each of which specifies an operation and zero or more arguments. Each argument may indicate a</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:make_and_makefiles&amp;rev=1738777118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-05T17:38:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>make_and_makefiles</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:make_and_makefiles&amp;rev=1738777118&amp;do=diff</link>
        <description>Make and Makefiles

make is a specialized scripting language used to build software. Unlike most scripting languages, commands are not executed in linear (start-to-finish) sequence; instead, command sequences are defined in terms of what input they accept and what output they produce, and</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:memory_prefetch&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>memory_prefetch</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:memory_prefetch&amp;rev=1713291008&amp;do=diff</link>
        <description>Memory Pre-fetch

Pre-fetching of memory is the loading of data from memory into cache before it is requested, in anticipation that it will be needed in the near future. A CPU may initiate a prefetch when a pattern of sequential access is recognized or predicted, or in some</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:opcode&amp;rev=1715115034&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-07T20:50:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>opcode</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:opcode&amp;rev=1715115034&amp;do=diff</link>
        <description>OpCode

An opcode is an operation code, a numeric value specifying that a particular instruction should be performed.

Opcodes may be distinct bytes or words, possibly including an addressing mode indication, or they may be embedded within a larger instruction word.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:operation&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>operation</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:operation&amp;rev=1713291008&amp;do=diff</link>
        <description>Operation

An operation is a particular action to be undertaken by a CPU, such as an addition, subtraction, multiplication, bitwise operation, branch, store, or load.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:pgo&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>pgo</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:pgo&amp;rev=1713291008&amp;do=diff</link>
        <description></description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:portable&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>portable</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:portable&amp;rev=1713291008&amp;do=diff</link>
        <description>Portable

A portable program is one which may be used on multiple architectures or operating systems.

Related terms:

	*   Port - to modify a program to work on a particular architecture.
	*   Portable - a program which can be used on multiple architectures, typically by compiling/building for a specific target architecture. Note that</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:procedure_call&amp;rev=1739986950&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T17:42:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>procedure_call</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:procedure_call&amp;rev=1739986950&amp;do=diff</link>
        <description>Procedure Call

A procedure is a block of code that may be called by other code. Depending on the language in used, a procedure may also be called a routine, function, subroutine, method, or subprogram.

At the machine level, a procedure is called like this:</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:profile-guided_optimization&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>profile-guided_optimization</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:profile-guided_optimization&amp;rev=1713291008&amp;do=diff</link>
        <description>Profile-Guided Optimzation

Profile-Guided Optimization (PGO) is an optimization technique where a performance profile is fed to the compiler to provide optimization information that is not directly evident from the source code, such as branching patterns which are the result of patterns in the input data, frequency of function calls, and number of iterations typically peformed of each loop. This information affects optimizations such as code relocation, inlining, and loop unrolling.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:public_key_cryptography&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>public_key_cryptography</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:public_key_cryptography&amp;rev=1713291008&amp;do=diff</link>
        <description>Public Key Cryptography

Overview

Public-key cryptography underlies virtually all e-commerce, online banking, and telecommunications systems.

In a nutshell, public key cryptography works like this:

	*   A large random number is generated.
	*   That number is used to derive two mathematically-related but different keys. Each key is also a large number.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:register&amp;rev=1725370934&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-03T13:42:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>register</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:register&amp;rev=1725370934&amp;do=diff</link>
        <description>Register

A register is a high-speed memory location within a CPU.

Common Types of CPU Registers

Various types of registers are used in combination in computer architecture. The set of all registers present in a processor is called the Register Set</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:screen_tutorial&amp;rev=1732130115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-20T19:15:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>screen_tutorial</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:screen_tutorial&amp;rev=1732130115&amp;do=diff</link>
        <description>Screen Tutorial

When performing a long interactive operation such as a complex test or build over a remote connection (such as SSH), any network interruption such as a temporary break in WiFi connectivity or relocating from one pace to another will interrupt the operation and force you to start over.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:signed&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>signed</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:signed&amp;rev=1713291008&amp;do=diff</link>
        <description>Signed

A signed value is a binary value with a positive/negative sign. Alternatively, an unsigned number can represent positive (or zero) values only.

Some number representations allow for both positive and negative zero values.

Two's Compliment</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>spo600</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:spo600&amp;rev=1713291008&amp;do=diff</link>
        <description></description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_64-bit_assembly_language_lab&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>spo600_64-bit_assembly_language_lab</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_64-bit_assembly_language_lab&amp;rev=1713291008&amp;do=diff</link>
        <description></description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_2024_fall_participants&amp;rev=1733554657&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-12-07T06:57:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>spo600_2024_fall_participants</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_2024_fall_participants&amp;rev=1733554657&amp;do=diff</link>
        <description>SPO600 Fall 2024 Participants


 Name  Preferred Name  Seneca LDAP ID  Blog URL   XChris TylerChrischris.tyler   Nickolas LiapkovNicknliapkov1&lt;https://spo600-adventures.blogspot.com/&gt; Arina KolodeznikovaArinaakolodeznikova&lt;https://dev.to/arilloid/series/28646&gt; John Pierre MendozaPierrejmendoza23&lt;https://jonpier.blogspot.com/search/label/SPO600&gt; Gleison Vieira DutraGleisongvieira-dutra</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_2024_summer_participants&amp;rev=1724061397&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-08-19T09:56:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>spo600_2024_summer_participants</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_2024_summer_participants&amp;rev=1724061397&amp;do=diff</link>
        <description>SPO600 Summer 2024 Participants

See the Project page for task descriptions.
 Name  Preferred Name  Seneca LDAP ID  Blog URL  Project Task (see Project Page)XChris TylerChrischris.tyler   Marco SiuMarcomsiu4&lt;https://msiu4.blogspot.com/&gt;Command-line Parsing Connor SquiresConnorcwsquires&lt;https://cwsquiresspo600.wordpress.com/&gt;arch= Arguments Wai Hing William Tse</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_2024_winter_participants&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>spo600_2024_winter_participants</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_2024_winter_participants&amp;rev=1713291008&amp;do=diff</link>
        <description>SPO600 Winter 2024 Participants
 Name  Preferred Name  Seneca LDAP ID  Blog URL  Project Task Mimi DangMimimdang10&lt;https://mycodingjourney7.wordpress.com/&gt;
&lt;https://mdang10.blogspot.com/&gt;Create AFMV DocumentationMatthew De NapoliMatthewmde-napoli&lt;https://matthewdblog9.wordpress.com&gt;Git WranglerRachit ChawlaRachitrchawla11&lt;https://rchawla11-spo600.blogspot.com/&gt;Create TestsHeavendeep kaur MunjalHeaven</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_assembler_lab&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>spo600_assembler_lab</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_assembler_lab&amp;rev=1713291008&amp;do=diff</link>
        <description></description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_communication_tools&amp;rev=1736220082&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-07T03:21:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>spo600_communication_tools</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_communication_tools&amp;rev=1736220082&amp;do=diff</link>
        <description>SPO600 Communication Tools

SPO600 students use a number of communication tools that have been built and heavily adopted by Open Source communities. This page contains set-up instructions for some of these communication tools.

Summary: What you Need to Do</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_servers&amp;rev=1744233583&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-09T21:19:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>spo600_servers</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_servers&amp;rev=1744233583&amp;do=diff</link>
        <description>SPO600 Servers

SERVER CHANGES

As of 2025-04-09:

	*  The hostname of the SPO600 servers changed.

As of 2025-03-20:

	*  The servers must be accessed with new SSH port numbers. See details below.
	*  An additional terabyte of storage has been added to the aarch64-002 server, accessible via</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_winter_2024&amp;rev=1714356548&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-29T02:09:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>spo600_winter_2024</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:spo600_winter_2024&amp;rev=1714356548&amp;do=diff</link>
        <description>SPO600

This is the course schedule for SPO600 in Winter 2024. It may be adjusted according to the needs of the participants and changes in standards and technology.

Each topic will be linked to relevant notes as the course proceeds.
 Week  Week of...</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:ssh&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ssh</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:ssh&amp;rev=1713291008&amp;do=diff</link>
        <description>SSH

SSH is the Secure Shell, a powerful encrypted communication tool. This page contains some basic information about the use of SSH.

SSH Software

SSH client and server programs are included with almost all Linux distributions, Mac OS, and recent versions of Windows (later updates of 10 as well as 11). You can obtain SSH client and server software for most other platforms, including Android.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:stack&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>stack</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:stack&amp;rev=1713291008&amp;do=diff</link>
        <description>Stack

A stack is an area of memory where values are added (pushed) or removed (pulled) to/from the end of the stack only. Most CPU designs incorporate one or more hardware-managed stacks which are used to store and restore state information during subroutine calls, exceptions, and interrupts.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:start&amp;rev=1743168042&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-28T13:20:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>start</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:start&amp;rev=1743168042&amp;do=diff</link>
        <description>SPO600 - 2025 Winter

This is the SPO600 tentative course schedule. It's a live document and will be revised throughout the semester. Each topic will be linked to notes at the end of this page as the course proceeds.

Classes marked Async will be delivered in asynchronous online mode.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:symbol&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>symbol</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:symbol&amp;rev=1713291008&amp;do=diff</link>
        <description>Symbol

A symbol is a name for a variable, address, register, or instruction.

For example, the symbol “a” is used in this C code:


 int a=5;

In the compiled code, the name of the variable is insignificant -- the object code will access the relevant memory location by address, or the relevant register, at the</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:syscalls&amp;rev=1739983156&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T16:39:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>syscalls</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:syscalls&amp;rev=1739983156&amp;do=diff</link>
        <description>Syscall

The system call (syscall) mechanism is used by applications to access kernel services. The userland (application/non-kernel) program loads certain registers designating the system service (syscall) desired and the arguments to that syscall, then invokes a software</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:truth_table&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>truth_table</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:truth_table&amp;rev=1713291008&amp;do=diff</link>
        <description>Truth Table

A Truth Table is a table which has columns for the inputs and outputs of a logical binary operation, and rows representing all possible inputs and the corresponding outputs.

For some examples, see Bitwise Operations.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:volatile&amp;rev=1716614214&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-25T05:16:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>volatile</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:volatile&amp;rev=1716614214&amp;do=diff</link>
        <description>Volatile

Volatile storage holds data only as long as power is applied -- data is lost when power is cut.

Examples of volatile storage:

	*   Random Access Memory (dynamic or static RAM)

Examples of non-volatile storage:

	*   Flash memory
	*   Disk drives</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:word&amp;rev=1713291008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T18:10:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>word</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:word&amp;rev=1713291008&amp;do=diff</link>
        <description>Word

A word is a set number of bits managed as a unit.

Hardware Word

A hardware word is the group of bits normally managed by a processor. The word size is a distinguishing feature of a processor, and is typically a power-of-two multiple of eight bits (8, 16, 32, or 64 bits), although some rare or early processors used different word sizes.</description>
    </item>
    <item rdf:about="http://spo600.proximity.on.ca/doku.php?id=spo600:x86_64_register_and_instruction_quick_start&amp;rev=1739301178&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-11T19:12:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>x86_64_register_and_instruction_quick_start</title>
        <link>http://spo600.proximity.on.ca/doku.php?id=spo600:x86_64_register_and_instruction_quick_start&amp;rev=1739301178&amp;do=diff</link>
        <description>x86_64 Register and Instruction Quick Start

This page contains very basic information on the x86_64 architecture: the register layout and naming and some basic instructions. For more comprehensive information, see the references listed below.

Registers

General-Purpose Integer Registers</description>
    </item>
</rdf:RDF>
