This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: Compiling embedded assembly code (was: Cross compiling).



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.

--sms


> -----Original Message-----
> From: cygwin-owner@sourceware.cygnus.com
> [mailto:cygwin-owner@sourceware.cygnus.com]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 http://www.objsw.com).
>
> 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 cygwin-unsubscribe@sourceware.cygnus.com
>


--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]