浏览代码

* intel assembler reader: scale factor in references can also be a constant symbol, resolves #31165

git-svn-id: trunk@35473 -
florian 8 年之前
父节点
当前提交
b9dba41ad0
共有 3 个文件被更改,包括 24 次插入0 次删除
  1. 1 0
      .gitattributes
  2. 1 0
      compiler/x86/rax86int.pas
  3. 22 0
      tests/webtbs/tw31165.pp

+ 1 - 0
.gitattributes

@@ -15373,6 +15373,7 @@ tests/webtbs/tw3109.pp svneol=native#text/plain
 tests/webtbs/tw3111.pp svneol=native#text/plain
 tests/webtbs/tw31120.pp svneol=native#text/pascal
 tests/webtbs/tw3113.pp svneol=native#text/plain
+tests/webtbs/tw31165.pp svneol=native#text/pascal
 tests/webtbs/tw31201.pp svneol=native#text/pascal
 tests/webtbs/tw3124.pp svneol=native#text/plain
 tests/webtbs/tw31246.pp svneol=native#text/pascal

+ 1 - 0
compiler/x86/rax86int.pas

@@ -1406,6 +1406,7 @@ Unit Rax86int;
                 hs:='';
                 l:=0;
                 case actasmtoken of
+                  AS_ID,
                   AS_LPAREN :
                     l:=BuildConstExpression;
                   AS_INTNUM:

+ 22 - 0
tests/webtbs/tw31165.pp

@@ -0,0 +1,22 @@
+{ %CPU=i386 }
+{$asmmode intel}
+const climbsize = 4;
+
+procedure test;
+var
+  value : dword;
+begin
+  asm
+    XOR EAX,EAX
+    MOV EDI,1;
+    LEA EAX,[EAX + EDI*climbsize]
+    MOV value,EAX
+  end;
+  if value<>4 then
+    halt(1);
+end;
+
+begin
+  test;
+  writeln('ok');
+end.