Compiling embedded assembly code (was: Cross compiling).

Suhaib M. Siddiqi
Tue Aug 31 23:49:00 GMT 1999

A bit off the topic.
working on Xfree86 port for cygwin, I had problem compiling
all assembly code in various directories in Xfree86 source tree.

Finally, I got compiled if I mounted disk
as binary.  With default mount (i.e text mount) I was getting errors
which were sort of misleading, like something was wrong with
the files or I was using wrong flags.


> -----Original Message-----
> From:
> []On Behalf Of Brendan Simon
> Sent: Monday, August 02, 1999 8:25 PM
> To: Franklin Wingate; CygWin32
> Subject: Re: Compiling embedded assembly code (was: Cross compiling).
> Franklin Wingate wrote:
> > When I try to compile with gcc -b i386 filename, I get the error
> > installation problem, cannot exec cc1: No such file or directory. Am i
> > using the correct compiler options?
> Hi Franklin,
> The gcc manual (info gcc) says :
>    The `-b' and `-V' options actually work by controlling part of the
> file name used for the executable files and libraries used for
> compilation.  A given version of GNU CC, for a given target machine, is
> normally kept in the directory `/usr/local/lib/gcc-lib/MACHINE/VERSION'.
>    Thus, sites can customize the effect of `-b' or `-V' either by
> changing the names of these directories or adding alternate names (or
> symbolic links).  If in directory `/usr/local/lib/gcc-lib/' the file
> `80386' is a link to the file `i386v', then `-b 80386' becomes an alias
> for `-b i386v'.
> Therefore using the -b i386 would require a /usr/local/gcc-lib/i386
> directory.  You need to substitute the cygwin install directory for
> /usr/local.  I am assuming that you are using cygwin (since this
> is the cygwin
> mailing list).  If you are using cygwin then you shouldn't need
> the -b i386 as
> the cygwin compiler understands 386 assembly code.
> I've had a look at the demo code you attached and the assembler
> coder does not
> appear to be adhere to the GCC syntax for assembler code.  It looks like a
> BorlandC or MicrosoftC extension for embedded assembly.  You will have to
> convert it to GCC syntax if you want it to work.  Have a look at the
> GCC manuals (there are some at ).
> For example
> /* sets the graphic mode to mode mode !? */
> void setmode(int mode)
> {
> asm     mov     ax,mode
> asm     int     10h
> }
> converts to :
> /* sets the graphic mode to mode mode !? */
> void setmode(int mode)
> {
>     asm(" mov   ax,%0" : /* no outputs */ : "r" (mode) );
>     asm(" int     10h");
> }
> I think this is correct but I am not an i386 assembly expert, nor a GCC
> embedded assembler expert.  I would read the assembler code
> syntax in the GCC
> manual, have an attempt at rewriting your code and compile it.
> If you can't
> get it to work then cut the C routines with the assebler from the code and
> paste (not attach) them in an email asking for help.  Include
> your attempts so
> people can see what you have tried.  Hopefully someone can correct your
> errors.
> Regards,
> Brendan Simon.
> --
> Want to unsubscribe from this list?
> Send a message to

Want to unsubscribe from this list?
Send a message to

More information about the Cygwin mailing list