From caa652ae2b3da86de945fa8d5ece55ddbbb2cf31 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Wed, 30 Jul 2025 16:34:48 -0400 Subject: oasm: Introduce logical shift operations This commit introduces LSR/LSL which are used as bitwise shift operations. -- lsr x1, #1 !! x1 >>= 1 lsl x1, #1 !! x1 <<= 1 -- Signed-off-by: Ian Moffett --- usr.bin/oasm/lex.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'usr.bin/oasm/lex.c') diff --git a/usr.bin/oasm/lex.c b/usr.bin/oasm/lex.c index ce97400..1f58d07 100644 --- a/usr.bin/oasm/lex.c +++ b/usr.bin/oasm/lex.c @@ -57,6 +57,8 @@ static char putback = '\0'; #define S_IMN_AND "and" #define S_IMN_OR "or" #define S_IMN_XOR "xor" +#define S_IMN_LSL "lsl" +#define S_IMN_LSR "lsr" /* Instruction length */ #define OSMX64_INST_LEN 4 @@ -269,6 +271,12 @@ token_bitw(char *p) return token; } + if (strcmp(p, S_IMN_LSL) == 0) { + return TT_LSL; + } else if (strcmp(p, S_IMN_LSR) == 0) { + return TT_LSR; + } + return TT_UNKNOWN; } -- cgit v1.2.3