문제

내 목표는 소프트웨어 애플리케이션 개발과 웹 애플리케이션 개발에 초점을 맞추고 있지만 데스크톱 애플리케이션 일 가능성이 높습니다.C / C ++에 더 익숙해지는 길에 착수하고 있는데, 그보다 훨씬 낮은 수준으로 어셈블리에 들어가야합니까?아니면 장기적인 목표에 대한 혜택이 없을까요?

도움이 되었습니까?

해결책

직접 적용하지 않는 한 많은 이점이 없을 것입니다.일반적인 지식을 얻으려면 C / C ++부터 시작하는 것이 좋습니다.

즉, 어셈블리가 제기하는 과제는 매우 흥미롭고 작업을 완료하려면 완전히 다른 사고 방식이 필요합니다.

TI-86 계산기.Z80 명령어 세트는 매우 작고 어셈블리에서 계산기를 프로그래밍하는 참신함은 매우 재미 있습니다.

ticalc.org 에는 TI 어셈블리 프로그래밍

다른 팁

이 질문에 대한 "아니오"답변이 너무 많아서 놀랐습니다.조립을 배워야 한다고 생각합니다.

직장의 일환으로 어셈블리를 직접 사용 하지는 않을 것입니다.하지만 배워서는 안된다는 것은 아닙니다.

학습 어셈블리는 컴퓨터 내부에서 일어나는 일에 대해 알려줍니다.소프트웨어가 실제로 수행하는 작업을 이해하는 데 도움이됩니다.

정말 전문성에 관한 것입니다.전문 소프트웨어 엔지니어가 되시겠습니까?아니면 복사하여 붙여 넣기 해킹이 될까요?물론 후자가 비용을 지불 할 수도 있지만 전문가가되는 것이 훨씬 더 만족 스럽습니다.

누군가 "아니, 조립을 배우지 마세요"라는 말을 들으면 "여기 다리를 짓기위한 요리 책이 있습니다. 다리를 짓기 위해 물리학이나 공학에 대해 배울 필요가 없습니다.이 조리법. "아니요, 감사합니다.

G'day,

Elect를 할 때 PDP 어셈블러를 배웠습니다.Eng.70 년대 후반의 학위.내가 실제로 사용한 어셈블러의 마지막 방언은 네 가지 메모리 주소 지정 모드를 가졌습니다.내가 본 마지막 방언에는 17 가지 모드가 있습니다!

오늘날 학습 어셈블러가 실제로 무엇을 제공하는지 확실하지 않습니다.당시에는 제가 선택한 CS 스트림의 필수적인 부분이었습니다.eng.학위.

C ++를 배우려면 앉아서 " Accelerated C ++ "는"다른 비트가있는 C "가 아니라 그 자체로 C ++에 접근합니다.

C의 경우 최신 버전의 "C 프로그래밍Lanuage " (일명) K'n'R

도움이 되었기를 바랍니다.

건배, 롭

