On Tuesday, 23 May 2017 at 03:33:38 UTC, Era Scarecrow wrote:
From what I'm seeing, it should be 8, 0ch, 10h, then 14h, all positive. I'm really scratching my head why I'm having this issue...

What am i missing here?

More experiments and i think it comes down to static arrays.

The following function code

int[4] fun2() {
    int[4] x = void;
    asm {
        mov dword ptr x, 100;
    }
    x[0] = 200; //get example of real offset
    return x;
}

Produces the following (from obj2asm)

int[4] x.fun2() comdat
        assume  CS:int[4] x.fun2()
                enter   014h,0
                mov     -4[EBP],EAX
                mov     dword ptr -014h[EBP],064h
                mov     EAX,-4[EBP]
mov dword ptr [EAX],0C8h // x[0]=200, offset +0
                mov     EAX,-4[EBP]
                leave
                ret
int[4] x.fun2() ends


So why is the offset off by 14h (20 bytes)? It's not like we need a to set a ptr first.

 Go figure i probably found a bug...

Reply via email to