powerpc 레지스터 용도에 대한 결과

김종화 2007.05.19 04:07 조회 수 : 7581 추천:122

공부하면서 어떤 레지스터가 어떻게 사용되는지 많이 궁금했었죠

아래 리플로 쓰기는 했는데 계속 찾아볼 수 록 여러 정보가 나오게 되서 함 정리를 해봅니다.

제가 알기론 PowerPC GPRs들을 이용하여 다양하게 사용될 수 있다는 겁니다.

그러나 기준이 없으면 여러 컴파일러들이 중구난방으로 만들어 질꺼 같죠? 역시 찾아보니 자료가 나오더군요.

PowerPC는 32bit와 64bit로 나뉘는데요 linux PowerPC 32bit는 SVR4 (System V R4) ABI를 사용하지만 64bit는  AIX를 따르며 PowerOpen ABI를 이용한다고 합니다.

그러나 어떤 사이트에 게시판 글들을 보면 "Embedded PowerPC용 컴파일러라면, 반드시 PowerPC EABI의 규칙을 따라야 합니다."라는 말이 있더군요. 덧붙이자면 PowerPC EABI가 대세입니다라고 합니다.

그래서 IBM  사이트에서 찾아보면 PPC-elf64abi.txt파일이 있습니다. 웃긴건 엄청난 글과 그림을 txt파일로 표현했다는 것.... 왜 이런 삽질을 했는가 아벰은...

발췌를 해보면

3.2.1.  Registers

The 64-bit PowerPC Architecture provides 32 general purpose registers,
each 64 bits wide.  In addition, the architecture provides 32
floating-point registers, each 64 bits wide, and several special
purpose registers.  All of the integer, special purpose, and
floating-point registers are global to all functions in a running
program.  The following table shows how the registers are used.

r0        Volatile register used in function prologs
r1        Stack frame pointer
r2        TOC pointer
r3        Volatile parameter and return value register
r4-r10    Volatile registers used for function parameters
r11       Volatile register used in calls by pointer and as an
          environment pointer for languages which require one
r12       Volatile register used for exception handling and glink code
r13       Reserved for use as system thread ID
r14-r31   Nonvolatile registers used for local variables

f0        Volatile scratch register
f1-f4     Volatile floating point parameter and return value registers
f5-f13    Volatile floating point parameter registers
f14-f31   Nonvolatile registers

LR        Link register (volatile)
CTR       Loop counter register (volatile)
XER       Fixed point exception register (volatile)
FPSCR     Floating point status and control register (volatile)

CR0-CR1   Volatile condition code register fields
CR2-CR4   Nonvolatile condition code register fields
CR5-CR7   Volatile condition code register fields

On processors with the VMX feature.

v0-v1     Volatile scratch registers
v2-v13    Volatile vector parameters registers
v14-v19   Volatile scratch registers
v20-v31   Non-volatile registers
vrsave    Non-volatile 32-bit register
라고 돼어 있네요.

과연 linux는 이 포맷을 따랐나요? 라는 질문엔 답변을 해드릴수 없습니다. 확인해보지 않어서 ㅡㅜ


번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2194
1565 안녕하세요, 반장입니다.^^ [12] file 조은지 2010.04.05 7620
» powerpc 레지스터 용도에 대한 결과 [1] 김종화 2007.05.19 7581
1563 세그멘테이션에 관하여. [12] 홍문화 2011.07.22 7531
1562 메모리 모델에서 페이지 디렉토리와 페이지 테이블 [3] 무명 2011.05.01 7432
1561 [ARM중] . (점)과 : (라벨)을 이용한 주소 변환 [7] file 홍문화 2011.10.05 7426
1560 리눅스 커널소스 분석 사이트 [2] 이 종인 2012.05.08 7394
1559 ARM system developer's guide 요약본 [1] file 이수연 2007.11.11 7372
1558 이번주(10/23) 스터디장소 변경합니다. [3] 서기원 2010.10.23 7363
1557 [잡담] 한주의 시작입니다.. ^^ [4] 홍순민 2010.04.05 7339
1556 asmlinkage의 의미 [4] 홍문화 2011.04.12 7323
1555 설치 & 컴파일 방법 [5] 최문규 2010.06.20 7310
1554 첫째날에 공부한 내용 정리한번 해보는게 어떨까요?? 여러분의 의견을 묻습니다. [8] file 김정수 2007.02.26 7255
1553 안녕하세요~ [4] 조선근 2010.11.11 7248
1552 mini USB 케이블을 수배합니다. [1] 권기봉 2010.04.03 7238
1551 아키텍쳐에 관련된 내용입니다. [6] file 원민수 2007.02.25 7234
1550 uboot 관련소스 및 s3c2440 data sheet file 이수연 2007.11.19 7228
1549 엇 너무 조용하네. [2] 서정민 2010.04.05 7223
1548 [제안] 커널 스터디 병행 관련 제안해 봅니다. [12] 장병남 2010.04.12 7216
1547 asmlinkage void __init start_kernel(void) [7] 김태훈80 2008.02.02 7205
1546 setup.S 전반부 정리 자료 [1] file 이종우 2007.05.19 7190
XE Login