Changeset 55834 in webkit for trunk/JavaScriptCore/assembler/ARMv7Assembler.h
- Timestamp:
- Mar 10, 2010, 11:53:52 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/assembler/ARMv7Assembler.h
r55633 r55834 1 1 /* 2 2 * Copyright (C) 2009 Apple Inc. All rights reserved. 3 * Copyright (C) 2010 University of Szeged 3 4 * 4 5 * Redistribution and use in source and binary forms, with or without … … 581 582 OP_BLX = 0x4700, 582 583 OP_BX = 0x4700, 583 OP_LDRH_reg_T1 = 0x5A00,584 584 OP_STR_reg_T1 = 0x5000, 585 585 OP_LDR_reg_T1 = 0x5800, 586 OP_LDRH_reg_T1 = 0x5A00, 587 OP_LDRB_reg_T1 = 0x5C00, 586 588 OP_STR_imm_T1 = 0x6000, 587 589 OP_LDR_imm_T1 = 0x6800, 590 OP_LDRB_imm_T1 = 0x7800, 588 591 OP_LDRH_imm_T1 = 0x8800, 589 592 OP_STR_imm_T2 = 0x9000, … … 630 633 OP_MOVT = 0xF2C0, 631 634 OP_NOP_T2a = 0xF3AF, 635 OP_LDRB_imm_T3 = 0xF810, 636 OP_LDRB_reg_T2 = 0xF810, 632 637 OP_LDRH_reg_T2 = 0xF830, 633 638 OP_LDRH_imm_T3 = 0xF830, … … 636 641 OP_LDR_imm_T4 = 0xF850, 637 642 OP_LDR_reg_T2 = 0xF850, 643 OP_LDRB_imm_T2 = 0xF890, 638 644 OP_LDRH_imm_T2 = 0xF8B0, 639 645 OP_STR_imm_T3 = 0xF8C0, … … 1077 1083 else 1078 1084 m_formatter.twoWordOp12Reg4FourFours(OP_LDRH_reg_T2, rn, FourFours(rt, 0, shift, rm)); 1085 } 1086 1087 void ldrb(RegisterID rt, RegisterID rn, ARMThumbImmediate imm) 1088 { 1089 ASSERT(rn != ARMRegisters::pc); // LDR (literal) 1090 ASSERT(imm.isUInt12()); 1091 1092 if (!((rt | rn) & 8) && imm.isUInt5()) 1093 m_formatter.oneWordOp5Imm5Reg3Reg3(OP_LDRB_imm_T1, imm.getUInt5(), rn, rt); 1094 else 1095 m_formatter.twoWordOp12Reg4Reg4Imm12(OP_LDRB_imm_T2, rn, rt, imm.getUInt12()); 1096 } 1097 1098 void ldrb(RegisterID rt, RegisterID rn, int offset, bool index, bool wback) 1099 { 1100 ASSERT(rt != ARMRegisters::pc); 1101 ASSERT(rn != ARMRegisters::pc); 1102 ASSERT(index || wback); 1103 ASSERT(!wback | (rt != rn)); 1104 1105 bool add = true; 1106 if (offset < 0) { 1107 add = false; 1108 offset = -offset; 1109 } 1110 1111 ASSERT(!(offset & ~0xff)); 1112 1113 offset |= (wback << 8); 1114 offset |= (add << 9); 1115 offset |= (index << 10); 1116 offset |= (1 << 11); 1117 1118 m_formatter.twoWordOp12Reg4Reg4Imm12(OP_LDRB_imm_T3, rn, rt, offset); 1119 } 1120 1121 void ldrb(RegisterID rt, RegisterID rn, RegisterID rm, unsigned shift = 0) 1122 { 1123 ASSERT(rn != ARMRegisters::pc); // LDR (literal) 1124 ASSERT(!BadReg(rm)); 1125 ASSERT(shift <= 3); 1126 1127 if (!shift && !((rt | rn | rm) & 8)) 1128 m_formatter.oneWordOp7Reg3Reg3Reg3(OP_LDRB_reg_T1, rm, rn, rt); 1129 else 1130 m_formatter.twoWordOp12Reg4FourFours(OP_LDRB_reg_T2, rn, FourFours(rt, 0, shift, rm)); 1079 1131 } 1080 1132
Note:
See TracChangeset
for help on using the changeset viewer.