IA32 Assembly Programming Assignment

Slides:



Advertisements
Similar presentations
컴퓨터프로그래밍 I 강원대학교 컴퓨터학부 2012 년 1 학기 담당교수 : 정충교 1. 강사진 강사 : 정충교 교수 연구실 : 공 호 조교 : 3 분반 이남세 연구실 : 공
Advertisements

Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Term Project iTUTOR를 이용한 PIC 동작 검증 보고서와 모든 소스코드 압축하여 제출
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
1. 컴파일러 개론 1-1. Compiler 정의 1-2. Language Processing System
Introduction To Computers
Cross Compiler를이용한 커널 컴파일 및 포팅
Cross Compiler를이용한 커널 컴파일 및 포팅 1
컴퓨터 프로그래밍 기초 [Final] 기말고사
조 병 규 Software Quality Lab. 한국교통대학교
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
Root Filesystem Porting
Computer Architecture
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Root Filesystem Porting
1장. 프로그래밍 언어, C 프로그래밍.
Cross Compiler 설치.
Computer Architecture HW #3
전자의료시스템 및 실습 C-언어 구 환 경희대학교 전자정보대학 동서의료공학과.
임베디드 소프트웨어 설계.
1주차: 프로그래밍언어란 무엇인가? C 언어란? C 프로그래밍을 위한 준비
Microprocessor I/O Port & CLCD Noh Jin-Seok.
Cross Compiler를이용한 커널 컴파일 및 포팅
프로그래밍 개요
시스템 인터페이스 Lab3 Unix 사용법 실습.
Linux/UNIX Programming
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Seoul National University
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
컴퓨터 개론 및 실습 2차 프로젝트 Byoungjun Kim
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
Linux/UNIX Programming
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
Linux/UNIX Programming
Linux/UNIX Programming
Canary value 스택 가드(Stack Guard).
( Windows Service Application Debugging )
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
알고리즘 알고리즘이란 무엇인가?.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
C언어 개론.
제 6 강 Getting started.
DK-128 개발환경 설정 아이티즌 기술연구소
DK-128 직렬통신 실습 아이티즌 기술연구소
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
[INA240] Data Structures and Practice
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
[INA240] Web Programming Homework #2 [INA240] Web Programming
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
Homework #3 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
TVM ver 최종보고서
Python.
발표자 : 이지연 Programming Systems Lab.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
maria db JDBC PROGRAMMING 5
Introduction to Computer System Spring, 2019
C.
Docker Study 6~7.
Lecture 7 7-Segment LED controller using u-controller
Linux/UNIX Programming
Prof. Kyungshik Lim Kyungpook National University
1. 실습 시간에 수행한 avd 생성 및 실행, adb shell 접속 및 명령어 수행 결과를 제출한다.
Presentation transcript:

IA32 Assembly Programming Assignment Seoul National University IA32 Assembly Programming Assignment AnSu Na (asna@archi.snu.ac.kr) Memory & Storage Architecture Lab. School of Computer Science and Engineering Seoul National University 안녕하세요. 저는 메모리 스토리지 구조 연구실의 석사과정 연구생인 나안수라고 합니다. 오늘은 여러분이 앞으로 시작하게 될 IA32 Assembly Programming 과제에 대해 설명하도록 하겠습니다.

목차 Introduction Assignment program Grading criteria Example codes Seoul National University 목차 Introduction Assignment program Grading criteria Example codes Development environment & tolls Submission

Executable program (p) Seoul National University Assembly Language text C program (p1.c p2.c) Compiler (gcc -S) text Asm program (p1.s p2.s) Assembly language Assembler (gcc or as) binary Object program (p1.o p2.o) Static libraries (.a) 수업시간에 이미 배웠듯이 Linker (gcc or ld) binary Executable program (p)

IA32 Assembly Language Intel Architecture 32bit CISC Seoul National University IA32 Assembly Language Intel Architecture 32bit CISC From intel 80386 microprocessor

