본문으로 건너뛰기

내장 기능

이 섹션에서는 이전 글에서 설명한 것보다 덜 기본적인 언어 구성을 설명합니다. 이들은 stdlib.fc에 정의될 수 있지만 그렇게 하면 FunC 최적화 프로그램의 여지가 줄어들게 됩니다.

예외 발생

예외는 조건부 기본 요소인 throw_ifthrow_unless, 그리고 무조건적인 throw로 발생시킬 수 있습니다. 첫 번째 인자는 에러 코드이고, 두 번째는 조건입니다(throw는 인자가 하나만 있음). 이러한 기본 요소들은 매개변수화된 버전인 throw_arg_if, throw_arg_unless, throw_arg를 가집니다. 첫 번째 인자는 모든 타입의 예외 매개변수이고, 두 번째는 에러 코드, 세 번째는 조건입니다(throw_arg는 인자가 두 개만 있음).

불리언

  • true-1의 별칭
  • false0의 별칭

변수 덤프

~dump 함수를 사용하여 디버그 로그에 변수를 덤프할 수 있습니다.

문자열 덤프

~strdump 함수를 사용하여 디버그 로그에 문자열을 덤프할 수 있습니다.

정수 연산

  • muldiv는 곱하기-나누기 연산입니다. 중간 결과는 513비트 정수에 저장되므로, 실제 결과가 257비트 정수에 맞는다면 오버플로우가 발생하지 않습니다.
  • divmod는 두 개의 숫자를 매개변수로 받아 나눗셈의 몫과 나머지를 제공하는 연산입니다.

기타 기본 요소

  • null?은 인자가 null인지 확인합니다. TVM 타입의 null 값으로, FunC는 일부 원자적 타입 값의 부재를 표현합니다; null 값을 참조하세요.
  • touch~touch는 변수를 스택의 맨 위로 이동시킵니다
  • at은 지정된 위치에서 튜플 컴포넌트의 값을 가져옵니다