스위프트 모듈의 함수에 @_silgen_name
attr을 사용하여 c와 상호 작용할 수 있음을 알고 있습니다. 어셈블리 파일에 정의 된 심볼을 사용하여이 작업을 수행 할 수 있습니까? 스위프트를 사용하여 syscalls를 만들고 싶습니다. 이것이 내가 묻는 이유입니다.swift에서 어셈블리에 정의 된 함수 호출
1
A
답변
2
브리지 header.h 파일을 만들고이 파일의 함수 프로토 타입을 넣습니다. 예를 들어
어셈블리 코드 :
.globl _add // make it global so that others can find this symbol
....
_add: // int add(int a, int b)
movl %esi, %eax
addl %edi, %eax
ret
그런 header.h가 파일을 브리징에
int add(int a, int b);
또는
는 신속한 모듈의 상단이 정의
@_silgen_name("add") func add(a: Int32, b: Int32) -> Int32
다음 신속하게 사용할 수 있습니다 :
let a = add(1, 2);
+0
어셈블리 파일을 링크하기 위해 swiftc 컴파일러에 어떤 플래그를 전달합니까? –
+0
동일한 XCode 프로젝트에 넣기 만하면됩니다. –
+0
나는 리눅스에서 xcode를 사용하지 않고있다. –
관련 문제
- 1. Swift에서 C++ 함수 호출
- 2. exe에 정의 된 호출 함수
- 3. 여러 어셈블리에 정의 된 System.Tuple
- 4. 애니메이션이 Swift에서 완료 될 때 함수 호출
- 5. AngularJS 지시문의 속성에 정의 된 호출 함수
- 6. 동적 어셈블리에 함수 덤핑
- 7. 함수 정의 및 호출
- 8. Silverlight 어셈블리에 정의 된 형식의 이진 직렬화
- 9. 2 차 함수 내에서 함수 호출 또는 더 큰 함수 내에서 정의 된 함수 호출
- 10. jQuery - 익명 함수 내에서 정의 된 호출 함수
- 11. 함수 정의 후 체인 함수 호출
- 12. 호출 사용자 정의 C 함수
- 13. 호출 루아 기능이 정의 함수
- 14. Matlab의 : 호출 사용자 정의 함수
- 15. Python에서 함수 정의 및 호출
- 16. 사용자 정의 함수의 함수 호출
- 17. Swift에서 작동하지 않는 함수
- 18. Swift에서 함수 오류 처리
- 19. Swift에서 func을 반환하는 함수
- 20. Swift에서 클래스에 함수 전달
- 21. Swift에서 많은 함수 그룹화하기
- 22. Swift에서 외부 명령 호출
- 23. 정의 된 함수 플로팅
- 24. swift에서 같은 이름의 로컬 함수에서 전역 함수 호출
- 25. android - onCreateView 전에 호출 된 사용자 정의 함수
- 26. qTip 내용에 정의 된 하이퍼 링크의 함수 호출
- 27. $ (document) .ready 외부에서 $ (document) .ready에 정의 된 함수로 함수 호출
- 28. Angular2에서 Component Template에 정의 된 JS 함수 호출
- 29. 타이머를 사용하지 않고 정의 된 초 후에 함수 호출
- 30. 자바 스크립트 라이브러리 외부에서 정의 된 함수 호출
컴파일 된 개체 파일은 C로 컴파일되었는지 또는 어셈블리 언어로 어셈블 된 것인지 알 수 없습니다. –
@PaulGriffiths 컴파일러는 swm 모듈을 컴파일 할 때 asm 파일의 기호가 어디에 있는지 어떻게 알 수 있습니까? –
심볼이 C 소스 파일과 어디에 있는지를 아는 것과 똑같은 방법으로 오브젝트 파일의 심볼 테이블에서 심볼을 찾습니다. –