«abi» 태그된 질문

(Application Binary Interface)는 프로그램, 라이브러리 및 운영 체제 간의 하위 수준 인터페이스를 지정합니다. 예를 들어 함수 매개 변수를 전달하는 데 사용되는 레지스터.

5
C ++ 표준은 초기화되지 않은 bool이 프로그램을 중단시킬 수 있습니까?
C ++ 의 "정의되지 않은 동작" 은 컴파일러가 원하는 모든 작업을 수행 할 수 있다는 것을 알고 있습니다. 그러나 코드가 충분히 안전하다고 가정하면서 충돌이 발생했습니다. 이 경우 실제 문제는 특정 컴파일러를 사용하는 특정 플랫폼에서만 최적화가 활성화 된 경우에만 발생했습니다. 문제를 재현하고 최대한 단순화하기 위해 여러 가지를 시도했습니다. 여기라는 함수의 추출물의 …

16
응용 프로그램 이진 인터페이스 (ABI) 란 무엇입니까?
나는 ABI가 무엇인지 명확하게 이해하지 못했습니다. 저에게 Wikipedia 기사를 알려주지 마십시오. 내가 이해할 수 있다면, 나는 그렇게 긴 게시물을 게시하지 않을 것입니다. 이것은 다른 인터페이스에 대한 나의 사고 방식입니다. TV 리모컨은 사용자와 TV 간의 인터페이스입니다. 기존 엔터티이지만 그 자체로는 쓸모가 없습니다 (기능을 제공하지 않음). 리모컨의 각 버튼에 대한 모든 기능은 …

9
API와 ABI의 차이점
나는 리눅스 시스템 프로그래밍을 처음 접했고 리눅스 시스템 프로그래밍 을 읽는 동안 API와 ABI를 접했다 . API의 정의 : API는 한 소프트웨어가 소스 레벨에서 다른 소프트웨어와 통신하는 인터페이스를 정의합니다. ABI의 정의 : API가 소스 인터페이스를 정의하는 반면 ABI는 특정 아키텍처에서 둘 이상의 소프트웨어 간 하위 수준 이진 인터페이스를 정의합니다. 응용 …
194 api  abi 

10
포인터를 전달하는 대신 C에서 값으로 구조체를 전달하는 데 단점이 있습니까?
포인터를 전달하는 대신 C에서 값으로 구조체를 전달하는 데 단점이 있습니까? 구조체가 큰 경우 많은 양의 데이터를 복사하는 성능 측면이 분명히 있지만 작은 구조체의 경우 기본적으로 여러 값을 함수에 전달하는 것과 동일해야합니다. 반환 값으로 사용하면 더 재미있을 것입니다. C에는 함수의 단일 반환 값만 있지만 종종 여러 값이 필요합니다. 따라서 간단한 해결책은 …



4
개체, 특히 STL 개체를 DLL로 (부터) 안전하게 전달하는 방법은 무엇입니까?
클래스 개체, 특히 STL 개체를 C ++ DLL과주고받는 방법은 무엇입니까? 내 응용 프로그램은 DLL 파일 형식의 타사 플러그인과 상호 작용해야하며 이러한 플러그인이 빌드되는 컴파일러를 제어 할 수 없습니다. STL 개체에 대해 보장 된 ABI가 없다는 것을 알고 있으며 내 응용 프로그램이 불안정해질 수 있습니다.
106 c++  windows  dll  stl  abi 


3
C ++ 17, C ++ 14 및 C ++ 11 개체를 연결하는 것이 안전합니까?
모두 동일한 컴파일러 / 버전 에서 생성 된 세 개의 컴파일 된 객체가 있다고 가정합니다 . A는 C ++ 11 표준으로 컴파일되었습니다. B는 C ++ 14 표준으로 컴파일되었습니다. C는 C ++ 17 표준으로 컴파일되었습니다. 단순화를 위해 모든 헤더가 세 가지 표준 버전간에 의미가 변경되지 않은 구조 만 사용하여 C ++ …
101 c++  c++11  linker  c++14  abi 

4
T *를 레지스터로 전달할 수 있지만 unique_ptr <T>는 왜 할 수 없습니까?
CppCon 2019에서 Chandler Carruth의 연설을보고 있습니다. 무 비용 추상화가 없습니다 거기에, 그는 그가 당신이 사용하여 발생할 얼마나 많은 오버 헤드 놀랐다 방법의 예를 제공 std::unique_ptr&lt;int&gt;오버를 int*; 해당 세그먼트는 17:25 시점에 시작됩니다. 그의 예제 코드 쌍 (godbolt.org) 의 컴파일 결과 를 볼 수 있습니다 . 실제로 컴파일러가 unique_ptr 값을 기꺼이 전달하지 …

1
스택 메모리를 사용하지 않을 때 왜 할당됩니까?
다음 예제를 고려하십시오. struct vector { int size() const; bool empty() const; }; bool vector::empty() const { return size() == 0; } 생성 된 어셈블리 코드 vector::empty(최적화와 함께 clang) : push rax call vector::size() const test eax, eax sete al pop rcx ret 왜 스택 공간을 할당합니까? 전혀 사용되지 않습니다. …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.