awlsim - STEP 7 compatibility ============================= The execution of AWL/STL programs by awlsim is supposed to be fully compatible with the execution of compiled AWL/STL programs on the real Siemens S7 CPU. However, there currently are some known differences. These are listed below. Any undocumented difference between awlsim and STEP 7 is considered to be a bug that should be reported. - awlsim does not implement all features of STEP 7, yet. See TODO.txt for a list of missing features. - Semicolons: AWL/STL requires semicolons (;) after each declaration, initialization and statement. As an awlsim convenience service, terminating semicolons can be omitted in AWL/STL statements. Data declarations and initializations (in DBs and FB/FC interfaces), however, must end with a semicolon. - awlsim does not compile AWL/STL to MC7 code and it cannot execute MC7 code. On startup awlsim translates the AWL/STL code to an awlsim specific in-memory representation of the code. There is no byte-code representation of this code. - Some key concepts, such as CALL or memory indirect adressing are implemented natively on awlsim. That means CALL is not a macro in awlsim. This improves runtime performance. From a user's perspective there should not be any functional difference visible. Any such difference is a bug. - Undefined behavior is not emulated. For example: If reading uninitialized L-stack space on STEP 7 always yields a certain reproducible result, that does not mean that this AWL/STL code does the same thing on awlsim. Reading uninitialized memory is undefined.