반응형 프로그래밍207 [어셈블리어] 2. x86_64 scanf 소스코드 작성Hello world를 출력하는 어셈블리어 코드 작성section .data text1 db "What is your name?", 10 ; "Hellow World"문자열을 저장하고 뒤의 숫자 10은 개행문자의 ASCII code이다. text2 db "Hello "section .bss name resb 16section .text global _start_start: call _printText1 call _getName call _printText2 call _printName mov rax, 60 mov rdi, 0 syscall_getName: mov rax, 0 ; rax 0번은 표준 입력이다. mov.. 프로그래밍/Assembler 2024. 6. 9. [어셈블리어] 1. x86_64 Hello world 사용환경OS: Ubuntu 20.04어셈블리어 설치먼저 Assembler를 설치한다.NASM(Netwide Asembler)는 x86-64 아키텍처용으로 설계된 에섬블리어로 오픈소스이다. sudo apt-get install nasm 소스코드 작성Hello world를 출력하는 어셈블리어 코드 작성section .data ; 데이터 섹션 정의. text db "Hello World", 10 ; "Hellow World"문자열을 저장하고 뒤의 숫자 10은 개행문자의 ASCII code이다.section .text ; 코드섹션 정의. global _start ; _start 레이블을 전역으로 선언한다. 이는 프로그램의 진입점(main 함수와 같은 역할)이다._start: mov .. 프로그래밍/Assembler 2024. 6. 9. [Jenkins] 주기적으로 빌드 실행하는 방법 Jenkins를 사용하다 보면 훅을 걸어 build를 사용하곤 하는데,하루에 한 번, 또는 일주일에 한 번씩 주기적으로 빌드를 실행하는 방법도 있다. 1. 빌드할 작업 선택Jenkins의 대시보드로 이동한다.2. 설정페이지 이동 3. [Build Triggers] - [Build periodically] 선택Build periodically를 선택하면 Schedule 옆 물음표 아이콘을 클릭하여 도움말을 확인할 수 있다.차례대로 분, 시, 일, 월, 요일을 적어주면 되는데 예를 들어 매일 오전 5시에 빌드를 실행하고 싶다면 "0 5 * * *"을 입력하면 된다. 4. Save요즈음 UX가 자동 Save가 대세인 거 같은데... 많은 서비스 중은 아직 Save Button을 클릭해야 한다.Jenkin.. 프로그래밍/Jenkins 2024. 5. 8. [컴파일러] 3-1. 구문분석기 구조 구문분석이란 어휘분석기 단계에서의 output인 Token을 가지고 문법 구조를 해석하여 키워드, 식별자, 연산자 등이 유효한 구조를 형성하였는가를 확인하고, 올바르다면 구문 분석 트리를 출력하고, 올바르지 않다면 Error를 출력한다 파서 동작방식 하향식 파싱(Top Down parsing) 최상위 노드(Root 또는 Start Symbol)에서 말단 노드(Leaves 또는 단위 String)까지 파싱하는 방법 RD Parser(recursive descent parser), predictive parser 등이 있다. 상향식 파싱(Bottom Up parsing) 말단 노드(Leaves)를 결합하여 최상위 노드(Root) 까지 파싱 precedence parser, shift-reduce parser.. 프로그래밍/Compiler 2024. 4. 6. [Javascript] 2. Toast UI Grid 셀 합치기(+ header 합치기) 이전 글에서 Toast UI Grid의 기초를 확인하였다. 이번 글에도 Data를 임의로 만들기 귀찮으니 무료로 공유되는 api를 사용할 것이다. api 사용법을 모르면 이전글을 확인하자. 2024.03.14 - [프로그래밍/Javascript] - [javascript] 1. Toast UI Grid 기초(+API 사용법) [javascript] 1. Toast UI Grid 기초(+API 사용법) Toast UI를 많이 사용하는데, 기본적인 구현 방법에 대해 설명한다. 해당 포스트는 Grid 방식을 설명한다. 1. 가장 기본이 되는 사용법 먼저 Toast UI Grid를 띄워보자. data는 임의의 배열을 지정하여 Toas park-duck.tistory.com header 합치기 먼저 Header .. 프로그래밍/Javascript 2024. 3. 19. [javascript] 1. Toast UI Grid 기초(+API 사용법) Toast UI를 많이 사용하는데, 기본적인 구현 방법에 대해 설명한다. 해당 포스트는 Grid 방식을 설명한다. 1. 가장 기본이 되는 사용법 먼저 Toast UI Grid를 띄워보자. data는 임의의 배열을 지정하여 Toast UI Grid를 띄워본다. 먼저 include 해야 할 것은 Toast UI Grid의 javascript와 css이다. 이후 임의의 Data Array를 초기화하여 Grid Table을 구현해 본다. See the Pen Untitled by Sangyoung Park (@Sangyoung-Park) on CodePen. 2. API를 사용하는 방법 먼저 API는 무료로 공유하는 https://koreanjson.com/users를 사용한다. 그중 몇 개의 데이터만 뽑아서 .. 프로그래밍/Javascript 2024. 3. 14. [컴파일러] 2.5. Flex 사용하기 이전 단계에서 어휘 분석(토큰, 오토마타, 어휘분석 이론)에 대해 얘기를 하였는데 어휘분석기를 생성하는 스캐닝 도구(openSource) Flex를 사용해보자. Flex는 특정 패턴을 정의하면, 각 패턴에 해당하는 토큰을 생성해준다. 이후 Flex를 통한 결과물로 구문 분석, 언어 처리를 할 수 있다. Flex 구문 %option // flex문법의 옵션을 설정하는 부분 %{ /* Flex에 필요한 라이브러리, C코드 등을 정의 */ %} /* (정규식)규칙 정의 */ %% /* 매칭된 패턴이 있을 경우 C코드를 정의 */ %% Flex의 특수 변수& 함수 yytext - 매칭된 패턴의 문자열 yyleng - yytext의 길이 yylval - 토큰의 값을 반환 yylex() - 매칭된 패턴의 토큰을 반.. 프로그래밍/Compiler 2024. 3. 1. [컴파일러] 2.4. 유한 오토마타 유한 오토마타란 어휘분석기로 바꾸는 방법을 고찰한 형식론으로 단순히 각 입력에 대해 "yes" or "no"로 대답한다. 유한 오토마타는 다음 다섯 가지의 요소로 구성된다. 1. 상태(State) 오토마타가 가질 수 있는 상태 집합 2. 입력 알파벳(Input Alphabet) 입력 문자의 집합으로 빈 스트링은 제외한다. 3. 전이함수(Transition Function) 상태 및 입력에 대한 다음 상태를 결정 4. 초기 상태(Initial State) 또는 시작 상태(Start State) 오토마타가 시작하는 상태로 하나여야 한다. 5. 수락 상태(Accepting State) 또는 종료 상태(Final State) 입력 문자열을 수락하는 상태의 집합 또한 전이도와 매우 유사한데, 유한 오토마타는 추상.. 프로그래밍/Compiler 2024. 2. 26. [컴파일러] 2.3. 토큰의 인식 앞서 정규식을사용하여 패턴을 표현하는 방법을 배웠는데, 이번에는 입력 스트링에 대한 접두사를 찾는 코드를 확인한다. 먼저 토큰을 위한 패턴은 아래와 같다. digit [0-9] digits digit+ number digits (. digits)? 9E[+-]? digits)? letter [A-Za-z] id letter (letter | digit)* if if else else relop | = | = | 이중 number와 relop를 예제로 토큰 인식하는 방법을 확인한다. 어휘 분석기 구성의 중간단계로 먼저 패턴을 "전이도" (Transition Diagram) 라 불리는 정형화된 순서로 변환해본다. 전이도란 언어의 문법을 나타내는 데 사용되는 그래프 또는 다이어그램을 의미하는데 그래.. 프로그래밍/Compiler 2024. 2. 24. [컴파일러] 2.2. 토큰의 명세 정규식이란 문자의 패턴을 명시하기 위한 형식언어이다. 어휘분석기 생성기에서 사용되며 이후 정규식을 특정 토큰의 인식을 수행하는 오토마타로 변환함으로써 어휘분석기를 구성하는 방법을 진행할텐데, 정규식 개념이 필요하다. 스트링에 관한 용어 용어 설명 예제 접두사(prefix) 스트링의 끝으로부터 0개 이상의 기호를 제거하여 얻어지는 스트링이다 "ban", "banana", ""는 banana의 접두사이다 접미사(suffix) 스트링의 앞에서부터 0개 이상의 기호를 제거하여 얻어지는 스트링이다 "nana", "banana", ""는 banana의 접미사이다 부분스트링(substring) 스트링의 접두사나 접미사를 제거하여 얻어지는 스트링이다 "nan", banana", ""는 banana의 부분스트링이다 진(.. 프로그래밍/Compiler 2024. 2. 20. [컴파일러] 2-1. 어휘 분석 역할 2-1. 어휘 분석 역할 어휘분석을 논의할 때 토큰, 패턴, 어휘항목 3가지 용어를 중점으로 사용한다. 토큰 토큰 이름과 선택적인 속성값으로 구성되는 쌍이다. 토큰 이름은 어휘 단위(키워드 또는 식별자)를 나타내는 추상기호 ex) 토큰 어휘 단위 예제 if if id pi, score(variable name) number 0, 1, 3.14 comparision ==, !=, 프로그래밍/Compiler 2024. 2. 17. [컴파일러] 1-2. 컴퓨터의 구조 1-2. 컴파일러의 구조 컴파일러를 원시프로그램에서 목표프로그램으로 변환한다고 하였는데, 좀 더 자세히 설명하면 컴파일러는 분석과 통합을 한다는 것이다. 분석(전단부): 원시 프로그램을 구성요소들로 분리하여 그 정보를 심볼 테이블이라는 데이터 구조에 저장하고, 문법적인 구조를 부과한다. 이후 이 구조를 이용하여 원시 프로그램의 중간표현을 생성한다. 이 부분에서 원시프로그램이 구문적으로 잘못 작성 되었거나 의미적으로 불합리하다는 것을 탐지하면 유익한 메시지를 제공하여야 한다. 예를 들어 단어 단위로 끊어서 void는 타입, '='문자는 Assign, ';' 문자는 문장의 끝 등을 알리는 정보이고, 이 정보를 심볼테이블에 저장한다. 또한 타입 뒤에는 이름이 명시되어야 한다는 (int sum) 구조를 부과해야.. 프로그래밍/Compiler 2024. 2. 10. 이전 1 2 3 4 5 ··· 18 다음 반응형