Loading ...
Sorry, an error occurred while loading the content.

semantics of INS_OperandIsMemory

Expand Messages
  • Micha Moffie
    Does: INS_OperandIsMemory(ins,i) = ( INS_IsMemoryWrite(ins) || INS_IsMemoryRead(ins) ) ? When instrumenting a MOV instruction, I find an operand that is a
    Message 1 of 13 , Jul 1, 2005
    View Source
    • 0 Attachment
      Does: INS_OperandIsMemory(ins,i) =>
      ( INS_IsMemoryWrite(ins) || INS_IsMemoryRead(ins) ) ?

      When instrumenting a MOV instruction,
      I find an operand that is a memory operand, but the instruction is no read or
      write (although it has read and write sizes ..)

      Here Is the data on the instruction:

      Inst: MOV/32b EDX = (GS:0x00000008)[edx] = [gs] (PinInstDataFlow)
      Opcode: 0x3d
      Opcode (S): MOV
      Opcode (M): MOV
      RegR[0] = gs (25) ;;
      RegW[0] = edx (17) ;;
      INS_IsMemoryRead: 0
      INS_HasMemoryRead2: 0
      INS_IsMemoryWrite: 0
      INS_MemoryReadSize: 4
      INS_MemoryWriteSize: 4
      INS_IsStackRead: 0
      INS_IsStackWrite: 0
      ** INS_OperandCount(ins): 2
      INS_OperandIsReg: 1
      INS_OperandReg: 17
      INS_OperandIsImmediate: 0
      INS_OperandIsMemory: 0
      INS_OperandIsReg: 0
      INS_OperandIsImmediate: 0
      INS_OperandIsMemory: 1
      ___________________________________________________
      My Asertion Failed
      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

      A:vm_ia32/jit_instrument_ia32.C:Simplify:543: using IARG_MEMORYREAD_EA for ins
      without memory read 499 0x4201553f MOV/32b EDX = (GS:0x00000008)[edx] =
      [gs]
      NO STACK TRACE AVAILABLE
      Pin child/app terminated abnormally due to signal 6.

      Thanks
      :)
      Micha.
    • Cohn, Robert S
      Pin cannot generate the virtual address when a memory operand has a segment override. This means we cannot do IARG_MEMORYREAD_EA properly. We have some ideas
      Message 2 of 13 , Jul 1, 2005
      View Source
      • 0 Attachment
        Pin cannot generate the virtual address when a memory operand has a
        segment override. This means we cannot do IARG_MEMORYREAD_EA properly.
        We have some ideas for fixing this problem, but haven't had time to do
        it. Rather than make everyone be aware of that, we force INS_IsMemory*
        to say that there is no memory operation when there is a segment
        override. We will have to do the same for INS_OperandIsMemory.


        -----Original Message-----
        From: pinheads@yahoogroups.com [mailto:pinheads@yahoogroups.com] On
        Behalf Of Micha Moffie
        Sent: Friday, July 01, 2005 9:13 AM
        To: pinheads@yahoogroups.com
        Subject: [pinheads] semantics of INS_OperandIsMemory

        Does: INS_OperandIsMemory(ins,i) =>
        ( INS_IsMemoryWrite(ins) || INS_IsMemoryRead(ins) ) ?

        When instrumenting a MOV instruction,
        I find an operand that is a memory operand, but the instruction is no
        read or
        write (although it has read and write sizes ..)

        Here Is the data on the instruction:

        Inst: MOV/32b EDX = (GS:0x00000008)[edx] = [gs] (PinInstDataFlow)
        Opcode: 0x3d
        Opcode (S): MOV
        Opcode (M): MOV
        RegR[0] = gs (25) ;;
        RegW[0] = edx (17) ;;
        INS_IsMemoryRead: 0
        INS_HasMemoryRead2: 0
        INS_IsMemoryWrite: 0
        INS_MemoryReadSize: 4
        INS_MemoryWriteSize: 4
        INS_IsStackRead: 0
        INS_IsStackWrite: 0
        ** INS_OperandCount(ins): 2
        INS_OperandIsReg: 1
        INS_OperandReg: 17
        INS_OperandIsImmediate: 0
        INS_OperandIsMemory: 0
        INS_OperandIsReg: 0
        INS_OperandIsImmediate: 0
        INS_OperandIsMemory: 1
        ___________________________________________________
        My Asertion Failed
        !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        A:vm_ia32/jit_instrument_ia32.C:Simplify:543: using IARG_MEMORYREAD_EA
        for ins
        without memory read 499 0x4201553f MOV/32b EDX = (GS:0x00000008)[edx]
        =
        [gs]
        NO STACK TRACE AVAILABLE
        Pin child/app terminated abnormally due to signal 6.

        Thanks
        :)
        Micha.



        Yahoo! Groups Links
      Your message has been successfully submitted and would be delivered to recipients shortly.