▲GN⁺ 2025-02-23 | parent | ★ favorite | on: FFmpeg 어셈블리 언어 학교(github.com/FFmpeg)Hacker News 의견 동일 주제에 대한 또 다른 자료로는 FFmpeg와 dav1d의 사례가 있음 FFmpeg는 자주 사용되므로 명확한 사용 사례로 볼 수 있음 dav1d는 주요 브라우저와 안드로이드 운영체제에서 사용되며, 성공의 큰 요소는 손으로 작성된 SIMD 덕분임 dav1d의 코드 중 일부는 하루에 수조 번 실행되므로 최대한 빠르게 실행되어야 함 손으로 작성된 SIMD와 컴파일러가 생성한 SIMD 간의 성능 차이는 최대 50%까지 발생할 수 있음 이러한 기술을 유지하기 위해 FFmpeg 어셈블리 언어 학교 같은 자원이 중요함 어셈블리 작성보다는 내장 함수를 사용하는 것이 더 가치 있다고 생각하지만, 읽는 것은 매우 유용했음 Compiler Explorer를 사용하여 컴파일러가 성능 최적화를 위해 수행하는 최적화를 이해함 이 가이드가 매우 훌륭하다고 생각함 저수준에 관심이 있었을 때 이 가이드를 가졌으면 좋았을 것임 어셈블리를 배우거나 구현하는 것에 대한 "즐거움"이 있는지 궁금함 LISP나 RISC-V처럼 즐거움이 있는지, 아니면 COBOL처럼 특정 시스템과 작업하기 위해 배우는 것인지 궁금함 일상 업무에서 어셈블리를 사용할 이유가 없지만 재미로 시간을 투자할 가치가 있는지 궁금함 "q" 접미사는 포인터 크기를 나타내며, 64비트 시스템에서는 8임 문장이 혼란스럽게 느껴짐 "i.e"는 "i.e.,"로 되어야 하며, "("는 열림 괄호로 되어야 함 "sizeof"는 포인터를 반환하지 않음 K&R 참조에 대한 칭찬 C와 프로그래밍을 배우기 위해 처음 구매한 책이었음 처음에는 C++를 배웠지만 너무 추상적이라 이해하기 어려웠음 어셈블리 사용의 단점은 코드가 아키텍처에 종속적이라는 것임 x86, arm, x86_64에 대해 각각 다른 코드를 작성해야 함 SIMD에 대한 이식 가능한 코드를 작성하는 좋은 방법이 없음 Rust는 이식 가능한 SIMD API를 안정화하고 있으며, Zig는 SIMD 지원을 제공하지만 FFmpeg는 여전히 속도에 불만을 가질 수 있음 인라인 어셈블리에 대한 반대가 혼란스러움 인라인 어셈블리가 어셈블리 함수 호출보다 효율적일 것 같음 이 자료는 완벽함 386 시절의 x86 어셈블리를 알고 있었지만, 더 고급 프로세서는 너무 복잡했음 최근 CPU의 SIMD에 대해 더 배우고 싶음 어셈블리가 C보다 10배 빠르다는 것이 여전히 사실인지 궁금함 컴파일러가 손으로 작성된 어셈블리에 근접할 수 없을 정도로 정체되었는지 궁금함
Hacker News 의견
동일 주제에 대한 또 다른 자료로는 FFmpeg와 dav1d의 사례가 있음
어셈블리 작성보다는 내장 함수를 사용하는 것이 더 가치 있다고 생각하지만, 읽는 것은 매우 유용했음
이 가이드가 매우 훌륭하다고 생각함
어셈블리를 배우거나 구현하는 것에 대한 "즐거움"이 있는지 궁금함
"q" 접미사는 포인터 크기를 나타내며, 64비트 시스템에서는 8임
K&R 참조에 대한 칭찬
어셈블리 사용의 단점은 코드가 아키텍처에 종속적이라는 것임
인라인 어셈블리에 대한 반대가 혼란스러움
이 자료는 완벽함
어셈블리가 C보다 10배 빠르다는 것이 여전히 사실인지 궁금함