32-bit 이상의 데이터를 다루게 될때 당신은 시스템에서 제공하는 long long keyword만 쓸 것인가?
만약 128-bit 연산을 해야한다면? 2048-bit 혹은 그 이상의 bit 를 가진 연산을 해야한다면?
CPU 는 어떻게 long word arithmetic 을 어떤식으로 하는지 알기위해 Assembly Language 를 배운다.
Assem 명령어로 짜야하는 과정을 일단 c-model 로 data를 검증하기 위해 구현했다.
근데 어찌된게 C로 짜는게 더 어려운거 같아 ㅠㅠ
가장 중요한 KEY-point 는
data type 이 가진 고유크기를 벗어나는 overflow 처리이다. 이것때문에 binary 연산을 -_- 몇번을 계속 해봤는지....아..머리 나쁘면 고생~
unsigned 로 작업을 했기 때문에, signed 에 적용이 되는지는 확인해보지 않았지만, 대수를 이용해서 검증해보면 알수 있겠지.
핵심은 이거다.
값을 넣어서 해보면 확인할 수 있다.
소스가 궁금한 사람은 개인적으로 연락을 바랍니다.
사정상 소스를 공개할 수 없습니다.
만약 128-bit 연산을 해야한다면? 2048-bit 혹은 그 이상의 bit 를 가진 연산을 해야한다면?
CPU 는 어떻게 long word arithmetic 을 어떤식으로 하는지 알기위해 Assembly Language 를 배운다.
Assem 명령어로 짜야하는 과정을 일단 c-model 로 data를 검증하기 위해 구현했다.
근데 어찌된게 C로 짜는게 더 어려운거 같아 ㅠㅠ
가장 중요한 KEY-point 는
data type 이 가진 고유크기를 벗어나는 overflow 처리이다. 이것때문에 binary 연산을 -_- 몇번을 계속 해봤는지....아..머리 나쁘면 고생~
unsigned 로 작업을 했기 때문에, signed 에 적용이 되는지는 확인해보지 않았지만, 대수를 이용해서 검증해보면 알수 있겠지.
핵심은 이거다.
overflow 가 발생한다면
a + b = ~ ( ~a + ~b + 1); 이렇게 하고 carry = 1 이 된다.
overflow 가 발생하지 않을때 위의 연산은 오히려 carry 가 발생해버려서 overflow 를 만든다.
a + b = ~ ( ~a + ~b + 1); 이렇게 하고 carry = 1 이 된다.
overflow 가 발생하지 않을때 위의 연산은 오히려 carry 가 발생해버려서 overflow 를 만든다.
값을 넣어서 해보면 확인할 수 있다.
소스가 궁금한 사람은 개인적으로 연락을 바랍니다.
사정상 소스를 공개할 수 없습니다.
'STUDY > 전공' 카테고리의 다른 글
| [H.264] H.264 개요 (0) | 2006/12/05 |
|---|---|
| [VLSI] CMOS transistor 를 이용한 Logic gates 설계 (0) | 2006/10/04 |
| very long word multiplication (0) | 2006/08/17 |
| LAB 실에서 처음으로 만들어본 세미나 자료 (3) | 2006/07/19 |
| [IT-SOC] ARM 개발환경 및 임베디드 프로그래밍 (1) | 2006/07/11 |
| 전공관련 용어 정리 (0) | 2006/07/07 |