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)¤t_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)¤t_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