Sorry, I still have two questions.
1.

What is the difference between newOpnd, newImmOpnd and newMemOpnd?



Opnd* baseOpnd= irManager.newImmOpnd(typeManager.getUnmanagedPtrType(
                       typeManager.getUIntPtrType()),
(POINTER_SIZE_INT)&current_obj_acc_record_pointer);
Opnd* RefOpnd = irManager.newMemOpnd(typeManager.getUIntPtrType(),
                               MemOpndKind_Heap,
baseOpnd_current_obj_acc_record_pointer, NULL, NULL, NULL);
appendInsts(irManager.newCopyPseudoInst(Mnemonic_MOV, RefOpnd,
(Opnd*)elemBase));


Opnd* memOpnd = irManager.newMemOpnd(typeManager.getUIntPtrType(),
                        MemOpndKind_Heap,
baseOpnd_current_obj_acc_record_pointer, NULL, NULL, NULL);
appendInsts(irManager.newInst(Mnemonic_SUB,memOpnd, irManager.newImmOpnd(
typeManager.getUInt32Type(), 16)));


What's the difference between memOpnd and baseOpnd?

I look the code emitted as below,  It seems that they have no difference.

mov 0xb40534, %esi
mov %ebp, (%esi)

mov 0xb40534, %ebp
subl 0x10, 0x0(%ebp)

2. If I want to generate such code:
mov 0xb400534, %esi
mov (%esi), %esi

How should I write the LIR?

Thanks,
Qiong

2007/1/31, zouqiong <[EMAIL PROTECTED]>:

Hi, Mikhail:
  Thanks! I can instrument right now!


> On 1/28/07, zouqiong < [EMAIL PROTECTED]> wrote:
> >
> > I add the following expression in InstCodeSelector::addElemIndex():
> >
> > Opnd* current_buffer = irManager.newImmOpnd(typeManager.getInt32Type(),
> > (unsigned)&current_obj_acc_record_pointer);
> >
> > Opnd * Ip_Opnd = irManager.newMemOpndAutoKind
> > (typeManager.getPrimitiveType(Type::UInt32),
> > current_buffer, irManager.newImmOpnd(typeManager.getInt32Type (), 8));
> >
> > copyOpnd(Ip_Opnd, irManager.newImmOpnd(typeManager.getInt32Type(),
> > 0x19820514));
> >
> > It seems that the constraints of the Opnds are wrong. Is it?
> >
> > current_obj_acc_record_pointer points to a buffer of type
> obj_acc_record
> >
> > typedef struct {
> >            uint32 base;
> >            uint32 offset;
> >            uint32 ip;
> >            uint32 other_info;
> > }obj_acc_record;
> >
> >
> > --
> > Best Regards,
> > Qiong,Zou
> >
> >
>
>
> --
> Mikhail Fursov
>
>


--
Best Regards,
Qiong,Zou




--
Best Regards,
Qiong,Zou

Reply via email to