No description
doc | ||
lcc | ||
misc | ||
Mkfiles | ||
rdoff | ||
test | ||
assemble.c | ||
assemble.h | ||
c16.mac | ||
c32.mac | ||
changed.asm | ||
Changes | ||
configure.in | ||
COPYING | ||
disasm.c | ||
disasm.h | ||
eval.c | ||
eval.h | ||
exebin.mac | ||
float.c | ||
float.h | ||
insns.dat | ||
insns.h | ||
insns.pl | ||
install-sh | ||
internal.doc | ||
labels.c | ||
labels.h | ||
Licence | ||
listing.c | ||
listing.h | ||
macros.c | ||
macros.pl | ||
makedist.sh | ||
Makefile.in | ||
MODIFIED | ||
names.c | ||
nasm.1 | ||
nasm.c | ||
nasm.h | ||
nasmlib.c | ||
nasmlib.h | ||
ndisasm.1 | ||
ndisasm.c | ||
ndisasm.doc | ||
outaout.c | ||
outas86.c | ||
outbin.c | ||
outcoff.c | ||
outdbg.c | ||
outelf.c | ||
outform.c | ||
outform.h | ||
outforms.h | ||
outobj.c | ||
outrdf.c | ||
outrdf2.c | ||
parser.c | ||
parser.h | ||
preproc.c | ||
preproc.h | ||
Readme | ||
standard.mac | ||
sync.c | ||
sync.h | ||
Wishlist | ||
zoutieee.c |
This directory contains the necessary files to port the C compiler ``LCC'' (available by FTP from sunsite.doc.ic.ac.uk in the directory /computing/programming/languages/c/lcc) to compile for Linux (a.out or ELF) or other supported operating systems by using NASM as a back-end code generator. This patch has been tested on lcc version 4.0. To install: - Copy `x86nasm.md' into the `src' directory of the lcc tree. - Copy either `lin-elf.c' or `lin-aout.c' into the `etc' directory. - With previous versions, you had to modify x86-nasm.md if you weren't using ELF. There is now inbuilt support within NASM in the shape of the __CDECL__ macro, so this modification is no longer necessary. - Make the following changes to `bind.c' in the `src' directory: - Near the top of the file, add a line that reads extern Interface x86nasmIR; - In the `bindings' array, add the lines "x86-nasm", &x86nasmIR, "x86/nasm", &x86nasmIR, (in sensible looking places...) A sample `bind.c' has been provided to show what the result of this might look like. You might be able to get away with using it directly... - Modify the lcc makefile to include rules for x86nasm.o: this will have to be done in about three places. Just copy any line with `x86' on it and modify it to read `x86nasm' everywhere. (Except that in the list of object files that rcc is made up from, do remember to ensure that every line but the last has a trailing backslash...) - You may have to modify the contents of `lin-elf.c' or `lin-aout.c' to reflect the true locations of files such as crt0.o, crt1.o, ld-linux.so and so forth. If you don't know where to find these, compile a short C program with `gcc -v' and see what command line gcc feeds to `ld'. - You should now be able to build lcc, using `lin-elf.c' or `lin-aout.c' as the system-dependent part of the `lcc' wrapper program. - Symlink x86nasm.c into the `src' directory before attempting the triple test, or the compile will fail. - Now it should pass the triple test, on either ELF or a.out. Voila!