diff --git a/shell/m.cpp b/shell/m.cpp index dc0c4a0..577736c 100644 --- a/shell/m.cpp +++ b/shell/m.cpp @@ -5,20 +5,21 @@ // ms //--- -static FxOS::Symbol parse_ms(Session &, Parser &parser) +static FxOS::Symbol parse_ms(Session &session, Parser &parser) { - Token t = parser.expect({T::NUM, T::SYSCALL}); - FxOS::Symbol s; - if(t.type == T::SYSCALL) + + if(parser.lookahead().type == T::SYSCALL) { s.type = FxOS::Symbol::Syscall; - else + s.value = parser.expect(T::SYSCALL).value.NUM; + } else { s.type = FxOS::Symbol::Address; + s.value = parser.expr(session.current_space); + } - s.value = t.value.NUM; s.name = parser.symbol(); - parser.end(); + return s; }