전체 글 22

[Fortran 2003] 객체지향 프로그래밍?

Fortran은 1954년부터 시작된 매우 깊은 유서를 자랑하는 프로그래밍 언어입니다. ALGOL, A언어 등과 같은 언어는 사실상 수명을 다한 것에 반해, 포트란은 기본적으로 처리 속도로 인해, 현대에 이르러서도 적지않은 사람들이 사용하고 있습니다. 이러한 사례처럼 현재까지도 다양한 분야와 기기에서 포트란이 활용되고 있습니다. 그러기에, 포트란 또한 현대에 발을 맞춘 표준들이 등장하기 시작하였는데, 그 중에 하나가 OOP입니다. 포트란은 2003년에 Fortran 90 개정을 잇는 Fortran 2003 개정을 발표합니다. 간단하게 발표된 대표적인 개정들은 OOP 지원 IEEE 부동소수점 표준 내장 모듈 비동기 전송, 스트림 타입 I/O 도입 명령 라인 지원 프로시저 포인터 데이터 조작성 강화 C언어와..

[Assembly Language]0.어셈블리어의 종류

오늘은 어셈블리어로 스타트를 끊어보겠습니다! 어셈블리어 또한 세부적으로 종류가 나누어져있음을 알고 계시나요? 오늘은 간단한 어셈블리어의 종류를 알아봅시다! 어셈블리어가 뭐지?? 어셈블리어에 대해서 들어보신 본들도 많으실 것 입니다. 일반적으로 컴퓨터는 명령어를 16진수 opcode로 처리를 합니다. 01 : ADD 77 : JA ; 이런식으로 16진수 opcode 입력을 통하여 작동을 진행한다.이를 보통 우리는 '기계들의 언어', 즉 Machine Language라고 칭합니다. 하지만, 우리 한국인들이 프랑스를 간다고 해서, 프랑스어를 일반적으로 알아듣는 것이 아니죠? 왜냐하면, 사용하는 기준은 프랑스인이니까요. 그렇기 때문에, 컴퓨터 기준에서의 언어는 일반적인 사람은 읽기가 어렵기에, 사..

Assembly Language 2021.11.14

[C++]가상 함수, 순수 가상 함수(virtual function)

시작하기 앞서... C++은 기본적으로 프로그램의 속도를 위하여, 복잡한 형태를 가진 기능인 경우, 실행 시간의 처리보다는 컴파일을 하였을 때, 처리하는 경우가 다반사입니다. // 대표적인 예시들 constexpr int a = 0; // constexpr은 const와 달리, 컴파일을 하였을 때, 상수가 결정된다. // cosntexpr int a; // 컴파일을 할 때, 상수가 결정되지 않았기에 틀림 std::vector a; // 제너릭 프로그래밍 같은 경우에도, 해당 타입을 컴파일 할 때, 추가되는 방식이다.그러나, C++에서는 RTTI 기능이 존재하기에, 굳이 컴파일 타임 말고도, 런타임에서 결정화시키도록 진행한 것이 있습니다. 그럼 한번 알아볼까요? RTTI RTTI는 RunTime Type ..

C-Like/C++ 2021.09.16

[Fortran77]Fortran 기초(3)

오늘은 간만에 Fortran에 대해 간단하게 알아보겠습니다. 오늘은 IF문 대비를 위한, 연산자에 대해 알려드리도록 하겠습니다. 연산자 Fortran 90이후에는 현대적인 연산자와 비슷하지만, 77인 경우에는, 약간의 차이가 납니다. +, -와 같은 계산에 대한 연산자는 같으나, 논리 연산과 관계 연산자에 대해서는 약간 차이가 존재하기에, 차그차근 알아보겠습니다. 수학 연산자 사실 덧셈, 뺄셈 등과 같은 연산자는 다른 언어와 차이가 나지 않습니다. 1 + 2 => 3 1 - 2 => -1 1 / 2.0 => 0.5 1 * 2 => 2이런식으로 말이죠 하지만, 다른 언어에서도 보기 어려운 연산자를 제공하기도 합니다. 바로 제곱 연산자인 **입니다. 제곱 연산자에 대한 이용은 그리 어렵지 않습니다. 2 **..

Fortran/Fortran77 2021.08.26

[ADA]Ada 기초(5)

오늘은 약 2주만에 드럽게 오랫동안 안 올렸네 ADA 기초 5번째 시간입니다. 이번에는 포인터와 레퍼런스 같은 것을 한번 해볼테니까, 이번에도 재밌게 즐겨보십쇼:) In 파라미터 어느날 당신은 이러한 함수를 짜고싶습니다. 어떠한 함수가 존재하는데, 그 함수에 인자가 서로의 값을 바꾸도록 해보고 싶어! 보통 이러한 함수는 C언어에서는 포인터를 이용하면, 어렵지 않게 구현을 할 수 있습니다. 하지만 Ada에서는 어떻게 구현을 해야할까요? 일단 임의의 코드를 작성해봅시다. with Ada.Text_IO; use Ada.Text_IO; procedure example_01 is procedure SwapFunction(A, B : Integer) is Tmp : Integer := 0; begin Tmp := ..

Ada 2021.08.19

[Fortran77]Fortran 기초(2)

오늘은 Fortran77에 대한 기초 두번째 시간입니다. 오늘도 열심히 해보겠습니다. 입출력 저번에 Fortran은 출력같은 경우 Write(UNIT, FMT)를 이용하는 것으로 알려드렸습니다. 또한 입력같은 경우에는 Read(UNIT, FMT)를 이용합니다. UNIT은 저번에도 설명을 하였으나, 다시 설명을 해보자면, C언어에서 파일디스크립터와 같은 역할을 지닌다고 생각하시면 됩니다. FMT는 포맷을 의미하죠. 하지만, 파일 입출력 또는 포맷을 지정을 해야하는 특수한 경우가 아니라면, '*'을 넣어 기본값으로 지정을 해주시면 됩니다. program ProgramName Write(*, *) "Hello, World" end program이런식으로 작성을 한다면, 기본인 모니터에 띄워줍니다..

Fortran/Fortran77 2021.08.18

[Embedded]HKEmbedded 개발(3)

HKEmbedded에 대한 개발글 3번째입니다. 이번 같은 경우 ISR 벡터 테이블에 대한 구현을 성공하였습니다. 그럼 간단하게 업데이트 내용을 알려드리겠습니다. 업데이트 된 것 벡터 테이블 section 구현 인터럽트 벡터 테이블 일부 구현 버그 혹은 고쳐야할 사항 _start 지점(push {r3, lr})에서 HardFault 발생 하고싶은 말 _start 지점에서 HardFault가 발생되는 엄청난 문제가 발생을 하는 바람에 매우 걱정이 되기 시작하였습니다. 현재까지도 왜 HardFault가 발생이 되는 것인지에 많은 생각을 하고 있으며, 빠른 시일내로 버그를 고칠 생각입니다. 다음 업데이트 예정 HardFault, MemUsuage 등 특정 ISR에 대한 완벽한 구현

EMBEDDED 2021.08.17

[Embedded]HKEmbedd 프로젝트(2)

그동안 HKEmbedded 프로젝트에 관해서 글을 올리지 않아, 근황을 올릴 겸 작성해보았습니다. 그동안 추가된 것들 Section 일부 구현(isr_vector) 링커 일부 구현 _start() 함수 일부 구현(벡터 테이블 재정의) GPIO, RCC 레지스터 구현 실행 확인 완료(중요) 하고 싶은 말 이번 프로젝트를 하면서, 제일 먼저 해결해야 하는 것은 작동의 성공 여부였습니다. 제가 원하는 결과대로 나오는 것이 아니었기에, 작동 여부에 대해 매우 걱정을 하였습니다. 다행히도 OpenOCD를 사용한 덕분에 제대로 작동한 것이 확인이 되면서, 매우 다행이라고 생각했습니다. 사실 그동안의 진전이 안 된 원인 중에 하나가 작동 여부였습니다. 다행히도 디버거를 통하여 작동이 확인됨을 알았으니, 점차 활발하게..

EMBEDDED 2021.08.14

[Fortran77]Fortran 기초(1)

시작하기에 앞서, 본 개발환경은 우분투 18.04 LTS x86_64임을 밝힙니다. 오늘부터 Fortran77을 시작해보겠습니다. 우선 fortran77은 1978년에 개정된 포트란 버전으로 아직까지도 속도 면에서는 빠르기에, 수치 계산 분야에서는 77을 아직도 사용을 하며, gcc에서도 아직 지원을 하고 있기에, 사용과 이용이 가능한 버전입니다. 그럼 왜 굳이 Fortran77을 강좌로 택하였는지, 간단하게 알려드리겠습니다. 왜 Fortran77을 선택하였을까? 일단 간단하게 말씀드리자면, 아직까지도 나오면서도, 전공에 따라, 실무에서 사용이 가능하며, 기초로 하기에는 적합할 것 같은 느낌때문입니다. 실제로도 위에서 언급하였듯이 Fortran77이 아직도 이용을 함에 따라, 국내 서적같은 경우에는 20..

Fortran/Fortran77 2021.08.12

[ADA]5. Ada 기초(4)

비록 오래전인지만... 저번에 우리는 Deractive Regions까지 진행을 해보았습니다. 오늘은 조건문 응용과 부프로그램에 대하여 간단하게 알아보겠습니다! 조건문 응용 Ada에는 조건문으로 할 수 있는 것이 있습니다. 마치 람다처럼 사용할 수 있습니다. 이것이 무슨 소리일까요? 만약 Ada에서 홀-짝을 구별하여 출력하는 프로그램을 구현을 할 경우, with Ada.Text_IO; use Ada.Text_IO; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; procedure evenodd is N : Integer; begin Put("Input> "); Get(N); for i in 1..N loop if i mod 2 = 0 then Put_Line(I..

Ada 2021.08.10