From e3762851a1e93c85365b9a2e9bea386ce653d866 Mon Sep 17 00:00:00 2001 From: "deanm@chromium.org" Date: Tue, 5 May 2009 14:39:05 +0000 Subject: [PATCH] Stub out a small portion of the x64 assembler. Review URL: http://codereview.chromium.org/108014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1869 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/x64/assembler-x64.cc | 9 +++++++ src/x64/assembler-x64.h | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ src/x64/frames-x64.h | 2 +- 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/src/x64/assembler-x64.cc b/src/x64/assembler-x64.cc index 209aa2d..6e2c42a 100644 --- a/src/x64/assembler-x64.cc +++ b/src/x64/assembler-x64.cc @@ -25,3 +25,12 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#include "v8.h" + +#include "macro-assembler.h" + +namespace v8 { namespace internal { + +Register no_reg = { -1 }; + +} } // namespace v8::internal diff --git a/src/x64/assembler-x64.h b/src/x64/assembler-x64.h index 209aa2d..49a3860 100644 --- a/src/x64/assembler-x64.h +++ b/src/x64/assembler-x64.h @@ -25,3 +25,70 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#ifndef V8_X64_ASSEMBLER_X64_H_ +#define V8_X64_ASSEMBLER_X64_H_ + +// TODO(x64): This is a temporary stub, we will need to implement this code. + +namespace v8 { namespace internal { + +struct Register { + bool is_valid() const { return 0 <= code_ && code_ < 8; } + bool is(Register reg) const { return code_ == reg.code_; } + // eax, ebx, ecx and edx are byte registers, the rest are not. + bool is_byte_register() const { return code_ <= 3; } + int code() const { + ASSERT(is_valid()); + return code_; + } + int bit() const { + ASSERT(is_valid()); + return 1 << code_; + } + + // (unfortunately we can't make this private in a struct) + int code_; +}; + +const int kNumRegisters = 8; +extern Register no_reg; + +enum Condition { + // any value < 0 is considered no_condition + no_condition = -1, + + overflow = 0, + no_overflow = 1, + below = 2, + above_equal = 3, + equal = 4, + not_equal = 5, + below_equal = 6, + above = 7, + negative = 8, + positive = 9, + parity_even = 10, + parity_odd = 11, + less = 12, + greater_equal = 13, + less_equal = 14, + greater = 15, + + // aliases + carry = below, + not_carry = above_equal, + zero = equal, + not_zero = not_equal, + sign = negative, + not_sign = positive +}; + +enum Hint { + no_hint = 0, + not_taken = 0x2e, + taken = 0x3e +}; + +} } // namespace v8::internal + +#endif // V8_X64_ASSEMBLER_X64_H_ diff --git a/src/x64/frames-x64.h b/src/x64/frames-x64.h index 6e3632c..f4468f6 100644 --- a/src/x64/frames-x64.h +++ b/src/x64/frames-x64.h @@ -30,7 +30,7 @@ namespace v8 { namespace internal { -// TODO(port): This is a stub, mostly just a copy of the ia32 bit version. +// TODO(x64): This is a stub, mostly just a copy of the ia32 bit version. // This will all need to change to be correct for x64. static const int kNumRegs = 8; -- 2.7.4