Здравствуйте, stas19t, Вы писали:
S>Так тоже не получается:
S>S> public struct Array {
S> int el[2];
S> } ar;
S> ar.el[0] = 1;
S> ar.el[1] = 2;
S> void* result = userFunc(ar);
S>
S>В окне Disassembly выглядит это вот так:
S>S> public struct Array {
S> int el[3];
S> } ar;
S> ar.el[1] = 1;
S>0000015e mov dword ptr [rsp+000000F4h],1
S> ar.el[2] = 2;
S>00000169 mov dword ptr [rsp+000000F8h],2
S> void* result = userFunc(ar);
S>00000174 mov r11,83CD720h
S>0000017e mov r10,qword ptr [rsp+28h]
S>00000183 lea rcx,[rsp+000000F0h]
S>0000018b mov rax,qword ptr [rcx]
S>0000018e mov qword ptr [rsp+60h],rax
S>00000193 mov eax,dword ptr [rcx+8]
S>00000196 mov dword ptr [rsp+68h],eax
S>0000019a lea rcx,[rsp+60h]
S>0000019f call 000000000867A524
S>
Для сравнения:
void* result = userFunc(ar.el[1], ar.el[2]);
00000183 mov ecx,dword ptr [rsp+000000E4h]
0000018a mov edx,dword ptr [rsp+000000E8h]
00000191 mov r11,822FE20h
0000019b mov r10,qword ptr [rsp+28h]
000001a0 call 000000000868A524