В настоящее время я изменяю код, созданный в MS VS IDE, и одно из изменений, которое мне нужно сделать, - это изменение с __declspec (naked)
на __attribute__ (( naked ))
.
Однако после внесения этого изменения программа выполняетневерный доступ и изменение параметров.
Передается ли параметр с использованием __attribute__ (( naked ))
?
Вот код:
//Main file
#include <stdlib.h>
#include <stdio.h>
extern void test(int * arrayToSort, int size);
int main(int argc, char ** argv) {
int * a = (int*) malloc (sizeof(int) * 10);
int j;
for (j=0; j<10; j++)
{
printf("a[%d]=",j);
scanf("%d",a+j);
printf("\n");
}
test(a, 10);
for (j=0; j<10; j++)
{
printf("%d ", a[j]);
}
printf("\n");
}
//test code file
void test(int * array, int size)
{
_asm {
push edx
push ecx
push ebx
push eax
mov eax, dword ptr[esp+20] //*array
mov ebx, dword ptr[esp+24] //size
mov dword ptr[eax], 25 //array[0] = 25
mov dword ptr[eax+4], ebx //array[1] = size
pop eax
pop ebx
pop ecx
pop edx
}
}
Любая помощь очень ценится.
Технические характеристики системы:
MacBook Pro, конец 2009 г. Intel Core2 Duo 2,66 ГГц под управлением OS X Lion
Текущие инструкции по компиляции:
g++ -fomit-frame-pointer -m32 -fasm-blocks -o QS Test.cpp Main.cpp