public inbox for cgen@sourceware.org
 help / color / mirror / Atom feed
From: Manuel Kessler <mlkessle@cip.physik.uni-wuerzburg.de>
To: cgen@sources.redhat.com
Subject: Re: make CGEN a less moving target?
Date: Wed, 11 Dec 2002 02:39:00 -0000	[thread overview]
Message-ID: <Pine.GHP.4.21.0212110939180.23713-100000@wpax16.physik.uni-wuerzburg.de> (raw)
In-Reply-To: <15862.9492.864974.265990@xris-athlon.transmeta.com>

Hello list,

I am quite new to CGEN and started to write a new port of GNU binutils
(and later on gdb, gcc, ???) for the Mitsubishi M16C family of
microcontrollers (together with others, of course). You may find it, if
interested, at http://savannah.nongnu.org/projects/m16c/. Unfortunately,
it is a quite CISC like architecture, for which support in CGEN is, uhhm,
improvable. No offense intended certainly. 
Probably part of my problem is a lack of decent fluency in Scheme, but I
promise to better myself.

On Tue, 10 Dec 2002, Doug Evans wrote:

[...]
> 
> - I've always wanted to be able to handle the x86 ISA better.
>   [and ciscy isa's in general]
> 
[...]

Is "better" the correct term here? Or is x86 supposed to be working (at
least the partially implemented add instruction) at all, or to be seen as
how to do a CISC example? All other cpus are more RISC like.
After some problems with my own M16C port when defining non-contiguous
fields (define-multi-ifield) I tried the ia32.cpu description and got the
same error as in my case:

ERROR: In procedure map:
ERROR: Argument out of range: (0 0 2 5)

As said before, I am not (yet) capable of interpreting this error
correctly, but it seems to me that non-contiguous ifields are currently
not really supported. Is this correct, or how can I achieve the desired
effect? 

I am not quite sure how to correctly set the different *-bitsize values in
define-isa. The architecture is 16 bits (little endian), but the smallest
instruction is 8 bits long. So 8 should be a reasonable value. However,
many instructions are 16 bits or longer. Therefore I have to spefify
several instruction fields (for example a second operand field) with bit
numbers above 8. Will CGEN detect such cases and behave properly? Well, I
tried and it does generate some code, but as I am not yet at the stage of
building a complete application as gas or objdump, I can't really tell
whether the result is correct.

A more minor point: The architecture features some address registers,
which may be 16 or 24 bits wide, depending on the model, otherwise being
16 bit. Therefore I tried to describe these in define-hardware as of mode
AI (address integer), as described in the manual, section 3.15 (Modes). 
However, this was rejected as "mode AI not supported". Is this just an
oversight, not supported or am I simply off track here? For now, I
replaced it with SI and mask the superfluous bits, but AI would be more
descriptive and accurate.

Finally: The architecture allows additional indirect addressing by using a
special prefix byte, i.e. if you want to negate a register, you write
neg.w r0
but if you want to negate the memory value pointed to by the register
neg.w [r0]
the same opcode is used, prefixed by an additional byte marking the
indirect addressing of the following instruction. Clear? Is there any
chance to specify this addressing-fiddling with prefixes in CGEN?

Thank you very much for this fine piece of software and of course for
reading down this far, considering my sort of newbie questions.

Ciao,

	Manuel

PS: Oh well, I am using snapshot-20023011, and yes, I have read the manual
several times. 

  parent reply	other threads:[~2002-12-11 10:39 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-12-10  8:48 Johan Rydberg
2002-12-10  9:33 ` Doug Evans
2002-12-10 17:06   ` Johan Rydberg
2002-12-11  2:39   ` Manuel Kessler [this message]
2002-12-11  4:18     ` Frank Ch. Eigler
2002-12-11 13:36       ` Doug Evans
2002-12-11 13:42         ` Frank Ch. Eigler
2002-12-11 13:50           ` Doug Evans
2002-12-11 13:57             ` Frank Ch. Eigler
2002-12-11 14:25               ` Doug Evans
2002-12-11 10:08     ` Doug Evans

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=Pine.GHP.4.21.0212110939180.23713-100000@wpax16.physik.uni-wuerzburg.de \
    --to=mlkessle@cip.physik.uni-wuerzburg.de \
    --cc=cgen@sources.redhat.com \
    /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).