| OLD | NEW |
| 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
| 2 // All Rights Reserved. | 2 // All Rights Reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
| 6 // met: | 6 // met: |
| 7 // | 7 // |
| 8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
| 9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
| 10 // | 10 // |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 // ----------------------------------------------------------------------------- | 224 // ----------------------------------------------------------------------------- |
| 225 // Machine instruction Operands | 225 // Machine instruction Operands |
| 226 | 226 |
| 227 enum ScaleFactor { | 227 enum ScaleFactor { |
| 228 times_1 = 0, | 228 times_1 = 0, |
| 229 times_2 = 1, | 229 times_2 = 1, |
| 230 times_4 = 2, | 230 times_4 = 2, |
| 231 times_8 = 3, | 231 times_8 = 3, |
| 232 times_int_size = times_4, | 232 times_int_size = times_4, |
| 233 times_half_pointer_size = times_2, | 233 times_half_pointer_size = times_2, |
| 234 times_pointer_size = times_4 | 234 times_pointer_size = times_4, |
| 235 times_twice_pointer_size = times_8 |
| 235 }; | 236 }; |
| 236 | 237 |
| 237 | 238 |
| 238 class Operand BASE_EMBEDDED { | 239 class Operand BASE_EMBEDDED { |
| 239 public: | 240 public: |
| 240 // reg | 241 // reg |
| 241 INLINE(explicit Operand(Register reg)); | 242 INLINE(explicit Operand(Register reg)); |
| 242 | 243 |
| 243 // [disp/r] | 244 // [disp/r] |
| 244 INLINE(explicit Operand(int32_t disp, RelocInfo::Mode rmode)); | 245 INLINE(explicit Operand(int32_t disp, RelocInfo::Mode rmode)); |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 660 // | 661 // |
| 661 // Note: The same Label can be used for forward and backward branches | 662 // Note: The same Label can be used for forward and backward branches |
| 662 // but it may be bound only once. | 663 // but it may be bound only once. |
| 663 | 664 |
| 664 void bind(Label* L); // binds an unbound label L to the current code position | 665 void bind(Label* L); // binds an unbound label L to the current code position |
| 665 | 666 |
| 666 // Calls | 667 // Calls |
| 667 void call(Label* L); | 668 void call(Label* L); |
| 668 void call(byte* entry, RelocInfo::Mode rmode); | 669 void call(byte* entry, RelocInfo::Mode rmode); |
| 669 void call(const Operand& adr); | 670 void call(const Operand& adr); |
| 671 void call(const ExternalReference& target); |
| 670 void call(Handle<Code> code, RelocInfo::Mode rmode); | 672 void call(Handle<Code> code, RelocInfo::Mode rmode); |
| 671 | 673 |
| 672 // Jumps | 674 // Jumps |
| 673 void jmp(Label* L); // unconditional jump to L | 675 void jmp(Label* L); // unconditional jump to L |
| 674 void jmp(byte* entry, RelocInfo::Mode rmode); | 676 void jmp(byte* entry, RelocInfo::Mode rmode); |
| 675 void jmp(const Operand& adr); | 677 void jmp(const Operand& adr); |
| 676 void jmp(Handle<Code> code, RelocInfo::Mode rmode); | 678 void jmp(Handle<Code> code, RelocInfo::Mode rmode); |
| 677 | 679 |
| 678 // Conditional jumps | 680 // Conditional jumps |
| 679 void j(Condition cc, Label* L, Hint hint = no_hint); | 681 void j(Condition cc, Label* L, Hint hint = no_hint); |
| 680 void j(Condition cc, byte* entry, RelocInfo::Mode rmode, Hint hint = no_hint); | 682 void j(Condition cc, byte* entry, RelocInfo::Mode rmode, Hint hint = no_hint); |
| 681 void j(Condition cc, Handle<Code> code, Hint hint = no_hint); | 683 void j(Condition cc, Handle<Code> code, Hint hint = no_hint); |
| 682 | 684 |
| 683 // Floating-point operations | 685 // Floating-point operations |
| 684 void fld(int i); | 686 void fld(int i); |
| 687 void fstp(int i); |
| 685 | 688 |
| 686 void fld1(); | 689 void fld1(); |
| 687 void fldz(); | 690 void fldz(); |
| 691 void fldpi(); |
| 688 | 692 |
| 689 void fld_s(const Operand& adr); | 693 void fld_s(const Operand& adr); |
| 690 void fld_d(const Operand& adr); | 694 void fld_d(const Operand& adr); |
| 691 | 695 |
| 692 void fstp_s(const Operand& adr); | 696 void fstp_s(const Operand& adr); |
| 693 void fstp_d(const Operand& adr); | 697 void fstp_d(const Operand& adr); |
| 698 void fst_d(const Operand& adr); |
| 694 | 699 |
| 695 void fild_s(const Operand& adr); | 700 void fild_s(const Operand& adr); |
| 696 void fild_d(const Operand& adr); | 701 void fild_d(const Operand& adr); |
| 697 | 702 |
| 698 void fist_s(const Operand& adr); | 703 void fist_s(const Operand& adr); |
| 699 | 704 |
| 700 void fistp_s(const Operand& adr); | 705 void fistp_s(const Operand& adr); |
| 701 void fistp_d(const Operand& adr); | 706 void fistp_d(const Operand& adr); |
| 702 | 707 |
| 703 void fisttp_s(const Operand& adr); | 708 void fisttp_s(const Operand& adr); |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 909 private: | 914 private: |
| 910 Assembler* assembler_; | 915 Assembler* assembler_; |
| 911 #ifdef DEBUG | 916 #ifdef DEBUG |
| 912 int space_before_; | 917 int space_before_; |
| 913 #endif | 918 #endif |
| 914 }; | 919 }; |
| 915 | 920 |
| 916 } } // namespace v8::internal | 921 } } // namespace v8::internal |
| 917 | 922 |
| 918 #endif // V8_IA32_ASSEMBLER_IA32_H_ | 923 #endif // V8_IA32_ASSEMBLER_IA32_H_ |
| OLD | NEW |