我试图了解如何创建自己的sgx应用程序,因此我正在仔细研究SDK示例。 我想知道SGX_CDECL的用途是什么?
在以下示例以及一般示例中
/* Application entry */
int SGX_CDECL main(int argc, char *argv[])
{
(void)(argc);
(void)(argv);
/* Initialize the enclave */
if(initialize_enclave() < 0){
printf("Enter a character before exit ...\n");
getchar();
return -1;
}
/* Utilize edger8r attributes */
edger8r_array_attributes();
edger8r_pointer_attributes();
edger8r_type_attributes();
edger8r_function_attributes();
/* Utilize trusted libraries */
ecall_libc_functions();
ecall_libcxx_functions();
ecall_thread_functions();
/* Destroy the enclave */
sgx_destroy_enclave(global_eid);
printf("Info: SampleEnclave successfully returned.\n");
printf("Enter a character before exit ...\n");
getchar();
return 0;
}
答案 0 :(得分:0)
看看https://en.wikipedia.org/wiki/X86_calling_conventions#cdecl
cdecl,子例程参数在堆栈上传递。整数值和存储器地址在EAX寄存器中返回,浮点值在ST0 x87寄存器中返回。寄存器EAX,ECX和EDX保留了呼叫者,其余的保留了被呼叫者。