Assignment 과제 목적 과제 내용 Assembly Programing을 경험 Seoul National University Assignment 과제 목적 Assembly Programing을 경험 과제 내용 n-queen problem을 해결하는 프로그램 구현 IA32 assembly language 사용 File I/O 구현 System call

N-Queen Problem n행 n열의 체스 보드에 n개의 퀸을 다음과 같은 규칙을 따라 배치하는 문제 Seoul National University N-Queen Problem n행 n열의 체스 보드에 n개의 퀸을 다음과 같은 규칙을 따라 배치하는 문제 1) 어떠한 서로 다른 두 퀸도 같은 나라에 속하지 않음 2) 어떠한 서로 다른 두 퀸도 서로 공격할 수 없어야 함

N-Queen Problem n행 n열의 체스 보드에 n개의 퀸을 다음과 같은 규칙을 따라 배치하는 문제 Seoul National University N-Queen Problem n행 n열의 체스 보드에 n개의 퀸을 다음과 같은 규칙을 따라 배치하는 문제 1) 어떠한 서로 다른 두 퀸도 같은 나라에 속하지 않음 2) 어떠한 서로 다른 두 퀸도 서로 공격할 수 없어야 함

DFS Depth-first search Seoul National University DFS Depth-first search Algorithm for traversing or searching tree or graph

Seoul National University Assignment Program 주어진 n에 대한 n-queen problem의 모든 해를 찾고 퀸의 배치와 해의 개수를 출력 입출력 ㅡ File I/O 로 구현 입력 : input.txt 출력 : output.txt Input.txt와 output.txt는 모두 프로그램과 같은 디렉토리에 존재

Input Format input.txt 2 # n의 값이 2개 주어짐 2 # n = 2 8 # n = 8 Seoul National University Input Format 2 # n의 값이 2개 주어짐 2 # n = 2 8 # n = 8 input.txt 첫 번째 줄 : n의 개수 나머지 줄 : n의 값 Line-by-line input.txt의 예 k # n의 값이 k개 주어짐 n1 # n = n1 n2 # n = n2 … nk-1 # n = nk-1 nk # n = nk input.txt의 일반적 표현

Output Format output.txt 첫 번째 줄 : n의 개수 나머지 줄 : n-queen problem의 해 Seoul National University Output Format number_of_n = 2 ======================= n = 2 number_of_solutions = 0 n = 8 ---q---- ------q- -------q -q------ ----q--- q------- -----q-- # 빈 줄로 구분 . . . . . . #총 92개 표시 number_of_solutions = 92 number_of_n = 2 ======================= n = 2 number_of_solutions = 0 n = 8 ---q---- ------q- -------q -q------ ----q--- q------- -----q-- # 빈 줄로 구분 . . . . . . #총 92개 표시 number_of_solutions = 92 output.txt 첫 번째 줄 : n의 개수 나머지 줄 : n-queen problem의 해 주어진 모든 n에 대해 다음 값을 반복 출력 1) n의 값 2) 가능한 모든 퀸의 배치 빈칸 : ‘-’ 퀸 : ‘q’ 각 배치는 빈 줄로 구분 3) 해의 개수 ouput.txt의 예

Grading Criteria main Result Input Output Format File I/O Report Seoul National University Grading Criteria 항목 점수 기준 main 10점 main함수를 구현 Result 40점 주어진 n에 대해 바른 해를 출력 Input Output Format 입출력 형식을 따라 주어진 모든 n에 대해 해를 구함 File I/O 20점 input.txt에 저장된 값을 읽어 output.txt에 처리된 값을 출력 Report 알고리즘 및 설계과정 (5점) 구현 및 시현 (7점) File I/O (3점) 어려웠던 점 / 해결 방법 / 느낀 점 (5점) 100점 만점 각 항목의 점수는 독립적으로 주어짐 보고서를 제외한 항목은 컴파일 및 실행이 되지 않을 시 0점

Putty Telnet program Host : martini.snu.ac.kr Port : 22 Seoul National University Putty Telnet program Host : martini.snu.ac.kr Port : 22 Connection Type : SSH Download http://www.chiark.greenend.org.uk/~sgtath am/putty/download.html

