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 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 | 223 |
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_pointer_size = times_4, | 232 times_pointer_size = times_4, |
233 two_times_pointer_size = times_8, | |
234 times_half_pointer_size = times_2 | 233 times_half_pointer_size = times_2 |
235 }; | 234 }; |
236 | 235 |
237 | 236 |
238 class Operand BASE_EMBEDDED { | 237 class Operand BASE_EMBEDDED { |
239 public: | 238 public: |
240 // reg | 239 // reg |
241 INLINE(explicit Operand(Register reg)); | 240 INLINE(explicit Operand(Register reg)); |
242 | 241 |
243 // [disp/r] | 242 // [disp/r] |
(...skipping 22 matching lines...) Expand all Loading... |
266 RelocInfo::EXTERNAL_REFERENCE); | 265 RelocInfo::EXTERNAL_REFERENCE); |
267 } | 266 } |
268 | 267 |
269 static Operand StaticArray(Register index, | 268 static Operand StaticArray(Register index, |
270 ScaleFactor scale, | 269 ScaleFactor scale, |
271 const ExternalReference& arr) { | 270 const ExternalReference& arr) { |
272 return Operand(index, scale, reinterpret_cast<int32_t>(arr.address()), | 271 return Operand(index, scale, reinterpret_cast<int32_t>(arr.address()), |
273 RelocInfo::EXTERNAL_REFERENCE); | 272 RelocInfo::EXTERNAL_REFERENCE); |
274 } | 273 } |
275 | 274 |
276 static Operand StaticArray(Register index, | |
277 ScaleFactor scale, | |
278 const ExternalReference& arr, | |
279 int32_t disp) { | |
280 return Operand(index, | |
281 scale, | |
282 reinterpret_cast<int32_t>(arr.address() + disp), | |
283 RelocInfo::EXTERNAL_REFERENCE); | |
284 } | |
285 | |
286 | |
287 // Returns true if this Operand is a wrapper for the specified register. | 275 // Returns true if this Operand is a wrapper for the specified register. |
288 bool is_reg(Register reg) const; | 276 bool is_reg(Register reg) const; |
289 | 277 |
290 private: | 278 private: |
291 byte buf_[6]; | 279 byte buf_[6]; |
292 // The number of bytes in buf_. | 280 // The number of bytes in buf_. |
293 unsigned int len_; | 281 unsigned int len_; |
294 // Only valid if len_ > 4. | 282 // Only valid if len_ > 4. |
295 RelocInfo::Mode rmode_; | 283 RelocInfo::Mode rmode_; |
296 | 284 |
(...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
906 private: | 894 private: |
907 Assembler* assembler_; | 895 Assembler* assembler_; |
908 #ifdef DEBUG | 896 #ifdef DEBUG |
909 int space_before_; | 897 int space_before_; |
910 #endif | 898 #endif |
911 }; | 899 }; |
912 | 900 |
913 } } // namespace v8::internal | 901 } } // namespace v8::internal |
914 | 902 |
915 #endif // V8_IA32_ASSEMBLER_IA32_H_ | 903 #endif // V8_IA32_ASSEMBLER_IA32_H_ |
OLD | NEW |