직장 내 소스에는 3 ~ 4 개의 어셈블러 루틴 (약 20MB 소스)이 있습니다. 그것들은 모두 SSE (2) 이며 (상당히 큰-2400x2048 이상이라고 생각하십시오) 이미지에 대한 작업과 관련이 있습니다.
취미로 나는 컴파일러에서 일하고 거기에 더 많은 어셈블러가 있습니다. 런타임 라이브러리는 종종 그것들로 가득 차 있으며, 대부분은 (예외를위한 도우미와 같은) 정상적인 절차 체계를 위반하는 것들과 관련이 있습니다.
마이크로 컨트롤러 용 어셈블러가 없습니다. 대부분의 최신 마이크로 컨트롤러에는 주변 하드웨어 (인터럽트 제어 카운터, 전체 구적 엔코더 및 직렬 빌딩 블록) 가 너무 많아서 어셈블러를 사용하여 루프를 최적화 할 필요가 더 이상 필요하지 않은 경우가 많습니다. 현재 플래시 가격에서는 코드 메모리도 마찬가지입니다. 또한 종종 다양한 핀 호환 장치가 있으므로 체계적으로 CPU 전원 또는 플래시 공간이 부족한 경우 업 스케일링은 문제가되지 않습니다.
실제로 100,000 개의 장치를 배송하지 않는 한 프로그래밍 어셈블러를 사용하면 범주를 더 작은 플래시 칩에 맞추는 것만으로도 상당한 비용을 절감 할 수 있습니다. 하지만 나는 그 범주에 속하지 않습니다.
많은 사람들이 임베디드가 어셈블러의 변명이라고 생각하지만 컨트롤러는 Unix 가 개발 된 시스템보다 CPU 성능이 더 높습니다 . (마이크로 칩 은 미화 10 달러 미만 으로 40 및 60 MIPS 마이크로 컨트롤러 와 함께 제공됩니다 .)
그러나 마이크로 칩 아키텍처를 변경하는 것은 쉽지 않기 때문에 많은 사람들이 레거시를 고수하고 있습니다. 또한 HLL 코드는 아키텍처에 매우 의존적입니다 (하드웨어 주변 장치, I / O 제어를위한 레지스터 등을 사용하기 때문). 그래서 때때로 어셈블러에서 프로젝트를 계속 유지해야하는 좋은 이유가 있습니다. 그러나 종종 사람들은 어셈블러가 정말로 필요하다고 스스로 놀립니다.
GOTO를 사용할 수 있는지 물었을 때 교수님의 답변이 마음에 듭니다 (하지만 ASSEMBLER로도 읽을 수 있음) : "이 기능이 필요한 이유에 대해 3 페이지짜리 에세이를 작성할 가치가 있다고 생각하면 사용할 수 있습니다. . 결과와 함께 에세이를 제출하십시오. "
저수준 기능에 대한 지침 원칙으로 사용했습니다. 그것을 사용하기에는 너무 비 좁지 말고 적절한 동기를 부여하십시오. 정당화로 복잡한 추론을 피하기 위해 인위적인 장벽 한두 개 (에세이와 같은)를 던져라.