| OLD | NEW |
| 1 //===- subzero/src/assembler_ia32.cpp - Assembler for x86-32 -------------===// | 1 //===- subzero/src/assembler_ia32.cpp - Assembler for x86-32 -------------===// |
| 2 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 2 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 3 // for details. All rights reserved. Use of this source code is governed by a | 3 // for details. All rights reserved. Use of this source code is governed by a |
| 4 // BSD-style license that can be found in the LICENSE file. | 4 // BSD-style license that can be found in the LICENSE file. |
| 5 // | 5 // |
| 6 // Modified by the Subzero authors. | 6 // Modified by the Subzero authors. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 // | 9 // |
| 10 // The Subzero Code Generator | 10 // The Subzero Code Generator |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 void AssemblerX86::call(const ConstantRelocatable *label) { | 105 void AssemblerX86::call(const ConstantRelocatable *label) { |
| 106 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 106 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 107 intptr_t call_start = buffer_.GetPosition(); | 107 intptr_t call_start = buffer_.GetPosition(); |
| 108 EmitUint8(0xE8); | 108 EmitUint8(0xE8); |
| 109 EmitFixup(this->createFixup(llvm::ELF::R_386_PC32, label)); | 109 EmitFixup(this->createFixup(llvm::ELF::R_386_PC32, label)); |
| 110 EmitInt32(-4); | 110 EmitInt32(-4); |
| 111 assert((buffer_.GetPosition() - call_start) == kCallExternalLabelSize); | 111 assert((buffer_.GetPosition() - call_start) == kCallExternalLabelSize); |
| 112 (void)call_start; | 112 (void)call_start; |
| 113 } | 113 } |
| 114 | 114 |
| 115 void AssemblerX86::call(const Immediate &abs_address) { |
| 116 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 117 intptr_t call_start = buffer_.GetPosition(); |
| 118 EmitUint8(0xE8); |
| 119 EmitFixup( |
| 120 this->createFixup(llvm::ELF::R_386_PC32, AssemblerFixup::NullSymbol)); |
| 121 EmitInt32(abs_address.value() - 4); |
| 122 assert((buffer_.GetPosition() - call_start) == kCallExternalLabelSize); |
| 123 (void)call_start; |
| 124 } |
| 125 |
| 115 void AssemblerX86::pushl(GPRRegister reg) { | 126 void AssemblerX86::pushl(GPRRegister reg) { |
| 116 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 127 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 117 EmitUint8(0x50 + reg); | 128 EmitUint8(0x50 + reg); |
| 118 } | 129 } |
| 119 | 130 |
| 120 void AssemblerX86::popl(GPRRegister reg) { | 131 void AssemblerX86::popl(GPRRegister reg) { |
| 121 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 132 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 122 EmitUint8(0x58 + reg); | 133 EmitUint8(0x58 + reg); |
| 123 } | 134 } |
| 124 | 135 |
| (...skipping 2389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2514 assert(shifter == RegX8632::Encoded_Reg_ecx); | 2525 assert(shifter == RegX8632::Encoded_Reg_ecx); |
| 2515 (void)shifter; | 2526 (void)shifter; |
| 2516 if (Ty == IceType_i16) | 2527 if (Ty == IceType_i16) |
| 2517 EmitOperandSizeOverride(); | 2528 EmitOperandSizeOverride(); |
| 2518 EmitUint8(isByteSizedArithType(Ty) ? 0xD2 : 0xD3); | 2529 EmitUint8(isByteSizedArithType(Ty) ? 0xD2 : 0xD3); |
| 2519 EmitOperand(rm, operand); | 2530 EmitOperand(rm, operand); |
| 2520 } | 2531 } |
| 2521 | 2532 |
| 2522 } // end of namespace x86 | 2533 } // end of namespace x86 |
| 2523 } // end of namespace Ice | 2534 } // end of namespace Ice |
| OLD | NEW |