我目前正在修改在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年末英特尔酷睿2双核2.66 GHz运行OS X Lion
当前编译说明:
g++ -fomit-frame-pointer -m32 -fasm-blocks -o QS Test.cpp Main.cpp
答案 0 :(得分:0)
x86或x86-64目前不支持裸
在ARM,AVR,MCORE,RX和SPU端口上使用此属性可指示指定的函数不需要编译器生成的序言/结尾序列。
__attribute__((naked))
。