什么是SGX_CDECL宏?

时间:2019-04-06 12:43:57

标签: c++ sgx

我试图了解如何创建自己的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;
}

1 个答案:

答案 0 :(得分:0)

看看https://en.wikipedia.org/wiki/X86_calling_conventions#cdecl

  

cdecl,子例程参数在堆栈上传递。整数值和存储器地址在EAX寄存器中返回,浮点值在ST0 x87寄存器中返回。寄存器EAX,ECX和EDX保留了呼叫者,其余的保留了被呼叫者。