블로그 이미지
초보 용사 꼬마라크. 그림은 만렙 용사 아랑소드 -네이버웹툰 아스란영웅전 발췌
꼬마라크

Notice

Archive

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
  • total
  • today
  • yesterday

'Programmer/기초'에 해당되는 글 3건

  1. 2007.12.14 [링크]DLL
  2. 2007.12.14 little endian과 big endian
  3. 2007.12.14 infinite number의 정의
2007. 12. 14. 22:09 Programmer/기초

http://www.winapi.co.kr/ApiBoard/tbltip/How%20DLL%20Works.pdf

간단한 설명!

명쾌하다.

위의 링크의 내용을 간추리면.. 아래로...

-----------------------
dlltest.c

__declspec(dllexport) char *str = "THE TRUTH IS OUT THERE";

__declspec(dllexport) int add(int a, int b)
{
 return a + b;
}

// c에선 extern "C" 하면 왠지 안된다.. (원인은 해석하기 귀찮아서 pass, 할필요가 ㅇ벗는데 써서 에러내는건가?)
// cpp에서 만든걸 c에서 쓰게 하려면 extern "C"꼭 필요하다...

빌드하면 dlltest.dll이 되것지?


// implicit 한 방법. (explicit는 링크의 문서를 읽어보시라)
// main program에서는 dll과 함께 생성되는 lib파일과 헤더 선언이 필요하다.
test.h

extern "C" __declspec(dllimport) char *str;

extern "C" __declspec(dllimport) int add(int a, int b);

// C가 만든 외부 dll에 함수와 변수가 있도다.


test.cpp(c)

#include "test.h"    // 요렇게 extern 선언 필요
#pragma comment(lib, "dlltest.lib")


int main()
{
    printf("%s\n",str);
    printf("%d + %d = %d\n",1,2,add(1,2));
}

결과
THE TRUTH IS OUT THERE
1 + 2 = 3
press any key.


'Programmer > 기초' 카테고리의 다른 글

little endian과 big endian  (0) 2007.12.14
infinite number의 정의  (0) 2007.12.14
posted by 꼬마라크
2007. 12. 14. 21:53 Programmer/기초

2진데이터를 메모리에 저장하는 순서로 두가지를 들수있다.(더있으려나..)

little endian과 big endian.

전자는 인텔계열 CPU에서 사용하고, 후자는 모토로라계열에서 사용한다.

모두 다같이 같은 방식을 쓴다면 상관없겠으나...
각 회사의 주장은.. 암튼 자기네거가 좋다더라니까..-_-(분석한자료를 어디서 봤는데..)

간단히 설명을 하자면.. little endian은 LSByte부터 앞에 써주는것이고,
big endian은 MSByte부터 앞에 써주는것이다.(byte에 집중. bit아님)

shovel=50000    : 0xc3 50

요렇게 어사인을 하면..

&shovel
0x01     0x02       (메모리의 주소)
[-------- --------]
        short      
    50         c3
우리가 알고있는 숫자와 순서가 반대! ... 인텔의 little endian
   
    c3         50
요거는 그냥 순서, 모토로라 계열의 big endian

왜?

자 우선 데이터에 있어서 MSByte와 LSByte는
c3 50의 경우 가중치가 높은것이 MSB (c3) 낮은것은 LSB(50)

자리수가 높다고 생각하면 된다.

인텔에서는 50가 short형 기억공간(2바이트)중 제일 앞에 들어간다. 그다음 자리는 그다음주소..이런식으로..
(0x12 34 56 78 -> 78 56 34 12)

모토로라에서는 c3 이 앞에 50가 뒤에..(자리수 순서대로)
(0x12 34 56 78 -> 12 34 56 78)

이것이 바로 little endian과 big endian.


시스템 아키텍쳐의 차이.

'Programmer > 기초' 카테고리의 다른 글

[링크]DLL  (0) 2007.12.14
infinite number의 정의  (0) 2007.12.14
posted by 꼬마라크
2007. 12. 14. 21:31 Programmer/기초
∞ infinite란 무엇인가?




무한대라고도 부른다.

그럼 무한대가 뭐냐? 뭘 무한대라고 하냐?

억수 큰수? 과연?

10000000000000000000000000000000000를 무한대라 할수 있나?(1)

1000000000000000000000000000000000000000000000000000000000도 무한대라 할수 있나?(2)

그럼.. 둘다 무한대라볼수 있다면 기준점이 어디인가?

(2)의 입장에서 보면..(1)은 무한대인가?




무한대(∞)의 정의는
"임의의 수보다 큰수" 이다.

우리가 생각하는 범위(domain)를 벗어난 수를 무한대라 부른다.
바꿔말하면 그 세계에서 통용되는 수가 아닌수?-_-
임의의 수는 우리가 생각할수 있는 수이기 때문이다


예를들자면..
nano의 세계에서는 0.01도 무한대에 속한다.

'Programmer > 기초' 카테고리의 다른 글

[링크]DLL  (0) 2007.12.14
little endian과 big endian  (0) 2007.12.14
posted by 꼬마라크