Commit Graph

864 Commits

Author SHA1 Message Date
Julian Seward
d4e2839ffb Fix %rip-relative addressing, which uses the address of the _next_
instruction, not the current one.  Grrr.  This is inconvenient since
it means we sometimes need to know how long an insn is before it is
decoded, and that information is only available after is is decoded.

Currently we make guesses about insn length when a %rip-relative
address appears.  If such a guess is made, it is then checked for
correctness after the decode, so at least all errors should get picked
up.



git-svn-id: svn://svn.valgrind.org/vex/trunk@864
2005-02-07 15:02:25 +00:00
Julian Seward
157eeeee80 Fix guest-state layout descriptor.
git-svn-id: svn://svn.valgrind.org/vex/trunk@863
2005-02-07 14:59:28 +00:00
Julian Seward
e5dcf5d3fe Typechecker police.
git-svn-id: svn://svn.valgrind.org/vex/trunk@862
2005-02-07 03:12:19 +00:00
Julian Seward
2955c11bc3 More typechecker police. Hopefully this doesn't break anything.
git-svn-id: svn://svn.valgrind.org/vex/trunk@861
2005-02-07 03:11:17 +00:00
Julian Seward
c4aab86b68 Suppress another warning.
git-svn-id: svn://svn.valgrind.org/vex/trunk@860
2005-02-07 02:34:22 +00:00
Julian Seward
8a100a4da0 Typechecker police (a big commit, but all harmless).
git-svn-id: svn://svn.valgrind.org/vex/trunk@859
2005-02-07 02:33:58 +00:00
Julian Seward
1c5945eff5 Typechecker police. There are a couple of unresolved warnings which
actually point out some interesting inconsistencies.



git-svn-id: svn://svn.valgrind.org/vex/trunk@858
2005-02-07 01:42:18 +00:00
Julian Seward
0d5cc040e1 Typechecker police
git-svn-id: svn://svn.valgrind.org/vex/trunk@857
2005-02-07 01:39:17 +00:00
Julian Seward
2c1e2edde0 Make iropt.c compile cleanly with icc in paranoid mode. Along the way,
find and fix what looked like a bug in the folding rule for Iop_32to1.


git-svn-id: svn://svn.valgrind.org/vex/trunk@856
2005-02-07 01:11:31 +00:00
Julian Seward
6d551741ea More 32-bit build cleanups.
git-svn-id: svn://svn.valgrind.org/vex/trunk@855
2005-02-07 00:20:43 +00:00
Julian Seward
2e798a8c20 Get a clean(er) build on amd64. Also a couple of amd64 fe/be fixes.
git-svn-id: svn://svn.valgrind.org/vex/trunk@854
2005-02-07 00:17:12 +00:00
Julian Seward
04149a3b0b Define ULong_to_Ptr / Ptr_to_ULong to help clean up 64/32 bit issues.
git-svn-id: svn://svn.valgrind.org/vex/trunk@853
2005-02-07 00:00:50 +00:00
Julian Seward
c61edd07ae A few more bits and pieces of amd64 instruction support.
git-svn-id: svn://svn.valgrind.org/vex/trunk@852
2005-02-05 18:24:47 +00:00
Julian Seward
c8d75a58e7 Fill in many amd64 assembler cases.
git-svn-id: svn://svn.valgrind.org/vex/trunk@851
2005-02-05 14:34:18 +00:00
Julian Seward
474760698a Even more startup paranoia.
git-svn-id: svn://svn.valgrind.org/vex/trunk@850
2005-02-05 14:32:18 +00:00
Julian Seward
219771799c Add missing commas.
git-svn-id: svn://svn.valgrind.org/vex/trunk@849
2005-02-05 14:13:00 +00:00
Cerion Armour-Brown
5d533616a0 Small correction to getReg_CR()
git-svn-id: svn://svn.valgrind.org/vex/trunk@848
2005-02-05 14:01:57 +00:00
Cerion Armour-Brown
23da0b97f2 Cleaned up thunk functions.
Abstracted non-GPR register access - safer & cleaner.



git-svn-id: svn://svn.valgrind.org/vex/trunk@847
2005-02-05 13:45:57 +00:00
Julian Seward
52df8ca399 Fill in some more amd64 assembler cases.
git-svn-id: svn://svn.valgrind.org/vex/trunk@846
2005-02-05 12:00:14 +00:00
Julian Seward
8c2cdf9d3a Allow easy switching of guest-host arch pairs using ifdefs.
git-svn-id: svn://svn.valgrind.org/vex/trunk@845
2005-02-04 21:18:55 +00:00
Julian Seward
2094d61f0a A couple of debugging hacks to allow work to proceed on a front end
without a corresponding working back end.


git-svn-id: svn://svn.valgrind.org/vex/trunk@844
2005-02-04 21:18:16 +00:00
Julian Seward
354ef43965 Make a start on the amd64 assembler. Bleh.
git-svn-id: svn://svn.valgrind.org/vex/trunk@843
2005-02-04 21:16:48 +00:00
Julian Seward
379421ad05 'movabsq' instruction definitions.
git-svn-id: svn://svn.valgrind.org/vex/trunk@842
2005-02-04 21:15:39 +00:00
Julian Seward
e0154ca0a1 Fix bogus assertion. (How long has that been there?)
git-svn-id: svn://svn.valgrind.org/vex/trunk@841
2005-02-04 21:14:52 +00:00
Julian Seward
05c23f7afc A few more amd64 isel cases.
git-svn-id: svn://svn.valgrind.org/vex/trunk@840
2005-02-04 21:13:55 +00:00
Cerion Armour-Brown
c70920e120 Yay! return.orig gets totally chomped!
- Implemented sc, lwarx, stwcrx.
- Plus a couple of corrections



