aboutsummaryrefslogtreecommitdiff
path: root/i386-asm.c
diff options
context:
space:
mode:
Diffstat (limited to 'i386-asm.c')
-rw-r--r--i386-asm.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/i386-asm.c b/i386-asm.c
index 2623ef6..4d2f9b8 100644
--- a/i386-asm.c
+++ b/i386-asm.c
@@ -376,8 +376,20 @@ static void parse_operand(TCCState *s1, Operand *op)
op->e.v = e.v;
op->e.sym = e.sym;
} else {
- op->e.v = 0;
- op->e.sym = NULL;
+ next();
+ if (tok == '%') {
+ unget_tok('(');
+ op->e.v = 0;
+ op->e.sym = NULL;
+ } else {
+ /* bracketed offset expression */
+ asm_expr(s1, &e);
+ if (tok != ')')
+ expect(")");
+ next();
+ op->e.v = e.v;
+ op->e.sym = e.sym;
+ }
}
if (tok == '(') {
next();