4.1.15. __svc

__svc 키워드는 최대 4개의 정수 유사 인수를 받아서 value_in_regs 구조체로 최대 4개의 결과를 반환하는 SVC(관리자 호출) 함수를 선언합니다.

__svc 는 함수 한정자이며 함수 유형에 영향을 주지 않습니다.

구문

__svc(int svc_num) return-type function-name([argument-list]);

인수 설명:

svc_num

SVC 명령어에 사용되는 즉치값입니다.

다음 범위에 있는 정수로 평가되는 식입니다.

  • ARM 명령어의 경우 0 ~ 224-1(24비트 값)

  • 16비트 Thumb 명령어의 경우 0 ~ 255(8비트 값)

사용법

이로 인해 함수 호출은 일반 함수 호출과 유사하게 동작하는 AAPCS 호환 연산으로 인라인으로 컴파일됩니다.

__value_in_regs 한정자는 AAPCS에 정의된 일반 구조체 전달 메커니즘이 아니라 최대 16바이트의 작은 구조체가 레지스터에서 반환되도록 지정하는 데 사용할 수 있습니다.

예제

__svc(42) void terminate_1(int procnum); // terminate_1 returns no results
__svc(42) int terminate_2(int procnum);  // terminate_2 returns one result
typedef struct res_type
{
    int res_1;
    int res_2;
    int res_3;
    int res_4;
} res_type;

__svc(42) __value_in_regs res_type terminate_3(int procnum);
                                         // terminate_3 returns more than
                                         // one result

오류

SVC 명령어를 지원하지 않는 ARM 아키텍처 변형 또는 ARM 아키텍처 기반 프로세서가 --cpu 옵션을 사용하여 명령 행에 지정되면 컴파일러에서 오류를 생성합니다.

추가 참고

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential