IT

'분류 전체보기'에 해당되는 글 197건

  1. 2011.05.09 파일 입출력
  2. 2011.05.09 부동 소수점 - IEEE 754
  3. 2011.05.09 [난수 생성]
  4. 2011.05.04 [ARM] Boot Code
  5. 2011.05.04 [ARM] 링커 스크립트 분석

파일 입출력


키보드 입력 stdin

화면 출력 stdout


● EOF

end-of-file 의미, #define EOF (-1), <stdio.h>에 정의


예제 1

#include <stdio.h>


int main()

{

        char str[100];


        fscanf(stdin,"%s",str);

        

        fprintf(stdout,"\n\n%s\n",str);


        return 0;

}




'소프트웨어 > C언어' 카테고리의 다른 글

[1차원] 배열과 포인터  (0) 2011.06.15
재귀함수  (0) 2011.05.12
부동 소수점 - IEEE 754  (0) 2011.05.09
[난수 생성]  (0) 2011.05.09
문자 입출력  (0) 2011.05.03
Posted by sinpk

부동 소수점 - IEEE 754

신호

지수부

가수부

1비트

8비트

23비트

총 32비트


코프로세서(coprocessor)에서 실수 연산


부동소수점 변환 방법

        13.26

1. 정수부를 이진수로 변환

        13 = 1101

2. 소수부를 이진수로 변환

        0.26 = 01000010100011110101

3. 정규화

        ①1101.01000010100011110101

        ②1.10101000010100011110101

        ③.10101000010100011110101

        ④.10101000010100011110110 - 다시 반복 되므로 반올림

        ※ .xxxx~xxxx 만 사용

4. 지수부 연산

        (3.1 ~ 3.2) 계산 결과 : 지수 값 3

        127 + 3 = 130 = 1000 0010

5. 최종

        신호비트를 최상위 비트에 추가 (양수 0)

        0 1000 0010 10101000010100011110110

        = 41 54 28 F6



'소프트웨어 > C언어' 카테고리의 다른 글

재귀함수  (0) 2011.05.12
파일 입출력  (0) 2011.05.09
[난수 생성]  (0) 2011.05.09
문자 입출력  (0) 2011.05.03
변수와 메모리  (0) 2011.04.29
Posted by sinpk

#include <stdlib.h>    //srand, rand 함수 헤더파일

#include <time.h>    //time 함수 헤더파일

#define random(n) (rand()%(n))

 

//srand 시드(seed)값 무작위 설정

//tiem(NULL) 시간을 초단위로 반환하는 함수

srand((unsigned)time(NULL));

 

rand() : rand 함수라 하면 난수를 발생시키는 함수가 되겠습니다.

난수라는 것은 일정한 패턴을 가지지 않고 나오는 무작위의 숫자라고 보시면 되겠습니다

 

srand() : SEED값을 바꾼 rand함수

SEED값은  난수의 초기값이라고 보시면 됩니다. 그래서 이 초기값을 time헤더파일을 이용해서

시간(초)가 변할때마다 다른 초기값을 가지게 함으로서 완전 무작위의 숫자들을

만들어낼 수 있습니다.

   

즉, srand((unsigned)time(NULL));

이렇게 선언할 경우 unsigned로 하여 -의 부호를 갖는 값은 출력이 되지 않고

0 또는 양의 정수만 출력이 되고, srand를 사용하여 SEED값을 바꿔줌으로서

완전한 무작위 숫자들을 만들 수 있습니다.

 

'소프트웨어 > C언어' 카테고리의 다른 글

파일 입출력  (0) 2011.05.09
부동 소수점 - IEEE 754  (0) 2011.05.09
문자 입출력  (0) 2011.05.03
변수와 메모리  (0) 2011.04.29
자료형-2  (0) 2011.04.28
Posted by sinpk

[ARM] Boot Code

2011. 5. 4. 10:37 : 하드웨어/ARM
1. Reset (장치를 켜거나 리셋)
2. 0번지로 점프
3. reset handler
4. low level init 호출(하드웨어 초기화)
5. remap
6. 메모리 초기화
    6-1. Stack 영역 초기화
    6-2. Data 영역 초기화
    6-3. BSS 영역 초기화
//여기까지 boot code(or startup code)

7. main 호출

'하드웨어 > ARM' 카테고리의 다른 글

[ARM] 링커 스크립트 분석  (0) 2011.05.04
Posted by sinpk

링커 스크립트인 elf32-littlearm.lds 파일에 대한 분석이다.
링커 스크립트는 링커에게 코드배치를 이렇게 하라고 설명하는 파일이다.
 Executable and Linkage Format으로 실행 파일 표준 binary format 으로 프로그램 헤더, 코드영역 .text, 초기화된 데이터 영역 .data, 전역변수 및 정적변수 영역 .bss, 심볼테이블 .symtab 등의 영역으로 구성된다.

/* elf32-littlearm.lds 파일 */

//이 부분은 arm-linux-ld가 만들어 낼 최종 결과 파일의 포맷을 나타낸다.
//즉, little endian 포맷의 파일을 생성할 것인지,
//big endian 포맷의 파일을 생성할 것인지를 결정하는 역할을 한다.

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")

//이 부분은 최종 결과 파일이 동작할 CPU의 architecture를 나타낸다.
//즉, 이 파일은 ARM CPU 상에서 동작한다는 의미이다.

OUTPUT_ARCH(arm)

//최종 결과 파일의 시작 지점을 나타낸다.
//즉, 여기서 파일의 시작 지점은 reset_handler가 된다.
//reset_handler는 Cstartup.s 파일에 정의되어 있다.

ENTRY(reset_handler)

//SECTIONS{ ... }부분은 링커(arm-linux-ld)가 입력 파일들의 섹션들을
//결과 파일의 어떤 섹션들로 위치시킬지를 결정하는 역할을 한다.

SECTIONS
{
    .text : {          //프로그램의 코드영역
        _stext = .;      //코드영역의 시작주소를 makefile로 부터 가져온다.
        *(.text)        //모든 입력 파일들(*)의 .text 섹션을 결과 파일의 .text 섹션에 위치시킨다.
        *(.rodata)      //readonly 파일들을 .text 섹션에 위치시킨다.
        *(.rodata*)    //그외 모든 데이터들을 .text 섹션에 위치시킨다.
        . = ALIGN(4);  //현재의 위치에서 4 바이트 단위로 놓겠다는 의미이다.
                                 // 즉, 4바이트 단위로 메모리를 정렬한다.

         _etext = . ;    //코드영역의 끝을 현재 위치포인트로 하겠다는 의미이다.
    }

    //데이터 영역
     //코드영역 시작주소부터 코드영역의 크기만큼 더한다음 주소 즉, 코드영역 다음 주소
    .data : AT ( ADDR (.text) + SIZEOF (.text) ) { 
        _sdata = .;
        *(.vectors)    //모든 입력 파일의 벡터 테이블을 데이터 영역에 포함
        *(.data)       //모든 입력 파일의 초기화 된 데이터를 데이터 영역에 포함
        _edata = .;
    }

     //bss 영역
     //noload = 적재하지 않는다.
    .bss (NOLOAD) : {
        . = ALIGN(4);
        _sbss = .;
        *(.bss)         //모든 입력 파일의 bss영역을 출력파일의 bss영역에 포함한다.
        _ebss = .;
    }
}
end = .;

'하드웨어 > ARM' 카테고리의 다른 글

[ARM] Boot Code  (0) 2011.05.04
Posted by sinpk