123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- { %OPT= -Aas }
- { Old file: tbs0124.pp }
- { Asm, problem with -Rintel switch and indexing OK 0.99.11 (PM/PFV) }
- { this problem comes from the fact that
- L is a static variable, not a local one !!
- but the static variable symtable is the localst of the
- main procedure (PM)
- It must be checked if we are at main level or not !! }
- var
- l : longint;
- procedure error;
- begin
- Writeln('Error in tbs0124');
- Halt(1);
- end;
- begin
- {$asmmode direct}
- asm
- movl $5,l
- end;
- if l<>5 then error;
- {$asmmode att}
- asm
- movl l,%eax
- addl $2,%eax
- movl %eax,l
- end;
- if l<>7 then error;
- {$asmmode intel}
- { problem here is that l is replaced by BP-offset }
- { relative to stack, and the parser thinks all wrong }
- { because of this. }
- asm
- mov eax,l
- add eax,5
- mov l,eax
- end;
- if l<>12 then error;
- Writeln('tbs0124 OK');
- end.
|