From 6344fd6fe643d4be427b90fbd150397aa6a11dd0 Mon Sep 17 00:00:00 2001 From: Roland Metivier Date: Wed, 10 Nov 2021 13:05:14 -0600 Subject: [PATCH 01/10] add README with plans --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index d5b0361..7dd2167 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,23 @@ [![Build Status](https://travis-ci.org/exercism/arm64-assembly.svg?branch=master)](https://travis-ci.org/exercism/arm64-assembly) Exercism exercises in ARM64 Assembly. + +## TODO + +### The Profile (A, R, or M) + +What ARM64/ARMv8/AArch64 profile are we using? Probably should be A-profile. + +### The Core + +What core will we run in the test runner? + +Many ARM64 cores are different, like the [Cortex-A53](https://www.arm.com/products/silicon-ip-cpu/cortex-a/cortex-a53) compared to other cores. Probably could use that one as a basis for the runner, or the [Cortex-A72](https://www.arm.com/products/silicon-ip-cpu/cortex-a/cortex-a72). + +### Scratchpad + +- https://qemu.readthedocs.io/en/latest/system/arm/virt.html (A53 and A72 are supported for theoretical QEMU/GDB based tests) + +## Contributing Guide + +Please see the [contributing guide](https://github.com/exercism/x-api/blob/master/CONTRIBUTING.md#the-exercise-data) \ No newline at end of file From f8a44cf193fd6305bde53bc28538939e45c52fe9 Mon Sep 17 00:00:00 2001 From: Roland Metivier Date: Thu, 11 Nov 2021 20:12:08 -0600 Subject: [PATCH 02/10] fix various problems with docs and QEMU-fy the makefile --- config.json | 17 +++++++++++-- docs/ABOUT.md | 4 +++ docs/INSTALLATION.md | 11 ++++++++ docs/LEARNING.md | 7 +++++ docs/RESOURCES.md | 4 +++ docs/SNIPPET.txt | 13 ++++++++++ docs/TESTS.md | 16 ++++++++++++ docs/config.json | 34 +++++++++++++++++++++++-- exercises/practice/hello-world/Makefile | 5 ++-- exercises/shared/.docs/help.md | 9 +++++++ exercises/shared/.docs/tests.md | 16 ++++++++++++ 11 files changed, 130 insertions(+), 6 deletions(-) create mode 100644 docs/SNIPPET.txt create mode 100644 exercises/shared/.docs/help.md create mode 100644 exercises/shared/.docs/tests.md diff --git a/config.json b/config.json index 3cf6df1..6b26e2a 100644 --- a/config.json +++ b/config.json @@ -48,5 +48,18 @@ }, "concepts": [], "key_features": [], - "tags": [] -} + "tags": [ + "paradigm/imperative", + "paradigm/procedural", + "typing/static", + "typing/weak", + "execution_mode/compiled", + "platform/android", + "platform/ios", + "platform/mac", + "platform/linux", + "runtime/standalone_executable", + "used_for/embedded_systems", + "used_for/mobile" + ] +} \ No newline at end of file diff --git a/docs/ABOUT.md b/docs/ABOUT.md index 79ac4c2..d9d40f6 100644 --- a/docs/ABOUT.md +++ b/docs/ABOUT.md @@ -1,2 +1,6 @@ # About +ARM64/AArch64 assembly is the 64-bit version of the ARM instruction set. It is based on the ARMv7 instruction set, which is in turn loosely based off the legacy ARM Classic instruction sets. + +This track involves programming in ARM64 assembly language, assembled and run on a cross-platform simulator. + diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 4026317..b199234 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -1,2 +1,13 @@ # Installation +Install the essential build tools, the QEMU emulator, and the GCC ARM64 cross-toolchain to test your code. + +```shell +$ sudo apt install build-essential qemu-user qemu-user-static binutils-aarch64-linux-gnu gcc-aarch64-linux-gnu +``` + +The makefile should be able to handle the rest. + +## Special note for Windows users + +Use Windows Subsystem for Linux's Ubuntu image to do the same steps listed above. \ No newline at end of file diff --git a/docs/LEARNING.md b/docs/LEARNING.md index c39c2a2..7329d70 100644 --- a/docs/LEARNING.md +++ b/docs/LEARNING.md @@ -1,2 +1,9 @@ # Learning +ARM64 assembly is a simple assembly language. You might be able to start off with [a reference card](https://courses.cs.washington.edu/courses/cse469/19wi/arm64.pdf). + +ARM also provides [digital reference](https://developer.arm.com/documentation) on the ARM64 (AArch64/ARMv8) architecture. + +I hope you enjoy learning ARM assembly and working through the exercises. This is a gateway to getting to know your phone or ARM64 based development hardware (the more recent Raspberry Pi models are an example). + +If you get stuck with any aspect of your learning or running the tests, the track maintainer Roland (metivier.roland@chlorophyt.us), is happy to help you directly. \ No newline at end of file diff --git a/docs/RESOURCES.md b/docs/RESOURCES.md index 06f84ec..977c310 100644 --- a/docs/RESOURCES.md +++ b/docs/RESOURCES.md @@ -1,2 +1,6 @@ # Resources +- [ARM64 reference card](https://courses.cs.washington.edu/courses/cse469/19wi/arm64.pdf) +- [Official ARM documentation](https://developer.arm.com/documentation) +- [The GAS Manual](https://sourceware.org/binutils/docs/as/) +- [The GAS AArch64 Specifics Section](https://sourceware.org/binutils/docs/as/AArch64_002dDependent.html#AArch64_002dDependent) diff --git a/docs/SNIPPET.txt b/docs/SNIPPET.txt new file mode 100644 index 0000000..bed5537 --- /dev/null +++ b/docs/SNIPPET.txt @@ -0,0 +1,13 @@ +.section .rodata +msg: .string "Assembly is awesome!\n" + +.text +.global main +main: + adrp x0, msg + add x0, x0, :lo12:msg + stp x29, x30, [sp] + bl printf + ldp x29, x30, [sp] + mov x0, #0 + ret diff --git a/docs/TESTS.md b/docs/TESTS.md index 5932b40..d7ff667 100644 --- a/docs/TESTS.md +++ b/docs/TESTS.md @@ -1,2 +1,18 @@ # Tests +## Running Tests + +To run the tests, execute the following command: + +```bash +make +``` + +## Solving the exercise + +Solving an exercise means making all its tests pass. By default, only one test +(the first one) is executed when you run the tests. This is intentional, as it +allows you to focus on just making that one test pass. Once it passes, you can +enable the next test by removing the `TEST_IGNORE()` line. When all tests have +been enabled and your implementation makes them all pass, you'll have solved +the exercise! diff --git a/docs/config.json b/docs/config.json index 6f9406d..3ba35d5 100644 --- a/docs/config.json +++ b/docs/config.json @@ -1,3 +1,33 @@ + { - "docs": [] -} + "docs": [ + { + "uuid": "3625b605-b556-4bcf-87da-77f06e493deb", + "slug": "installation", + "path": "docs/INSTALLATION.md", + "title": "Installing ARM64 Assembly locally", + "blurb": "Learn how to install ARM64 Assembly locally to solve Exercism's exercises on your own machine" + }, + { + "uuid": "3a09769c-f5ad-4e3a-912a-b06ba6cf604b", + "slug": "learning", + "path": "docs/LEARNING.md", + "title": "How to learn ARM64 Assembly", + "blurb": "An overview of how to get started from scratch with ARM64 Assembly" + }, + { + "uuid": "292b3fa9-45dd-43ec-8528-d3bf442200a4", + "slug": "tests", + "path": "docs/TESTS.md", + "title": "Testing on the ARM64 Assembly track", + "blurb": "Learn how to test your ARM64 Assembly exercises on Exercism" + }, + { + "uuid": "d4066012-de8c-4c28-89eb-f68dbd075444", + "slug": "resources", + "path": "docs/RESOURCES.md", + "title": "Useful ARM64 Assembly resources", + "blurb": "A collection of useful resources to help you master ARM64 Assembly" + } + ] +} \ No newline at end of file diff --git a/exercises/practice/hello-world/Makefile b/exercises/practice/hello-world/Makefile index 3813116..a69f16f 100644 --- a/exercises/practice/hello-world/Makefile +++ b/exercises/practice/hello-world/Makefile @@ -1,4 +1,5 @@ -AS = as +AS = aarch64-linux-gnu-as +CC = aarch64-linux-gnu-gcc CFLAGS = -g -Wall -Wextra -pedantic -Werror LDFLAGS = @@ -15,7 +16,7 @@ ALL_OBJS = $(filter-out example.o,$(C_OBJS) $(AS_OBJS) vendor/unity.o) CC_CMD = $(CC) $(ALL_CFLAGS) -c -o $@ $< all: tests - @./$< + qemu-aarch64 -L /usr/aarch64-linux-gnu ./$< tests: $(ALL_OBJS) @$(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) -o $@ $(ALL_OBJS) diff --git a/exercises/shared/.docs/help.md b/exercises/shared/.docs/help.md new file mode 100644 index 0000000..827205c --- /dev/null +++ b/exercises/shared/.docs/help.md @@ -0,0 +1,9 @@ +# Help + +To get help if you're having trouble, you can use one of the following resources: + +- [ARM64 reference card](https://courses.cs.washington.edu/courses/cse469/19wi/arm64.pdf) +- [Official ARM documentation](https://developer.arm.com/documentation) +- [The GAS Manual](https://sourceware.org/binutils/docs/as/) +- [The GAS AArch64 Specifics Section](https://sourceware.org/binutils/docs/as/AArch64_002dDependent.html#AArch64_002dDependent) +- [StackOverflow](http://stackoverflow.com) can be used to search for your problem and see if it has been answered already. You can also ask and answer questions. diff --git a/exercises/shared/.docs/tests.md b/exercises/shared/.docs/tests.md new file mode 100644 index 0000000..c1e9b5c --- /dev/null +++ b/exercises/shared/.docs/tests.md @@ -0,0 +1,16 @@ +# Tests + +To run the tests, execute the following command: + +```bash +make +``` + +## Skipped tests + +Solving an exercise means making all its tests pass. By default, only one test +(the first one) is executed when you run the tests. This is intentional, as it +allows you to focus on just making that one test pass. Once it passes, you can +enable the next test by removing the `TEST_IGNORE()` line. When all tests have +been enabled and your implementation makes them all pass, you'll have solved +the exercise! From c8087d988c46181ffe85bbcb2482d74189de8f70 Mon Sep 17 00:00:00 2001 From: Roland Metivier Date: Thu, 11 Nov 2021 20:14:28 -0600 Subject: [PATCH 03/10] README needed a clarification, scratchpad info isn't needed but will be recorded --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 7dd2167..01f4449 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,6 @@ What core will we run in the test runner? Many ARM64 cores are different, like the [Cortex-A53](https://www.arm.com/products/silicon-ip-cpu/cortex-a/cortex-a53) compared to other cores. Probably could use that one as a basis for the runner, or the [Cortex-A72](https://www.arm.com/products/silicon-ip-cpu/cortex-a/cortex-a72). -### Scratchpad - -- https://qemu.readthedocs.io/en/latest/system/arm/virt.html (A53 and A72 are supported for theoretical QEMU/GDB based tests) - ## Contributing Guide Please see the [contributing guide](https://github.com/exercism/x-api/blob/master/CONTRIBUTING.md#the-exercise-data) \ No newline at end of file From 485da6f21625f5d59e795bf0d9cc84dc1015a656 Mon Sep 17 00:00:00 2001 From: Roland Metivier Date: Thu, 11 Nov 2021 20:20:40 -0600 Subject: [PATCH 04/10] README TODOs have been stripped and redone --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 01f4449..e30e9a3 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,17 @@ Exercism exercises in ARM64 Assembly. -## TODO +## Assembler -### The Profile (A, R, or M) +GNU Assembler (gas) is used for this track. -What ARM64/ARMv8/AArch64 profile are we using? Probably should be A-profile. +## Testing -### The Core +Unity is a simple unit testing framework for C used by this track. Using a framework written in C instead of assembly language is easier to understand. It also shows how parameters are passed when calling assembly routines from C. -What core will we run in the test runner? +## Variant and Calling Conventions -Many ARM64 cores are different, like the [Cortex-A53](https://www.arm.com/products/silicon-ip-cpu/cortex-a/cortex-a53) compared to other cores. Probably could use that one as a basis for the runner, or the [Cortex-A72](https://www.arm.com/products/silicon-ip-cpu/cortex-a/cortex-a72). +This is probably going to use the ARMv8.0-A profile which is a good default. This track is also probably going to use the ARM default calling convention to spare mentors from trouble. ## Contributing Guide From e5e6c00aaf51de22f94ae82a3d50ff911a171feb Mon Sep 17 00:00:00 2001 From: Roland Metivier Date: Fri, 12 Nov 2021 11:17:51 -0600 Subject: [PATCH 05/10] Apply suggestions from code review The other changes seem to require manual intervention and discussion. Will get to that in a bit. Co-authored-by: Derk-Jan Karrenbeld --- README.md | 7 +++++-- docs/ABOUT.md | 3 ++- docs/INSTALLATION.md | 2 +- docs/LEARNING.md | 3 ++- docs/TESTS.md | 11 +++++------ exercises/shared/.docs/tests.md | 11 +++++------ 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index e30e9a3..b9271a0 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,14 @@ GNU Assembler (gas) is used for this track. ## Testing -Unity is a simple unit testing framework for C used by this track. Using a framework written in C instead of assembly language is easier to understand. It also shows how parameters are passed when calling assembly routines from C. +Unity is a simple unit testing framework for C used by this track. +Using a framework written in C instead of assembly language is easier to understand. +It also shows how parameters are passed when calling assembly routines from C. ## Variant and Calling Conventions -This is probably going to use the ARMv8.0-A profile which is a good default. This track is also probably going to use the ARM default calling convention to spare mentors from trouble. +This is probably going to use the ARMv8.0-A profile which is a good default. +This track is also probably going to use the ARM default calling convention to spare mentors from trouble. ## Contributing Guide diff --git a/docs/ABOUT.md b/docs/ABOUT.md index d9d40f6..a5b5949 100644 --- a/docs/ABOUT.md +++ b/docs/ABOUT.md @@ -1,6 +1,7 @@ # About -ARM64/AArch64 assembly is the 64-bit version of the ARM instruction set. It is based on the ARMv7 instruction set, which is in turn loosely based off the legacy ARM Classic instruction sets. +ARM64/AArch64 assembly is the 64-bit version of the ARM instruction set. +It is based on the ARMv7 instruction set, which is in turn loosely based off the legacy ARM Classic instruction sets. This track involves programming in ARM64 assembly language, assembled and run on a cross-platform simulator. diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index b199234..7b4f1ee 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -3,7 +3,7 @@ Install the essential build tools, the QEMU emulator, and the GCC ARM64 cross-toolchain to test your code. ```shell -$ sudo apt install build-essential qemu-user qemu-user-static binutils-aarch64-linux-gnu gcc-aarch64-linux-gnu +sudo apt install build-essential qemu-user qemu-user-static binutils-aarch64-linux-gnu gcc-aarch64-linux-gnu ``` The makefile should be able to handle the rest. diff --git a/docs/LEARNING.md b/docs/LEARNING.md index 7329d70..ed036cc 100644 --- a/docs/LEARNING.md +++ b/docs/LEARNING.md @@ -1,6 +1,7 @@ # Learning -ARM64 assembly is a simple assembly language. You might be able to start off with [a reference card](https://courses.cs.washington.edu/courses/cse469/19wi/arm64.pdf). +ARM64 assembly is a simple assembly language. +You might be able to start off with [a reference card](https://courses.cs.washington.edu/courses/cse469/19wi/arm64.pdf). ARM also provides [digital reference](https://developer.arm.com/documentation) on the ARM64 (AArch64/ARMv8) architecture. diff --git a/docs/TESTS.md b/docs/TESTS.md index d7ff667..3912fe5 100644 --- a/docs/TESTS.md +++ b/docs/TESTS.md @@ -10,9 +10,8 @@ make ## Solving the exercise -Solving an exercise means making all its tests pass. By default, only one test -(the first one) is executed when you run the tests. This is intentional, as it -allows you to focus on just making that one test pass. Once it passes, you can -enable the next test by removing the `TEST_IGNORE()` line. When all tests have -been enabled and your implementation makes them all pass, you'll have solved -the exercise! +Solving an exercise means making all its tests pass. +By default, only one test (the first one) is executed when you run the tests. +This is intentional, as it allows you to focus on just making that one test pass. +Once it passes, you can enable the next test by removing the `TEST_IGNORE()` line. +When all tests have been enabled and your implementation makes them all pass, you'll have solved the exercise! diff --git a/exercises/shared/.docs/tests.md b/exercises/shared/.docs/tests.md index c1e9b5c..d0a835d 100644 --- a/exercises/shared/.docs/tests.md +++ b/exercises/shared/.docs/tests.md @@ -8,9 +8,8 @@ make ## Skipped tests -Solving an exercise means making all its tests pass. By default, only one test -(the first one) is executed when you run the tests. This is intentional, as it -allows you to focus on just making that one test pass. Once it passes, you can -enable the next test by removing the `TEST_IGNORE()` line. When all tests have -been enabled and your implementation makes them all pass, you'll have solved -the exercise! +Solving an exercise means making all its tests pass. +By default, only one test (the first one) is executed when you run the tests. +This is intentional, as it allows you to focus on just making that one test pass. +Once it passes, you can enable the next test by removing the `TEST_IGNORE()` line. +When all tests have been enabled and your implementation makes them all pass, you'll have solved the exercise! From acd131fd5abacf2327a672ee526ccaeadc18a159 Mon Sep 17 00:00:00 2001 From: Roland Metivier Date: Fri, 12 Nov 2021 11:39:22 -0600 Subject: [PATCH 06/10] add 'we' instead of 'I' along with suggested edit --- docs/LEARNING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/LEARNING.md b/docs/LEARNING.md index ed036cc..f4f2e9c 100644 --- a/docs/LEARNING.md +++ b/docs/LEARNING.md @@ -5,6 +5,8 @@ You might be able to start off with [a reference card](https://courses.cs.washin ARM also provides [digital reference](https://developer.arm.com/documentation) on the ARM64 (AArch64/ARMv8) architecture. -I hope you enjoy learning ARM assembly and working through the exercises. This is a gateway to getting to know your phone or ARM64 based development hardware (the more recent Raspberry Pi models are an example). +We hope you enjoy learning ARM assembly and working through the exercises. + +This is a gateway to getting to know your phone or ARM64 based development hardware (the more recent Raspberry Pi models are an example). If you get stuck with any aspect of your learning or running the tests, the track maintainer Roland (metivier.roland@chlorophyt.us), is happy to help you directly. \ No newline at end of file From b5a68eed63d757d39f6dc7688cfc3c6134a1e665 Mon Sep 17 00:00:00 2001 From: Roland Metivier Date: Fri, 12 Nov 2021 12:01:27 -0600 Subject: [PATCH 07/10] Hold off on the help note based on suggestions in #51 I don't think I'm ready for that yet. The MIPS assembly track was doing it though but giving it thought seems to show my situation is different. --- docs/LEARNING.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/LEARNING.md b/docs/LEARNING.md index f4f2e9c..b24af19 100644 --- a/docs/LEARNING.md +++ b/docs/LEARNING.md @@ -8,5 +8,3 @@ ARM also provides [digital reference](https://developer.arm.com/documentation) o We hope you enjoy learning ARM assembly and working through the exercises. This is a gateway to getting to know your phone or ARM64 based development hardware (the more recent Raspberry Pi models are an example). - -If you get stuck with any aspect of your learning or running the tests, the track maintainer Roland (metivier.roland@chlorophyt.us), is happy to help you directly. \ No newline at end of file From 5aea03e2531edab7288f3c72224698f2a92a0be6 Mon Sep 17 00:00:00 2001 From: Roland Metivier Date: Fri, 12 Nov 2021 12:12:27 -0600 Subject: [PATCH 08/10] fix up INSTALLATION instructions --- docs/INSTALLATION.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 7b4f1ee..f2b377a 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -6,8 +6,8 @@ Install the essential build tools, the QEMU emulator, and the GCC ARM64 cross-to sudo apt install build-essential qemu-user qemu-user-static binutils-aarch64-linux-gnu gcc-aarch64-linux-gnu ``` -The makefile should be able to handle the rest. +The makefile in the exercise directory should be able to handle the rest. ## Special note for Windows users -Use Windows Subsystem for Linux's Ubuntu image to do the same steps listed above. \ No newline at end of file +Use Windows Subsystem for Linux 2 with an Ubuntu image to do the same steps listed above. \ No newline at end of file From 5406e5953d643610bf976e4e01af2fe76f5192fc Mon Sep 17 00:00:00 2001 From: Roland Metivier Date: Sun, 14 Nov 2021 12:51:23 -0600 Subject: [PATCH 09/10] edit links into reflinks + missing newline added to a config --- README.md | 4 +++- config.json | 2 +- docs/LEARNING.md | 7 +++++-- docs/RESOURCES.md | 12 +++++++++--- docs/config.json | 2 +- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index b9271a0..bd51784 100644 --- a/README.md +++ b/README.md @@ -21,4 +21,6 @@ This track is also probably going to use the ARM default calling convention to s ## Contributing Guide -Please see the [contributing guide](https://github.com/exercism/x-api/blob/master/CONTRIBUTING.md#the-exercise-data) \ No newline at end of file +Please see the [contributing guide][contributing-guide] + +[contributing-guide]: https://github.com/exercism/x-api/blob/master/CONTRIBUTING.md#the-exercise-data diff --git a/config.json b/config.json index 6b26e2a..759a9c9 100644 --- a/config.json +++ b/config.json @@ -62,4 +62,4 @@ "used_for/embedded_systems", "used_for/mobile" ] -} \ No newline at end of file +} diff --git a/docs/LEARNING.md b/docs/LEARNING.md index b24af19..2b668d0 100644 --- a/docs/LEARNING.md +++ b/docs/LEARNING.md @@ -1,10 +1,13 @@ # Learning ARM64 assembly is a simple assembly language. -You might be able to start off with [a reference card](https://courses.cs.washington.edu/courses/cse469/19wi/arm64.pdf). +You might be able to start off with [a reference card][reference-card]. -ARM also provides [digital reference](https://developer.arm.com/documentation) on the ARM64 (AArch64/ARMv8) architecture. +ARM also provides [digital reference][official-reference] on the ARM64 (AArch64/ARMv8) architecture. We hope you enjoy learning ARM assembly and working through the exercises. This is a gateway to getting to know your phone or ARM64 based development hardware (the more recent Raspberry Pi models are an example). + +[reference-card]: https://courses.cs.washington.edu/courses/cse469/19wi/arm64.pdf +[official-reference]: https://developer.arm.com/documentation diff --git a/docs/RESOURCES.md b/docs/RESOURCES.md index 977c310..b180a46 100644 --- a/docs/RESOURCES.md +++ b/docs/RESOURCES.md @@ -1,6 +1,12 @@ # Resources -- [ARM64 reference card](https://courses.cs.washington.edu/courses/cse469/19wi/arm64.pdf) -- [Official ARM documentation](https://developer.arm.com/documentation) -- [The GAS Manual](https://sourceware.org/binutils/docs/as/) +- [ARM64 reference card][reference-card] +- [Official ARM documentation][official-reference] +- [The GAS Manual][gas-manual] - [The GAS AArch64 Specifics Section](https://sourceware.org/binutils/docs/as/AArch64_002dDependent.html#AArch64_002dDependent) + + +[reference-card]: https://courses.cs.washington.edu/courses/cse469/19wi/arm64.pdf +[official-reference]: https://developer.arm.com/documentation +[gas-manual]: https://sourceware.org/binutils/docs/as/ +[gas-aarch64-specifics]: https://sourceware.org/binutils/docs/as/AArch64_002dDependent.html#AArch64_002dDependent diff --git a/docs/config.json b/docs/config.json index 3ba35d5..b901bf8 100644 --- a/docs/config.json +++ b/docs/config.json @@ -30,4 +30,4 @@ "blurb": "A collection of useful resources to help you master ARM64 Assembly" } ] -} \ No newline at end of file +} From 93b8be9255d6a2e8baa7e184e6f3e532d4c8623d Mon Sep 17 00:00:00 2001 From: Roland Metivier Date: Sun, 14 Nov 2021 12:56:53 -0600 Subject: [PATCH 10/10] append a lone reflink I forgot to change --- docs/RESOURCES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/RESOURCES.md b/docs/RESOURCES.md index b180a46..79b8127 100644 --- a/docs/RESOURCES.md +++ b/docs/RESOURCES.md @@ -3,7 +3,7 @@ - [ARM64 reference card][reference-card] - [Official ARM documentation][official-reference] - [The GAS Manual][gas-manual] -- [The GAS AArch64 Specifics Section](https://sourceware.org/binutils/docs/as/AArch64_002dDependent.html#AArch64_002dDependent) +- [The GAS AArch64 Specifics Section][gas-aarch64-specifics] [reference-card]: https://courses.cs.washington.edu/courses/cse469/19wi/arm64.pdf