git-svn-id: svn://svn.valgrind.org/vex/trunk@839
2005-02-04 18:29:05 +00:00
Cerion Armour-Brown
42114e95ed Support host-ppc32...
git-svn-id: svn://svn.valgrind.org/vex/trunk@838
2005-02-04 16:28:19 +00:00
Cerion Armour-Brown
b9345ff768 Get the PPC32 back-end show on the road.
git-svn-id: svn://svn.valgrind.org/vex/trunk@837
2005-02-04 16:17:07 +00:00
Cerion Armour-Brown
01e7da0fab Represent floats in guest_ppc32
git-svn-id: svn://svn.valgrind.org/vex/trunk@836
2005-02-04 16:13:58 +00:00
Cerion Armour-Brown
057c15a99a Fixed 'branch op to read pc', plus cleaned up a little
git-svn-id: svn://svn.valgrind.org/vex/trunk@835
2005-02-04 16:03:09 +00:00
Julian Seward
fcfc2250c4 A simpler .orig file, which (1) has no Altivec insns, and (2) is
simply the result of compiling and running

   int main ( void ) { return 0; }

which turns out to be a lot simpler than running /bin/date.



git-svn-id: svn://svn.valgrind.org/vex/trunk@834
2005-02-04 11:58:47 +00:00
Julian Seward
9c1c692db2 Fix many instruction selection cases, including function calls.
git-svn-id: svn://svn.valgrind.org/vex/trunk@833
2005-02-04 01:44:33 +00:00
Julian Seward
00784909bc Record some shortcomings (comment-only change).
git-svn-id: svn://svn.valgrind.org/vex/trunk@832
2005-02-04 01:40:54 +00:00
Julian Seward
5ce63674dd Fix wrong comment.
git-svn-id: svn://svn.valgrind.org/vex/trunk@831
2005-02-04 01:40:03 +00:00
Cerion Armour-Brown
13fa26ca53 Reworked dis_branch to be somewhat simpler (optimiser can now simplify the IR well).
Extended dis_proc_ctl() a little.
Updated printfs with '\n' on the end of each (duh!).





git-svn-id: svn://svn.valgrind.org/vex/trunk@830
2005-02-03 18:20:22 +00:00
Cerion Armour-Brown
e19bab0f85 Using new IR div ops
git-svn-id: svn://svn.valgrind.org/vex/trunk@829
2005-02-03 14:00:32 +00:00
Cerion Armour-Brown
f479082422 Added new ir ops Iop_DivU32, Iop_DivS32
git-svn-id: svn://svn.valgrind.org/vex/trunk@828
2005-02-03 13:59:46 +00:00
Cerion Armour-Brown
2342dad1b6 tiny correction to guest-arm branch op
git-svn-id: svn://svn.valgrind.org/vex/trunk@827
2005-02-03 13:43:16 +00:00
Cerion Armour-Brown
8697ffc9c0 Undoing mistaken commit of r825.
git-svn-id: svn://svn.valgrind.org/vex/trunk@826
2005-02-03 13:40:49 +00:00
Cerion Armour-Brown
11891638bc tiny correction to guest-arm branch
git-svn-id: svn://svn.valgrind.org/vex/trunk@825
2005-02-03 13:27:19 +00:00
Cerion Armour-Brown
2c9794bc17 Fixed nand, and added pass-through for a couple of rather strange instructions...
git-svn-id: svn://svn.valgrind.org/vex/trunk@824
2005-02-03 11:56:40 +00:00
Cerion Armour-Brown
c4dcc02217 - Added lots of printfs on decode failures.
- Added printf_binary function (handy for theInstr)
- Added first level floating point instr decode - just to allow them to pass
through, for the mo.




git-svn-id: svn://svn.valgrind.org/vex/trunk@823
2005-02-03 11:03:31 +00:00
Julian Seward
0e441a31a9 Fix enough stuff so that the first bb goes through, up to and
including register allocation.



git-svn-id: svn://svn.valgrind.org/vex/trunk@822
2005-02-03 03:53:52 +00:00
Julian Seward
8f1c38012d Make the guest-state-size 64-bit aligned, else some assertion or other
throws a wobbly.



git-svn-id: svn://svn.valgrind.org/vex/trunk@821
2005-02-03 03:52:21 +00:00
Julian Seward
17d9c791a8 Fix out-of-date comment.
git-svn-id: svn://svn.valgrind.org/vex/trunk@820
2005-02-03 03:50:06 +00:00
Julian Seward
6a105519f5 Make the x86 back end happy to chew through IR from the ppc32 front
end, so we can now translate integer ppc32 code into x86 (!)



git-svn-id: svn://svn.valgrind.org/vex/trunk@819
2005-02-02 17:52:37 +00:00
Cerion Armour-Brown
2c94c58e3f Lots of cleanup
Couple of new ops - lswx, memsync stuff



git-svn-id: svn://svn.valgrind.org/vex/trunk@818
2005-02-02 17:13:28 +00:00
Julian Seward
e5d545bd8c Do a bunch more basic integer instruction selection cases.
git-svn-id: svn://svn.valgrind.org/vex/trunk@817
2005-02-02 03:11:24 +00:00
Julian Seward
e056508444 It seems we never generate x86 rotate insns, so get rid of these.
git-svn-id: svn://svn.valgrind.org/vex/trunk@816
2005-02-02 03:10:01 +00:00
Julian Seward
0058d99134 My first AMD64 instruction. Ga. Goo. (etc)
git-svn-id: svn://svn.valgrind.org/vex/trunk@815
2005-02-02 02:16:03 +00:00