[webkit-dev] Fwd: Native code generation for put_global_var instruction on X86_64 platform
wingoog moon
wingoog91 at gmail.com
Thu Feb 23 03:13:15 PST 2012
---------- Forwarded message ----------
From: wingoog moon <wingoog91 at gmail.com>
Date: Wed, Feb 22, 2012 at 1:50 AM
Subject: Native code generation for put_global_var instruction on X86_64
platform
To: squirrelfish-dev at lists.webkit.org
Hi!
Trying to understand how put_global_var is translated to x86_64 native
code. But still have several questions
Lets say i have following bytecode instruction
put_global_var 4, Int32: 6(@k1)
Lets look at the source code
void JIT::emit_op_put_global_var(Instruction* currentInstruction)
{
JSGlobalObject* globalObject = m_codeBlock->globalObject();
emitGetVirtualRegister(currentInstruction[2].u.operand, regT0);
move(TrustedImmPtr(globalObject), regT1);
loadPtr(Address(regT1, JSVariableObject::offsetOfRegisters()), regT1);
storePtr(regT0, Address(regT1, currentInstruction[1].u.operand *
sizeof(Register)));
emitWriteBarrier(globalObject, regT0, regT2, ShouldFilterImmediates,
WriteBarrierForVariableAccess);
}
1. What is mean of currentInstruction[2]? As I Understand it's holds
information about "Int32: 6(@k1)". Am I right??
2. As I
understand after emitGetVirtualRegister(currentInstruction[2].u.operand,
regT0) we have encoded value of "Int32: 6(@k1)" in regT0.
3. Cant't understad mean of move(TrustedImmPtr(globalObject), regT1).
globalObject is a pretty big class. Can't figure out what is happening here
4. loadPtr(Address(regT1, JSVariableObject::offsetOfRegisters()), regT1);
// What the mean of JSVariableObject::offsetOfRegisters()??
5. storePtr(regT0, Address(regT1, currentInstruction[1].u.operand *
sizeof(Register))); // As I understand currentInstruction[1].u.operand
holds address where to put my constant, i.e "4". Am I right?
And question about mov instruction on x86_64 platform
JSC::X86Assembler::movq_i64r
void movq_i64r(int64_t imm, RegisterID dst)
{
m_formatter.oneByteOp64(OP_MOV_EAXIv, dst);
m_formatter.immediate64(imm);
}
How will look appropriate assembly for this code??
Thanks for attention!!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20120223/9eac0f18/attachment.html>
More information about the webkit-dev
mailing list