2011-12-15 6 views
7

어셈블리 언어로 글쓰기에 대해 토론하고 싶은 사람이 많고, 필자도이 글을 쓰는 법을 배우려는 이유 중 하나 인 경우가 종종 있습니다. 현재 저는 어셈블리와 C를 함께 배우고 있습니다.어셈블리 언어로 실제 코드를 작성해야합니까?

제 궁금한 점은 언제 실제 코드로 어셈블리를 작성해야합니까?
배우는 것이 좋은가요?
C에서 코드를 작성할 때 실제로 사용합니까?

유용한 모든 의견이나 답변을 보내 주시면 감사하겠습니다.

+1

어셈블리가 더 이상 IMO에 유용하지 않지만, 그렇다면 읽기는 쓰기보다 유용합니다. – zneak

+1

컴파일러가 실제로 그것을 자르지 않으면 언제든지 필요할 것입니다. 비디오 데이터를 다루는 코드, 과학 시뮬레이션, 게임에서의 약간의 물건, 특히 Bashwork에서 언급 한 것들은 아주 빡빡한 사이클 예산을 가지고있는 경우와 같은 경우가 있습니다. 당신이 글을 쓸 때 당신의 인생을 빨아 먹는 지루한 기업용 앱에서는 드물다. – harold

답변

4

드문 경우입니다. 나는 23 년 이상 경력을 쌓아 본 적이 없다. 하지만 Client Server DB 응용 프로그램 공간에서 주로 작업합니다. 작업을 많이 사용하거나 프로세서가 실제로 작동하는 방식을 알아야합니다.

하지만 처음 배운 것은 기본적인 디지털 전자 기기를 제외하고 배우며 내 경력과 취미 프로그래밍에 큰 도움이되었습니다.

5

나는 긴 글을 쓰는 것 대신 요약하기로 결정했다 :

  1. 임베디드 코드, 부트 로더, 컴파일러 백엔드
  2. 당신이 이해 예, 그것은 도움이 될 및 디버깅 컴파일 된 코드를
  3. 내가 그것을 c에서 사용한 유일한 시간은 실시간 시계 레지스터를 읽는 것입니다.
8

어셈블리에서 코드를 작성하는 것이 점차 희귀 해졌음에도 불구하고, 여전히 학습하기에 매우 좋습니다 n 어셈블리를 사용하면 상황이 어떻게 작동하는지 이해할 수 있습니다. 현대의 C/C++ 컴파일러를 최적화하면 C로 코드를 작성하여 매우 높은 품질의 어셈블리 명령어로 변환 할 수 있습니다. 수동으로 작성하여 결과를 읽기 어려울 정도로 희생 할 수 있습니다 (예 : 빈 명령어를 삽입하여 CPU의 파이프 라인).

새 아키텍처, 매우 낮은 수준의 라이브러리 또는 엄격한 리소스 제약 조건이있는 내장 시스템에 대한 컴파일러를 작성하는 경우 어셈블리를 사용해야 할 수 있습니다. 그 밖의 모든 것에 대해서, C와 C++는 잘 할 것입니다.

2

직장에서 asm 코드를 작성해야 할 때가 많았습니다. C에서 특정 작업을 수행 할 수 없거나 (예 : 특수 CPU 레지스터에 액세스하거나 CPU의 시스템 명령어를 사용하는 경우) 또는 컴파일 된 C 코드도있었습니다 느리거나 너무 큽니다 (컴파일러는 충분하지 않았습니다).

여전히 asm 코드 또는 시간을 쓰는 데 쓰는 부분은 꽤 중요하지 않습니다.

학습 asm이 좋다. 그것은 당신이 C 코드를 통해 "보게"하고, 어떤 명령어와 얼마나 많은 명령어가 될지 예측하고, 코드의 부분 속도를 대략적으로 추정합니다. 이 과정에서 많은 최적화 및 기타 트릭과 몇 가지 멋진 알고리즘/메소드를 배운 다음 C 코드로 전송할 수 있습니다. C 포인터에 대한 수많은 질문 또는 2 진수와 10 진수 또는 임의 정밀도 산술 간의 숫자 변환을 살펴보십시오. asm을 알고 있으면 이러한 것들을 도와줍니다.

3

어셈블리 언어의 전문적인 사용은 임베디드 분야에서 매우 일반적입니다. 마이크로 컨트롤러가 단순하지만 유용한 일을하는 많은 응용 프로그램이 있습니다. 예를 들어 tinyAVR family of microcontrollers from Atmel을 살펴 보겠습니다. 특히 ATtiny13은 엄청나게 작은 1kB 프로그램 메모리와 32 비트 8 비트 CPU 레지스터를 제외한 RAM이 전혀 없습니다. 놀랍지 만,이 칩들은 capable of입니다.이 칩은 대량으로 구입할 때 약 1 달러의 비용이 듭니다. 따라서 단순한 (또는 아주 단순하지 않은) 논리를 필요로하는 많은 양의 장치를 생산할 때 하드웨어 생산 비용의 절감은 매우 제한된 플랫폼에서 작동하도록 어셈블러에서 코드를 손으로 만드는 오버 헤드보다 훨씬 중요합니다.

2

지금까지 2011 년에 두 번이나 해본 적이 있습니다. 대부분 자바 계열의 비즈니스 앱에서 작업합니다. 신속한 setup.exe를 작성하여 JRE 및 응용 프로그램을 설치하는 데 유용합니다. C에서 그렇게 할 수 있었지만 컴파일러보다 어셈블러를 설치하고 설정하는 것이 더 빠르며 간단한 응용 프로그램의 경우 쓰기 시간이 어느쪽에도 비슷합니다 ... 또한 USB 장치와 인터페이스하는 문제를 해결하는 데 사용되었습니다. JNA를 통해 알려지지 않은 이유로 실패 했으므로 모든 비트가 언제 어디서 나 있는지 알기 위해 어셈블리에 썼습니다.

관련 문제