Re[2]: Передать массив в функцию по значению
От: stas19t  
Дата: 01.09.10 08:22
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.