1864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// Copyright 2011 the V8 project authors. All rights reserved. 2864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// Redistribution and use in source and binary forms, with or without 3864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// modification, are permitted provided that the following conditions are 4864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// met: 5864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// 6864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// * Redistributions of source code must retain the above copyright 7864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// notice, this list of conditions and the following disclaimer. 8864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// * Redistributions in binary form must reproduce the above 9864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// copyright notice, this list of conditions and the following 10864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// disclaimer in the documentation and/or other materials provided 11864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// with the distribution. 12864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// * Neither the name of Google Inc. nor the names of its 13864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// contributors may be used to endorse or promote products derived 14864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// from this software without specific prior written permission. 15864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// 16864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 28864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#include <stdlib.h> 29864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 30196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/v8.h" 31196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org 32196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/debug.h" 33196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/disasm.h" 34196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/disassembler.h" 356474a1cfee1cdad45de5cc96960085e1c7daf11cmachenbach@chromium.org#include "src/ic/ic.h" 36196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/macro-assembler.h" 37196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/serialize.h" 38196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "test/cctest/cctest.h" 39864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 40864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.orgusing namespace v8::internal; 41864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 42864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 43864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#define __ assm. 44864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 45864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 46864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.orgstatic void DummyStaticFunction(Object* result) { 47864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org} 48864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 49864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 50864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.orgTEST(DisasmIa320) { 51864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org CcTest::InitializeVM(); 52864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Isolate* isolate = CcTest::i_isolate(); 53864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org HandleScope scope(isolate); 54864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org v8::internal::byte buffer[2048]; 55864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Assembler assm(isolate, buffer, sizeof buffer); 56864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org DummyStaticFunction(NULL); // just bloody use it (DELETE; debugging) 57864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 58864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // Short immediate instructions 59864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ adc(eax, 12345678); 60864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(eax, Immediate(12345678)); 61864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ or_(eax, 12345678); 62864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ sub(eax, Immediate(12345678)); 63864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ xor_(eax, 12345678); 64864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ and_(eax, 12345678); 65864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Handle<FixedArray> foo = isolate->factory()->NewFixedArray(10, TENURED); 66864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cmp(eax, foo); 67864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 68864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // ---- This one caused crash 69864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mov(ebx, Operand(esp, ecx, times_2, 0)); // [esp+ecx*4] 70864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 71864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // ---- All instructions that I can think of 72864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, ebx); 73864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(12, RelocInfo::NONE32)); 74864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(ebx, 0)); 75864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(ebx, 16)); 76864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(ebx, 1999)); 77864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(ebx, -4)); 78864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(ebx, -1999)); 79864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(esp, 0)); 80864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(esp, 16)); 81864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(esp, 1999)); 82864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(esp, -4)); 83864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(esp, -1999)); 84864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 85864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(esi, Operand(ecx, times_4, 0)); 86864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(esi, Operand(ecx, times_4, 24)); 87864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(esi, Operand(ecx, times_4, -4)); 88864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(esi, Operand(ecx, times_4, -1999)); 89864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 90864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edi, Operand(ebp, ecx, times_4, 0)); 91864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edi, Operand(ebp, ecx, times_4, 12)); 92864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edi, Operand(ebp, ecx, times_4, -8)); 93864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edi, Operand(ebp, ecx, times_4, -3999)); 94864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(Operand(ebp, ecx, times_4, 12), Immediate(12)); 95864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 96864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 97864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(ebx, Immediate(12)); 98864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 99864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ adc(ecx, 12); 100864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ adc(ecx, 1000); 101864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 102864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ and_(edx, 3); 103864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ and_(edx, Operand(esp, 4)); 104864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cmp(edx, 3); 105864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cmp(edx, Operand(esp, 4)); 106864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cmp(Operand(ebp, ecx, times_4, 0), Immediate(1000)); 107864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Handle<FixedArray> foo2 = isolate->factory()->NewFixedArray(10, TENURED); 108864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cmp(ebx, foo2); 109864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cmpb(ebx, Operand(ebp, ecx, times_2, 0)); 110864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cmpb(Operand(ebp, ecx, times_2, 0), ebx); 111864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ or_(edx, 3); 112864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ xor_(edx, 3); 113864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 114864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cpuid(); 115864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ movsx_b(edx, ecx); 116864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ movsx_w(edx, ecx); 117864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ movzx_b(edx, ecx); 118864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ movzx_w(edx, ecx); 119864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 120864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 121864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ imul(edx, ecx); 122864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ shld(edx, ecx); 123864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ shrd(edx, ecx); 124864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ bts(edx, ecx); 125864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ bts(Operand(ebx, ecx, times_4, 0), ecx); 126864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 127864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ pushad(); 128864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ popad(); 129864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ pushfd(); 130864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ popfd(); 131864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ push(Immediate(12)); 132864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ push(Immediate(23456)); 133864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ push(ecx); 134864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ push(esi); 135864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ push(Operand(ebp, JavaScriptFrameConstants::kFunctionOffset)); 136864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ push(Operand(ebx, ecx, times_4, 0)); 137864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ push(Operand(ebx, ecx, times_4, 0)); 138864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ push(Operand(ebx, ecx, times_4, 10000)); 139864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ pop(edx); 140864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ pop(eax); 141864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ pop(Operand(ebx, ecx, times_4, 0)); 142864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 143864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 144864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, Operand(esp, 16)); 145864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(edx, ecx); 146864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mov_b(edx, ecx); 147864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mov_b(ecx, 6); 148864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mov_b(Operand(ebx, ecx, times_4, 10000), 6); 149864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mov_b(Operand(esp, 16), edx); 150864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mov_w(edx, Operand(esp, 16)); 151864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mov_w(Operand(esp, 16), edx); 152864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 153864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ movsx_w(edx, Operand(esp, 12)); 154864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ movsx_b(edx, Operand(esp, 12)); 155864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ movzx_w(edx, Operand(esp, 12)); 156864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ movzx_b(edx, Operand(esp, 12)); 157864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 158864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mov(edx, 1234567); 159864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mov(edx, Operand(esp, 12)); 160864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mov(Operand(ebx, ecx, times_4, 10000), Immediate(12345)); 161864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mov(Operand(ebx, ecx, times_4, 10000), edx); 162864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 163864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ dec_b(edx); 164864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ dec_b(Operand(eax, 10)); 165864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ dec_b(Operand(ebx, ecx, times_4, 10000)); 166864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ dec(edx); 167864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cdq(); 168864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 169864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 170864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ idiv(edx); 1715c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ idiv(Operand(edx, ecx, times_1, 1)); 1725c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ idiv(Operand(esp, 12)); 1735c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ div(edx); 1745c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ div(Operand(edx, ecx, times_1, 1)); 1755c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ div(Operand(esp, 12)); 176864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ mul(edx); 177864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ neg(edx); 178864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ not_(edx); 179864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ test(Operand(ebx, ecx, times_4, 10000), Immediate(123456)); 180864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 181864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ imul(edx, Operand(ebx, ecx, times_4, 10000)); 182864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ imul(edx, ecx, 12); 1835c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ imul(edx, Operand(edx, eax, times_2, 42), 8); 184864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ imul(edx, ecx, 1000); 1855c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ imul(edx, Operand(ebx, ecx, times_4, 1), 9000); 186864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 187864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ inc(edx); 188864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ inc(Operand(ebx, ecx, times_4, 10000)); 189864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ push(Operand(ebx, ecx, times_4, 10000)); 190864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ pop(Operand(ebx, ecx, times_4, 10000)); 191864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ call(Operand(ebx, ecx, times_4, 10000)); 192864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ jmp(Operand(ebx, ecx, times_4, 10000)); 193864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 194864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ lea(edx, Operand(ebx, ecx, times_4, 10000)); 195864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ or_(edx, 12345); 196864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ or_(edx, Operand(ebx, ecx, times_4, 10000)); 197864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 198864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 199864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 200864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ rcl(edx, 1); 201864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ rcl(edx, 7); 202864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ rcr(edx, 1); 203864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ rcr(edx, 7); 204864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ sar(edx, 1); 205864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ sar(edx, 6); 206864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ sar_cl(edx); 2075c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ sar(Operand(ebx, ecx, times_4, 10000), 1); 2085c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ sar(Operand(ebx, ecx, times_4, 10000), 6); 2095c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ sar_cl(Operand(ebx, ecx, times_4, 10000)); 210864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ sbb(edx, Operand(ebx, ecx, times_4, 10000)); 211864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ shld(edx, Operand(ebx, ecx, times_4, 10000)); 212864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ shl(edx, 1); 213864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ shl(edx, 6); 214864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ shl_cl(edx); 2155c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ shl(Operand(ebx, ecx, times_4, 10000), 1); 2165c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ shl(Operand(ebx, ecx, times_4, 10000), 6); 2175c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ shl_cl(Operand(ebx, ecx, times_4, 10000)); 218864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ shrd(edx, Operand(ebx, ecx, times_4, 10000)); 219864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ shr(edx, 1); 220864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ shr(edx, 7); 221864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ shr_cl(edx); 2225c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ shr(Operand(ebx, ecx, times_4, 10000), 1); 2235c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ shr(Operand(ebx, ecx, times_4, 10000), 6); 2245c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ shr_cl(Operand(ebx, ecx, times_4, 10000)); 225864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 226864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 227864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // Immediates 228864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 229864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ adc(edx, 12345); 230864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 231864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(ebx, Immediate(12)); 232864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ add(Operand(edx, ecx, times_4, 10000), Immediate(12)); 233864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 234864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ and_(ebx, 12345); 235864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 236864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cmp(ebx, 12345); 237864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cmp(ebx, Immediate(12)); 238864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cmp(Operand(edx, ecx, times_4, 10000), Immediate(12)); 239864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cmpb(eax, 100); 240864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 241864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ or_(ebx, 12345); 242864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 243864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ sub(ebx, Immediate(12)); 244864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ sub(Operand(edx, ecx, times_4, 10000), Immediate(12)); 245864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 246864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ xor_(ebx, 12345); 247864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 248864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ imul(edx, ecx, 12); 249864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ imul(edx, ecx, 1000); 250864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 251864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ cld(); 252864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ rep_movs(); 253864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ rep_stos(); 254864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ stos(); 255864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 256864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ sub(edx, Operand(ebx, ecx, times_4, 10000)); 257864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ sub(edx, ebx); 258864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 259864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ test(edx, Immediate(12345)); 260864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ test(edx, Operand(ebx, ecx, times_8, 10000)); 261864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ test(Operand(esi, edi, times_1, -20000000), Immediate(300000000)); 262864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ test_b(edx, Operand(ecx, ebx, times_2, 1000)); 263864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ test_b(Operand(eax, -20), 0x9A); 264864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 265864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 266864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ xor_(edx, 12345); 267864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ xor_(edx, Operand(ebx, ecx, times_8, 10000)); 268864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ bts(Operand(ebx, ecx, times_8, 10000), edx); 269864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ hlt(); 270864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ int3(); 271864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ ret(0); 272864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ ret(8); 273864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 274864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // Calls 275864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 276864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Label L1, L2; 277864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ bind(&L1); 278864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 279864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ call(&L1); 280864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ call(&L2); 281864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 282864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ bind(&L2); 283864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ call(Operand(ebx, ecx, times_4, 10000)); 284864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 285864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Handle<Code> ic(LoadIC::initialize_stub(isolate, NOT_CONTEXTUAL)); 286864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ call(ic, RelocInfo::CODE_TARGET); 287864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 288864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ call(FUNCTION_ADDR(DummyStaticFunction), RelocInfo::RUNTIME_ENTRY); 289864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 290864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 291864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ jmp(&L1); 292864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ jmp(Operand(ebx, ecx, times_4, 10000)); 293864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org ExternalReference after_break_target = 294864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org ExternalReference::debug_after_break_target_address(isolate); 295864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ jmp(Operand::StaticVariable(after_break_target)); 296864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ jmp(ic, RelocInfo::CODE_TARGET); 297864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 298864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 299864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 300864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Label Ljcc; 301864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 302864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // long jumps 303864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(overflow, &Ljcc); 304864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(no_overflow, &Ljcc); 305864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(below, &Ljcc); 306864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(above_equal, &Ljcc); 307864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(equal, &Ljcc); 308864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(not_equal, &Ljcc); 309864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(below_equal, &Ljcc); 310864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(above, &Ljcc); 311864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(sign, &Ljcc); 312864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(not_sign, &Ljcc); 313864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(parity_even, &Ljcc); 314864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(parity_odd, &Ljcc); 315864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(less, &Ljcc); 316864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(greater_equal, &Ljcc); 317864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(less_equal, &Ljcc); 318864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(greater, &Ljcc); 319864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 320864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ bind(&Ljcc); 321864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // short jumps 322864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(overflow, &Ljcc); 323864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(no_overflow, &Ljcc); 324864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(below, &Ljcc); 325864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(above_equal, &Ljcc); 326864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(equal, &Ljcc); 327864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(not_equal, &Ljcc); 328864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(below_equal, &Ljcc); 329864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(above, &Ljcc); 330864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(sign, &Ljcc); 331864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(not_sign, &Ljcc); 332864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(parity_even, &Ljcc); 333864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(parity_odd, &Ljcc); 334864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(less, &Ljcc); 335864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(greater_equal, &Ljcc); 336864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(less_equal, &Ljcc); 337864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ j(greater, &Ljcc); 338864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 339864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // 0xD9 instructions 340864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 341864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 342864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fld(1); 343864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fld1(); 344864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fldz(); 345864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fldpi(); 346864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fabs(); 347864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fchs(); 348864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fprem(); 349864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fprem1(); 350864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fincstp(); 351864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ ftst(); 35206b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org __ fxam(); 353864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fxch(3); 354864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fld_s(Operand(ebx, ecx, times_4, 10000)); 355864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fstp_s(Operand(ebx, ecx, times_4, 10000)); 356864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ ffree(3); 357864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fld_d(Operand(ebx, ecx, times_4, 10000)); 358864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fstp_d(Operand(ebx, ecx, times_4, 10000)); 359864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 360864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 361864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fild_s(Operand(ebx, ecx, times_4, 10000)); 362864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fistp_s(Operand(ebx, ecx, times_4, 10000)); 363864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fild_d(Operand(ebx, ecx, times_4, 10000)); 364864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fistp_d(Operand(ebx, ecx, times_4, 10000)); 365864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fnstsw_ax(); 366864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 367864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fadd(3); 368864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fsub(3); 369864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fmul(3); 370864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fdiv(3); 371864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 372864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ faddp(3); 373864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fsubp(3); 374864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fmulp(3); 375864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fdivp(3); 376864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fcompp(); 377864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fwait(); 378864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ frndint(); 379864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ fninit(); 380864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ nop(); 381864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 38206b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org __ fldcw(Operand(ebx, ecx, times_4, 10000)); 38306b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org __ fnstcw(Operand(ebx, ecx, times_4, 10000)); 38406b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org __ fadd_d(Operand(ebx, ecx, times_4, 10000)); 38506b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org __ fnsave(Operand(ebx, ecx, times_4, 10000)); 38606b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org __ frstor(Operand(ebx, ecx, times_4, 10000)); 38706b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org 3885c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org // xchg. 3895c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org { 3905c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ xchg(eax, eax); 3915c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ xchg(eax, ebx); 3925c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ xchg(ebx, ebx); 3935c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org __ xchg(ebx, Operand(esp, 12)); 3945c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org } 3955c0fd9bca25be110d9fb3e332075726b10c8b169machenbach@chromium.org 396864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org // Nop instructions 397864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org for (int i = 0; i < 16; i++) { 398864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ Nop(i); 399864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org } 400864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 401864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org __ ret(0); 402864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 403864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org CodeDesc desc; 404864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org assm.GetCode(&desc); 405864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org Handle<Code> code = isolate->factory()->NewCode( 406864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org desc, Code::ComputeFlags(Code::STUB), Handle<Code>()); 407864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org USE(code); 408864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#ifdef OBJECT_PRINT 40960fc910a49e86bb7faeeee0017abbd1ca05d16e8machenbach@chromium.org OFStream os(stdout); 41060fc910a49e86bb7faeeee0017abbd1ca05d16e8machenbach@chromium.org code->Print(os); 411864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org byte* begin = code->instruction_start(); 412864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org byte* end = begin + code->instruction_size(); 413864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org disasm::Disassembler::Disassemble(stdout, begin, end); 414864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#endif 415864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org} 416864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org 417864abd7677f434b5aef191e3388e71cd4dd1e6c8machenbach@chromium.org#undef __ 418