From: mperrin@hcs.harvard.edu (Marshall Perrin)
To: help-gcc@gnu.org
Subject: Assembler in C under Linux
Date: Fri, 31 Dec 1999 22:24:00 -0000 [thread overview]
Message-ID: <slrn84dhpn.ihf.mperrin@hcs.harvard.edu> (raw)
Message-ID: <19991231222400.64FkEZIec7CfcfI-2xCwkoAapD3vwwPR_xy7XClRDNI@z> (raw)
I'm trying to port a driver for a digital signal processor card from
DOS to Linux. The DOS driver, developed by someone not me ;-), is
mostly C but has a fair amount of inline assembler. For Borland C for
DOS, this was pretty easy to do. Just
asm {
mov dx, DSP_BaseIO
add dx, reg_offset
}
etc etc.
Gcc of course chokes on the above. I've attempted to read through the gcc
documentation and figure out how to do this, but no luck. That led me
towards something like
asm("mov dx, %0" : : "d" (DSP32C_BaseIo));
asm("add dx, %0" : : "d" (reg_offset));
asm("in ax,dx");
asm("mov %0,ax" :"=d" (value) : );
And yet I get the error message "/tmp/ccAimSJo.s:818: Error:
operands given don't match any known 386 instruction" over and over again
with that approach.
Poking through the kernel source leads me to try something like
asm("mov %%edx, %0" : : "b" (DSP_BaseIo));
asm("add %%edx, %0" : : "b" (reg_offset));
asm("in %%eax,%%edx");
asm("mov %0,%%eax" :"=b" (value) : );
But that's no luck either - If I comment out the third line, that compiles,
but if the 3rd line is there I get "/tmp/ccGjg9uV.s:26: Error: bad
register name ('%%eax')", which makes little sense as I use %%eax just fine
in the other three instructions.
So, what am I doing wrong? Any help here would be greatly appreciated, whether it be
pointer to a web page, book, or some other source of information. Thanks much!
- Marshall Perrin
Harvard/Smithsonian Center for Astrophysics
next reply other threads:[~1999-12-31 22:24 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-12-02 11:37 Marshall Perrin [this message]
1999-12-04 22:51 ` Martin Kahlert
1999-12-31 22:24 ` Martin Kahlert
1999-12-31 22:24 ` Marshall Perrin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=slrn84dhpn.ihf.mperrin@hcs.harvard.edu \
--to=mperrin@hcs.harvard.edu \
--cc=help-gcc@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).