반응형

c 3

C++ 대 C로 컴파일 시 GCC 코드 생성의 큰 차이

C++ 대 C로 컴파일 시 GCC 코드 생성의 큰 차이 저는 사용 가능한 다양한 SIMD 확장(MMX, SSE, AVX)에 대해 더 자세히 알아보려 x86-64 어셈블리를 가지고 약간 놀았습니다. C나 C++ 구조가 어떻게 GCC에 의해 기계 코드로 변환되는지 확인하기 위해 훌륭한 도구인 컴파일러 탐색기를 사용해 왔습니다. '플레이 세션' 중 하나에서 저는 GCC가 정수 배열의 간단한 런타임 초기화를 어떻게 최적화할 수 있는지 알고 싶었습니다.이 경우 저는 부호 없는 정수 2048개 배열에 0부터 2047까지의 숫자를 쓰려고 했습니다. 코드는 다음과 같습니다. unsigned int buffer[2048]; void setup() { for (unsigned int i = 0; i < 2048; ++i)..

programing 2023.09.12

가장 적은 양의 명령에서 가장 빠른 정수 제곱근

가장 적은 양의 명령에서 가장 빠른 정수 제곱근 나는 명시적인 분할을 수반하지 않는 빠른 정수 제곱근이 필요합니다. RISC 는 Δ RISC Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ,add,mul,sub,shift한 사이클(음 - 연산의 결과는 세 번째 사이클로 작성됩니다, 정말 - 하지만 인터리빙이 있습니다)에서 이러한 ops를 사용하고 빠른 Ingeter 알고리즘은 매우 감사하겠습니다. 이것이 제가 지금 가지고 있는 것이고, 다음 루프는 (값에 관계없이) 매 번 16번 실행되기 때문에 바이너리 검색이 더 빨라야 한다고 생각합니다.아직 광범위하게 디버깅하지는 않았으므로(하지만 곧) 조기 종료가 가능할 수도 있습니다. unsigned shor..

programing 2023.09.12

LinkedList - malloc을 사용하여 할당된 메모리를 해제하는 방법

LinkedList - malloc을 사용하여 할당된 메모리를 해제하는 방법 저는 아래와 같이 Singlely Linked List를 구성하는 아주 간단한 C 코드를 가지고 있는데 malloc을 사용하여 각 노드에 대해 동적으로 메모리를 할당합니다.코드가 끝나면 할당된 각 노드에 대해 메모리를 해제하고 싶은데 어떻게 해야 할지 고민 중이었습니다. 헤드 노드에서 먼저 시작해서 해제하면 후속 노드에 대한 포인터가 유실되고 메모리 누수가 발생합니다. 다른 방법으로는 헤드 노드에서 시작하여 별도의 포인터 배열 등에 노드 포인터를 계속 저장하고, 노드 포인터를 저장하는 동안 목록을 테일 포인터까지 이동하고, 테일 노드에 도달하면 다른 포인터 배열에도 저장하고 헤드 노드가 자유로워질 때까지 배열 인덱스에서 뒤로 해..

programing 2023.09.12
반응형