Putty - Login ID & pass word 타과 학생들은 홈페이지에 올린 ID와 암호 확인 Seoul National University Putty - Login ID & pass word 타과 학생들은 홈페이지에 올린 ID와 암호 확인

vi/vim – Text Editor #1 Visual display editor 2가지 모드 입력 모드 명령 모드 Seoul National University vi/vim – Text Editor #1 Visual display editor 2가지 모드 입력 모드 명령 모드 시작할 때 기본 모드 모드 전환 (Common case) 명령모드 : ‘i’ 혹은 ‘insert’키로 입력모드 전환 입력모드 : ‘ESC’키로 명령모드 전환

vi/vim – Text Editor #2 기본적인 명령 Reference 저장 명령모드에서 ‘:w’ 입력 나가기 Seoul National University vi/vim – Text Editor #2 기본적인 명령 저장 명령모드에서 ‘:w’ 입력 나가기 명령모드에서 ‘:q’ 입력 저장하고 나가기 명령모드에서 ‘:wq’입력 저장하지 않고 나가기 명령모드에서 ‘!q’입력 Reference http://wiki.kldp.org/KoreanDoc/html/Vim_Guide-KLDP/Vim_Guide- KLDP.html

Compile, Assemble, and Link Seoul National University Compile, Assemble, and Link Compile Assembly 파일 형성 ex ) $ gcc –S filename.c => filename.s Assemble & Link Executable 파일 형성 ex1 ) $ gcc filename.s => a.out ex2 ) $ gcc –o newname filename.s => newname

System call - printf 줄 바꿈 없는 stdout 출력 Seoul National University System call - printf 줄 바꿈 없는 stdout 출력 Stack을 통해 String이 있는 주소를 넘겨 받아 해당 String을 출력한 후 리턴

System call - puts 줄 바꿈 있는 stdout 출력 Seoul National University System call - puts 줄 바꿈 있는 stdout 출력 Stack을 통해 String이 있는 주소를 넘겨 받아 해당 String을 출력한 후 줄 바꿈을 출력하고 리턴

System call - getf stdin 입력 %ebx에 저장되어 있는 pstr의 시작 주소를 스택을 통해 넘겨 받음 Seoul National University System call - getf stdin 입력 %ebx에 저장되어 있는 pstr의 시작 주소를 스택을 통해 넘겨 받음 리턴 값 해당 시작 주소를 반환 정상 동작 Null (0x0) 입력 끝이거나 오류 발생 $ gcc –O1 –S getf.c

Debugging Tool gdb 실행 gdb gdb [프로그램명] 주의 : -g 옵션 사용하여 컴파일 해야 디버깅 가능 Seoul National University Debugging Tool gdb gdb 실행 gdb [프로그램명] 주의 : -g 옵션 사용하여 컴파일 해야 디버깅 가능 ex) $ gcc –g –o main main.c $ gdb main

Debugging 기본적인 명령어 디버깅할 프로그램 실행 (gdb) run gdb 종료 (gdb) q 정보보기 Seoul National University Debugging 기본적인 명령어 디버깅할 프로그램 실행 (gdb) run gdb 종료 (gdb) q 정보보기 (gdb) info 레지스터 값 모두 보기 (gdb) info registers 브레이크 포인트 잡기 (gdb) break [line number] 레지스터 하나만 보기 (gdb) info register [register name]eax ex ) (gdb) info register eax

제출방식 Due Date 메일로 보고서와 소스코드 제출 메일주소 : asna@archi.snu.ac.kr Seoul National University 제출방식 Due Date 2013년 10월 27일(일요일) 11:59 PM 까지 1일 delay 당 5점씩 감점 제출 기한 일주일 후 까지 제출 가능 (11월 3일 11:59 PM까지 가능) 메일로 보고서와 소스코드 제출 메일제목 : [컴구조과제]학번_이름 첨부파일 : 학번_이름.zip으로 함께 압축하여 제출 ex) 제 목 : [컴구과제]2013-00000_나안수 첨부파일 : 2013-00000_나안수.zip 메일주소 : asna@archi.snu.ac.kr