Changeset 38857 in webkit for trunk/JavaScriptCore/assembler/X86Assembler.h
- Timestamp:
- Dec 1, 2008, 1:18:36 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/assembler/X86Assembler.h
r38839 r38857 29 29 #include <wtf/Platform.h> 30 30 31 #if ENABLE(ASSEMBLER) && PLATFORM(X86)31 #if ENABLE(ASSEMBLER) && (PLATFORM(X86) || PLATFORM(X86_64)) 32 32 33 33 #include "AssemblerBuffer.h" … … 88 88 OP_CMP_EvGv = 0x39, 89 89 OP_CMP_GvEv = 0x3B, 90 REX_W = 0x48, 90 91 OP_PUSH_EAX = 0x50, 91 92 OP_POP_EAX = 0x58, … … 218 219 } 219 220 221 #if PLATFORM(X86_64) 222 void pushq_r(RegisterID reg) 223 { 224 m_buffer->putByte(OP_PUSH_EAX + reg); 225 } 226 227 void popq_r(RegisterID reg) 228 { 229 m_buffer->putByte(OP_POP_EAX + reg); 230 } 231 #else 220 232 void pushl_r(RegisterID reg) 221 233 { … … 245 257 modRm_opm(GROUP1A_OP_POP, base, offset); 246 258 } 259 #endif 247 260 248 261 void movl_rr(RegisterID src, RegisterID dst) … … 252 265 } 253 266 267 #if PLATFORM(X86_64) 268 void movq_rr(RegisterID src, RegisterID dst) 269 { 270 m_buffer->putByte(REX_W); 271 m_buffer->putByte(OP_MOV_EvGv); 272 modRm_rr(src, dst); 273 } 274 #endif 275 254 276 void addl_rr(RegisterID src, RegisterID dst) 255 277 { … … 257 279 modRm_rr(src, dst); 258 280 } 281 282 #if !PLATFORM(X86_64) 283 void addl_i8m(int imm, void* addr) 284 { 285 m_buffer->putByte(OP_GROUP1_EvIb); 286 modRm_opm(GROUP1_OP_ADD, addr); 287 m_buffer->putByte(imm); 288 } 289 #endif 259 290 260 291 void addl_i8r(int imm, RegisterID dst) … … 265 296 } 266 297 267 void addl_i8m(int imm, void* addr)268 {269 m_buffer->putByte(OP_GROUP1_EvIb);270 modRm_opm(GROUP1_OP_ADD, addr);271 m_buffer->putByte(imm);272 }273 274 298 void addl_i32r(int imm, RegisterID dst) 275 299 { … … 279 303 } 280 304 305 #if PLATFORM(X86_64) 306 void addq_i8r(int imm, RegisterID dst) 307 { 308 m_buffer->putByte(REX_W); 309 m_buffer->putByte(OP_GROUP1_EvIb); 310 modRm_opr(GROUP1_OP_ADD, dst); 311 m_buffer->putByte(imm); 312 } 313 314 void addq_i32r(int imm, RegisterID dst) 315 { 316 m_buffer->putByte(REX_W); 317 m_buffer->putByte(OP_GROUP1_EvIz); 318 modRm_opr(GROUP1_OP_ADD, dst); 319 m_buffer->putInt(imm); 320 } 321 #endif 322 281 323 void addl_mr(int offset, RegisterID base, RegisterID dst) 282 324 { … … 344 386 } 345 387 388 #if !PLATFORM(X86_64) 346 389 void cmpl_i32m(int imm, void* addr) 347 390 { … … 350 393 m_buffer->putInt(imm); 351 394 } 395 #endif 352 396 353 397 void cmpl_i8m(int imm, int offset, RegisterID base, RegisterID index, int scale) … … 428 472 } 429 473 474 #if !PLATFORM(X86_64) 430 475 void subl_i8m(int imm, void* addr) 431 476 { … … 434 479 m_buffer->putByte(imm); 435 480 } 481 #endif 436 482 437 483 void subl_i32r(int imm, RegisterID dst) … … 569 615 } 570 616 617 #if PLATFORM(X86_64) 618 void movq_mr(RegisterID base, RegisterID dst) 619 { 620 m_buffer->putByte(REX_W); 621 m_buffer->putByte(OP_MOV_GvEv); 622 modRm_rm(dst, base); 623 } 624 625 void movq_mr(int offset, RegisterID base, RegisterID dst) 626 { 627 m_buffer->ensureSpace(maxInstructionSize); 628 m_buffer->putByteUnchecked(REX_W); 629 m_buffer->putByteUnchecked(OP_MOV_GvEv); 630 modRm_rm_Unchecked(dst, base, offset); 631 } 632 #endif 633 634 #if !PLATFORM(X86_64) 571 635 void movl_mr(void* addr, RegisterID dst) 572 636 { … … 574 638 modRm_rm(dst, addr); 575 639 } 640 #endif 576 641 577 642 void movl_mr(int offset, RegisterID base, RegisterID index, int scale, RegisterID dst) … … 621 686 modRm_rm_Unchecked(src, base, offset); 622 687 } 623 688 689 #if PLATFORM(X86_64) 690 void movq_rm(RegisterID src, RegisterID base) 691 { 692 m_buffer->putByte(REX_W); 693 m_buffer->putByte(OP_MOV_EvGv); 694 modRm_rm(src, base); 695 } 696 697 void movq_rm(RegisterID src, int offset, RegisterID base) 698 { 699 m_buffer->ensureSpace(maxInstructionSize); 700 m_buffer->putByteUnchecked(REX_W); 701 m_buffer->putByteUnchecked(OP_MOV_EvGv); 702 modRm_rm_Unchecked(src, base, offset); 703 } 704 #endif 705 624 706 void movl_rm(RegisterID src, int offset, RegisterID base, RegisterID index, int scale) 625 707 { … … 643 725 } 644 726 727 #if !PLATFORM(X86_64) 645 728 void movl_i32m(int imm, void* addr) 646 729 { … … 649 732 m_buffer->putInt(imm); 650 733 } 734 #endif 651 735 652 736 void leal_mr(int offset, RegisterID base, RegisterID dst) … … 687 771 } 688 772 773 #if !PLATFORM(X86_64) 689 774 void xorpd_mr(void* addr, XMMRegisterID dst) 690 775 { … … 694 779 modRm_rm((RegisterID)dst, addr); 695 780 } 781 #endif 696 782 697 783 void movsd_rm(XMMRegisterID src, int offset, RegisterID base) … … 1045 1131 } 1046 1132 1133 #if !PLATFORM(X86_64) 1047 1134 void modRm_rm(RegisterID reg, void* addr) 1048 1135 { … … 1050 1137 m_buffer->putInt((int)addr); 1051 1138 } 1139 #endif 1052 1140 1053 1141 void modRm_rm(RegisterID reg, RegisterID base) … … 1142 1230 } 1143 1231 1232 #if !PLATFORM(X86_64) 1144 1233 void modRm_opm(OpcodeID opcodeID, void* addr) 1145 1234 { 1146 1235 modRm_rm(static_cast<RegisterID>(opcodeID), addr); 1147 1236 } 1237 #endif 1148 1238 1149 1239 void modRm_opmsib(OpcodeID opcodeID, RegisterID base, RegisterID index, int scale, int offset)
Note:
See TracChangeset
for help on using the changeset viewer.