aboutsummaryrefslogtreecommitdiff
path: root/newasm/parsers/whitespace.s
diff options
context:
space:
mode:
Diffstat (limited to 'newasm/parsers/whitespace.s')
-rw-r--r--newasm/parsers/whitespace.s23
1 files changed, 23 insertions, 0 deletions
diff --git a/newasm/parsers/whitespace.s b/newasm/parsers/whitespace.s
new file mode 100644
index 0000000..708cab3
--- /dev/null
+++ b/newasm/parsers/whitespace.s
@@ -0,0 +1,23 @@
+.syntax unified
+.cpu cortex-m0plus
+.thumb
+
+.type whitespace, %function
+.global whitespace
+
+// 1 unexpected char
+
+// R4 input buffer
+
+whitespace:
+ LDRB R0, [R4] // get a char
+ CMP R0, ' // space
+ BEQ 1f
+ MOVS R0, #1 // return code 1 (unexpected char)
+ BX LR
+1: ADDS R4, 1 // consume the character
+ LDRB R0, [R4] // get another character
+ CMP R0, ' // check if space
+ BEQ 1b // if so keep getting chars
+ MOVS R0, #0 // return code 0 (success)
+ BX LR