forked from Macroassembler-AS/asl-releases
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
105 lines (78 loc) · 3.91 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Web page: http://john.ccac.rwth-aachen.de:8000/as/
Source repository: http://john.ccac.rwth-aachen.de:8000/ftp/as/source/c_version/
This is a mirror of Alfred Arnold's "The Macroassembler AS". It is generated
from the source drops at the source repository. No more detailed revision history
(say CVS) is available as of this writing.
For downloading, use repo/download.sh on the upstream branch. Then rebase the master
branch onto it.
I accept pull requests to the master branch, the upstream branch will remain pristine.
---
Hello, AS-Users,
OK, here it is, the C-Version of AS that is theoretically compilable
on any system that has an ANSI-C-compiler! After a couple of
optimizations, the performance degradations due to the way C handles
strings have been compensated, so the C version should effectively run
a bit faster than the original Pascal version.
LICENSING
AS is based upon the Gnu General Public License (GPL); read the file
COPYING for its details. You should have received a copy of this file
together with AS; if not, someone sneaked in!
PLATFORMS
The C version of AS was designed primarily to work with a Unix-like system
with an ANSI-C compilant compiler. Specifically, I have tested this version
of AS on the following machines:
- Digital Unix 3.2/4.0 with DEC-C
- Digital Ultrix for Mips 4.3/4.5 with gcc 2.7.2
- Digital Ultrix for VAX 4.1/4.5 with gcc 2.7.2
- Linux/Alpha with gcc 2.7.2
- Linux/Intel with gcc 2.7.2
- HP9000/7xx HP-UX 9.0/10.0 with HP-C
- MS-DOS with Borland-C 3.1 resp. 4.5
- OS/2 with emx 0.9
- Munix V.3 with cc
- NetBSD/Sun3 with gcc 2.7.2
- NetBSD/pmax with gcc 2.7.2
- SGI Irix 5.3/6.2 with SGI-C
- SunOS 4.1.3/Sparc with gcc 2.6.3 or cc
- Solaris 2.5/Sparc with Sun-C 3.0.1
- IBM RS/6000 AIX 4.1 with IBM XLC
DIFFERENCES / THINGS TO DO
The portable C version of AS has the following, known differences to
the original BP version:
- Floating point values are internally only stored as IEEE double
precision values, not in the 80-bit format Intel NPUs use.
Therefore, floating point ranges and accuracy are not as good as in
the BP version. Currently, there seems to be no portable,
standardized 128-bit-format for FP numbers. Every vendor (IBM,
SUN, CRAY, SGI...) uses his own format, so supporting them all
looks like a lot of work...
+ On most systems, integer arithmetic is done with 64-bit-numbers.
This should hurt only programs that explicitly exploit overflow
and sign effects on 32-bit-versions of AS.
- String variables must not contain NUL characters. This is due to
the fact that C uses the NUL character as an end-of-string marker,
and is probably the hardest thing to resolve :-(
~ most UNIX systems name their own assembler already 'as', so I had
to modify the name to 'asl'. The additional letter is to the honor
of a person that did quite a lot to spread the UNIX philosophy ;-)
I also had to rename 'bind' to 'pbind', but I guess that this won't
matter too much as it is a rarely used tool.
- the C version was designed to have exactly the same command line
interface as the original BP version; however, UNIX shells
interprete some special characters like the dollar sign for hex
values in their own way, so you might have to work with escape (\)
and quote characters.
+ the USEXMS resp. USEEMS and ASXSWAP environment variables do not
exist for Unix platforms (thankfully).
- the AS2MSG filter does not exist (wouldn't make sense because there
is no Borland Pascal for Unix.)
+ This version now contains dynamic switching of program messages, i.e.
you do not have to compile AS any more for a specific language. Instead,
AS will test the LC_MESSAGES, LC_ALL, or LANG environment variables
on Unix resp. the COUNTRY settings on OS/2 and MSDOS to dynamically
load the correct set of messages at runtime.
INSTALLATION
See the file 'INSTALL'
FEEDBACK
In case of problems or questions, send them to [email protected] .