본문 바로가기
반응형

전체보기96

Assemblers (3) 이전에 어셈블러는 기계에 따라 내부의 구현이 달라질 수 있다고 했다. 그럼에도 어셈블러는 기계 아키텍처와 관련되지 않은 독립적인 몇 가지 특징들을 가진다. 이러한 기능의 유무는 기계 아키텍처보다 프로그래머의 편의성 및 SW 환경과 같은 문제와 더 밀접하게 관련되어 있다. 여기서는 이에 대한 5가지 특징들에 대해 살펴보고자 한다. Literal Symbol definitions Expressions Program Blocks Control sections 위와 같은 특징이 적용된 코드를 살펴보자. 프로그램의 내용은 이전과 동일하다. 이제 위에서 언급한 특징들에 대해 자세히 살펴보면서 위의 변화된 점들을 이해해보자. Literals 프로그래머가 상수 operand(피연산자)의 값을 instruction의 일.. 2021. 10. 15.
Assemblers (2) 저번 포스팅에서 SIC 버전의 어셈블러에 대해 알아보았다. 이번에는 SIC/XE 버전 어셈블러에 대해 알아볼건데, 전 포스팅에서 봤던 어셈블리어 프로그램이 SIC/XE 버전에서 어떻게 변하는지 살펴보면서 알아보자. 전에 SIC/XE가 SIC와 어떤 차이점이 있는지도 살펴보았으니 이를 떠올리면서 시작해보자. Machine-dependent Assembler Features 저번에 어셈블러는 instruction format과 addressing mode에 따라 설계나 특징이 달라진다고 한 것이 기억나는지 모르겠다. 어쨌든 이렇게 어셈블러는 기계의존적이기 때문에 어떤 기계를 쓰느냐에 따라 차이를 보인다. 밑에 보여줄 그림은 SIC/XE instruction set을 이용하여 이전에 SIC로 작성했던 어셈블리.. 2021. 10. 14.
Dynamic Programming Design Pattern (동적 계획법) 분할 정복(DC로 줄이겠음)에 이어서 이번에는 Dynamic Programming(동적 계획법, DP로 줄이겠음)이라는 디자인 패턴에 대해 알아보자. Introduction to Dynamic Programming 제목에 DP에 대한 해석을 '프로그래밍'이 아닌 '계획'으로 했다. 즉 DP의 Programming은 컴퓨터 프로그래밍이 아닌 계획을 의미한다. 원래 DP는 다단계의 의사결정을 최적화하기 위한 방법이었는데, 현재는 최적화 기법의 특정 유형으로 제한되는 일반적인 알고리즘 설계 기법이다. 말이 좀 어려운것 같다. 다르게 설명하자면 DP는 중복되거나 종속적인 하위 문제로 문제를 해결하기 위한 기술이다. 일반적으로, recurrence relation에서 하위 문제가 발생한다. 이 방법은 중복되는 하.. 2021. 10. 13.
Divide and Conquer design pattern(분할정복) 이전에는 알고리즘의 효율성을 판단하는 방법을 살펴봤었다. 이제 처음에 언급했듯이 하나의 디자인 패턴을 이용하여 몇가지 문제를 해결해보고 이를 분석해보자. Introduction to Divide-and-Conquer divide&conquer. 한글로 해석하면 나눠서 정복하는 것이다. 즉 input으로 주어진 instance가 너무 거대할 때, 이를 두개 이상의 작은 부분으로 나누어 이것들을 하나씩 해결해나가는 것이다. 작은 부분들을 해결한 결과물을 합치게되면 원래 해결하고자 했던 문제를 해결할 수 있게 되는 것이다. 만약 나눠진 문제가 해결하기에 여전히 큰 문제라면, 이를 해결할 수 있을 때까지 더 작은 조각으로 나눌 수 있다. 이러한 divide&conquer 접근은 original problem의 .. 2021. 10. 4.
반응형