??? 01/25/11 08:17 Read: times |
#180766 - "standard syntax" of '51 assemblers |
This is a continuation of an unrelated topic from an other thread.
Jan Waclawek said:
[...] unfortunately, both [the SDCC assembler and the GNU assembler] have not quite standard syntax. Per Westermark said:
Define "standard syntax". Good point. There are several things which can go under "standard syntax": 1. instructions mnemonics (including notation of different addressing modes) 2. predefined register names 3. syntax of pseudo-ops/directives, including macros if available 4. other formal requirements such as case sensitivity, usage of TABs, syntax of labels/symbols ("no leading space" vs. "followed by semicolon" paradigms), notation of literals (constants, hexadecimal, allowed complexity and operators and method of evaluation of expressions), etc. 5. anything important I have forgotten :-) In the world of 8051 assemblers, the norm - as Per said - is set by the original Intel assembler. Now some of the other assemblers - say the Metalink assembler - conform to it quite well in every item of the above list; while others - including the GNU and SDCC assemblers - differ significantly, but they usually differ significantly only in item 3 (less usually also in 4). It would be very strange if an assembler would use a different mnemonics than that defined by the original developer of the chip/core (*). Given the different architectures have usually different mnemonics, this also means, that one accustomed to Motorola or any other syntax would have trouble reading a '51 program even if both were written for the respective port of the GNU assembler (i.e. they both match in items 3 and 4). Corollary is, that the various assemblers rarely have "standard full syntax", which reduces asm programs' portability, and this is one of the greatest weakness of assembly programming as such. Comments, please. JW --- (*) I did commit this crime. Back then I persuaded my colleague to write us an assembler for the Intel '196 16-bit mcu, with mnemonics resembling the 6502 which we had used extensively in the period before, as I found the Intel mnemonics less logical and harder to remember. Interestingly, we found that we - including colleagues who joined the project later - did not have any problems using the Intel manuals etc. This was a tool internal to that company, though, so the incompatibility could not cause any problems beyond our own confusion. |