나노 프로그래밍에 대해 물었다면 ... (-:

"어셈블리의 방언을 배울 가치가 있습니까?"

저는 조립을 전문적으로 프로그래밍했습니다. 팩스 기계와 스캐너를 실행하는 M68k. 또한 Windows VxD (가상 장치 드라이버)는 실제 커널을 사용하기 3 / 3.1 일 전에 Windows로 돌아 왔습니다.

일반적인 소프트웨어 작업 (메모리 복사, 문자열 연결, 인터럽트 처리기 호출 등)을 수행하기 위해 어셈블리를 코딩하는 것은 흥미로운 일입니다. 때로는 주어진 프로세서에서 가능한 한 빨리 특정 작업을 수행하기 위해 C 코드에 의해 호출되는 어셈블리를 코딩합니다. 프로세서가 제공하는 모든 사이클을 활용하는 방법을 찾고 있기 때문에 더 흥미로울 수 있습니다. 프로세서의 L1 캐시에 무엇이 있는지 관심이 있습니다. 캐시 라인 히트를 피하기 위해 메모리에 데이터를 정렬하는 데 관심이 있습니다 (이 용어를 기억한다면). 듀얼 파이프 라인 프로세서 아키텍처에 관심이 있고 올바른 순서로 올바른 2 개 또는 3 개 또는 4 개의 명령어를 사용하여 단일 클럭 틱으로 2 개 또는 3 개 또는 4 개의 일이 발생하도록합니다 (프로세서의 XgHz에서 해당 HZ 중 하나).

어셈블리를 코딩하여 맞춤형 하드웨어를 구동 할 때 이제 16 바이트 메모리 버퍼를 채우고, DMA 작업을 설정하고, 레이저 프린터 드럼을 구동하는 것과 같은 작업을 수행하는 컨트롤러에 해당 데이터를 보내는 것과 같은 작업을 수행합니다. 그리고 드럼이 회전하고 멈출 수 없으며 다음 5us 내에 다음 16 바이트를 원합니다. 물론 C 나 C ++로도 가능합니다. 그러나 예는 끝이 없습니다.

"어셈블리의 방언을 배울 가치가 있는가?"라는 질문의 마지막 절반을 잘라낼 수 있습니다. 그리고 "배울 가치가 있는가?"

프로그래밍을 좋아한다면 '가치'를 정의하는 방법에는 프로그래밍 사랑의 일부 요소가 포함됩니다. 그런 의미에서 나는 프로그래밍에서 무언가를 배운 적이 없으며 그만한 가치가 있다고 생각하지 않았습니다. 나중에는 많이 사용하지 않았더라도

같은 의미에서 배우기가 어려울수록 더 "가치"라고 말할 수 있습니다.

그러나 그 모든 솜털 같은 쓰레기는 제쳐두고 적어도 어셈블리 배경을 얻는 것이 가치가 있다고 생각합니다. 계속해서 strcpy, memmove 등과 같은 몇 가지 간단한 stdlib 루틴을 대체하기 위해 어셈블리를 작성하는 방법을 알아 내십시오. 그런 다음 시간을 측정하는 동안 C에서 백만 번 호출하여이를 최적화하십시오.

ASM을 배우지 않을 것입니다.C / C ++를 배우고 싶다면 그것부터 시작하세요.코드의 품질이 성숙함에 따라 ASM이 필요하다는 것을 알게 될 것입니다.99 %는 그렇지 않지만 때때로 필요할 수 있습니다.

또한 C / C ++가 백그라운드에서 수행하는 작업을 이해하는 측면에서 ASM을 아는 것도 도움이됩니다.그러나 다시 한 번, 더 발전 할 때까지 아마 그럴 필요가 없을 것입니다.

그렇게했고 당시에 도움이되었다고 생각합니다.더 이상 나에게 도움이되지는 않지만 직업에 따라 달라질 것입니다.

저는 20 년 전에 Commodore에서 어셈블러를 배웠고 IBM 메인 프레임에서 University에서 다시 배웠습니다.현재 직장에서 도움이된다고 말할 수 없습니다.

마크에 동의합니다.C #, VB.NET 또는 다른 .NET 언어로 작성할 때 MSIL을 배우는 것과 비슷하다고 생각합니다.내부에서 무슨 일이 일어나고 있는지 알면 도움이되지만, 작동하고 필요하지 않은 애플리케이션을 만드는 데 평생을 바칠 수 있습니다.

아니요.재미로하고 싶지 않다면 조립을 배울 필요가 없습니다.

드라이버 생성, OS 개발, 익스플로잇 개발과 같이 어셈블리에 대해 알아야 할 몇 가지 사항이 있지만 그 외에는 개인적으로 모르는 사이에 영원히 코딩 할 수 있다고 생각합니다.

어셈블리를 배워야한다면 알 것입니다. 배우기 위해 배운 것이 아닙니다.

관리되지 않는 C ++를 작성하는 경우 최소한 기본 x86 어셈블리, 이진 숫자 시스템 등을 아는 것이 매우 중요합니다. 저는 주로 C / C ++ 개발을 수행하며, 때때로 매우 구체적인 오류에 대해 프로덕션 코드를 디버그해야합니다.컴파일러에 의해 생성 된 기계 코드 표현에 대한 유일한 방법은 디 컴파일 된 어셈블리를 읽고 컴파일러가이를 생성 한 이유를 확인하는 것뿐입니다.

조립에 대한 자세한 내용은 다음 질문을 참조하십시오. 총회를 배우는 가장 좋은 방법은 무엇입니까?특히 동적 언어에 대한 경험이있는 사람을위한 것입니다 .

조립은 그리 어렵지 않습니다.C에 익숙해지면 하루나 이틀 동안 기본 어셈블리를 배우십시오.디버깅 측면에서 유용 할뿐만 아니라 속도면에서 10, 15 또는 그 이상으로 C에 해당하는 속도를 능가하는 코드를 작성할 수있는 재미도 있습니다.

나는 "현대적인 어셈블러 언어"를 배우는 것을 권하지 않습니다.

그러나 MOS 6510 어셈블러에 대해 조금 알고 분해 된 C64 OS 및 BASIC Interpreter라고도하는 커널은 컴퓨터 내부에서 일어나는 일을 이해하는 데 많은 도움이되었습니다.인터럽트 및 메모리 페이지와 같은.

이렇게하면 다른 언어로 최적화 된 코드를 작성하는 방법에 대한 힌트를 얻을 수 있습니다.하지만 그 중 상당수는 이미 현대 컴파일러에 의해 수행되었으므로 블랙 박스 내부에서 무슨 일이 일어나고 있는지에 관심이있는 경우에만 제안합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top