2014-02-07 1 views
0

어셈블리 (내가 아는 한) 가장 낮은 수준의 언어가 있습니다. 그것은 하드웨어와 메모리와 직접 통신합니다.Assembly를 사용하여 실제 응용 프로그램을 개발하는 것이 현실적입니까?

Assembly를 사용하여 실제 응용 프로그램 (텍스트 기반 콘솔 응용 프로그램 일지라도)을 개발할 수 있습니까? (Hello World보다 복잡한 응용 프로그램). 이것이 이제껏 끝났습니까? 또는 어셈블리는 C와 같은 고급 언어로 개발하는 데 '도움이되었습니다'? 직접적 하드웨어가 이해하는 지침을 모방하기 때문에

+0

어셈블러는 일반적으로 _macro 어셈블러 _로 변환됩니다. 즉, 이미 어셈블러 위에 다른 언어 수준이 있습니다. 그 외에도 모든 생산적인 프로그래머는 프로그램의 동작을 설명하는 추상화 수준을 높이 려합니다. 즉, 사용 가능한 모든 도구로 컴파일 타임 및 런타임 언어 (및 인터프리터)를 프로그래밍 할 수 있습니다. 코딩 속도의 차이는 기존의 다른 언어가 이미 응용 프로그램을 말하고 있는지 여부입니다. –

+0

가능하지만 실용적이지 않습니다. 핫스팟 - [90/10 규칙] (http://en.wikipedia.org/wiki/Program_optimization#Bottlenecks)을 찾은 다음보다 효율적인 알고리즘을 고려하십시오. 어셈블리가 제공 할 수있는 최종 성능 향상을 가져야하지만, 효과적으로 캡슐화되거나 언어/컴파일러에 의해 노출 될 수 없다면 고려할 가치가 있습니다. 가파른 학습 곡선, 시간의 투자, 용납 할 수없는 버그, 유지 관리 및 이식성 문제가 그만한 가치가 있습니까? 몇 달 안에 무어의 법칙에 의해 5 %의 속도 향상이 가치가있을 것입니까? ... 다시 한번, 친숙 함으로 인해 더 나은 프로그래머가됩니다. –

답변

2

예, 예 및 아니요

어셈블리 코드는 매우 낮은 수준이다. 더 깊은 또 다른 레벨이 있습니다. 순수한 바이너리 코드가 될 것입니다.하지만 요즘은 아무도 더 이상 사용하지 않습니다. (컴퓨터 초기에 완료되었습니다.) 그러나 어셈블리에서 전체 응용 프로그램을 작성할 수 없도록하는 것은 없습니다. 실제로 C 컴파일러 (또는 다른 고수준 컴파일러)는 코드를 이진 코드로 변환하기위한 최종 단계를 수행하기 전에 먼저 코드를 (일종의) 어셈블리로 변환합니다. 일부 컴파일러에서는 어셈블리 코드를 내보낼 수도 있습니다. 너 자신을 쓰지 못하게하는 것은 아무것도 없다.

어셈블리를 사용하여 전체 운영 체제를 작성했습니다. 사실, 현재도 어셈블리가 필요한 유일한 곳은 운영 체제의 핵심입니다. 왜냐하면 거기에 필요한 지침에 대한 높은 수준의 지원이 거의 없기 때문입니다.

관련 문제