POCU 아카데미용 6502 어셈블리 코딩 표준
머리말
기본 원칙
- 가독성을 최우선으로 삼는다. (대부분의 경우 코드 그 자체가 문서의 역할을 해야 함)
- 본 코딩표준을 따라 잘 작성된 기존의 코드에서 배운다.
참조문서
이 코딩 표준은 아래의 코딩 표준들에서 영감을 얻었음.
I. 메인 코딩 표준
- 옵코드 니모닉은 모두 소문자로 표기한다.
lda #$42
-
16진수에 사용하는 문자(A-F)는 대문자로 표기한다.
ldy $80FE
-
심볼명은 8글자 이하로 정한다.
-
라벨명은 모두 소문자로 표기한다.
exit:
-
전역 라벨 대신 지역 레벨을 사용하여 이름 충돌을 피한다.
-
상수명은 모두 대문자로 표기한다.
PASSGRD=85
-
변수명은 모두 소문자로 표기한다.
width=$4002
-
어셈블리 지시문은 모두 대문자로 표기하며 그 앞에 점(.)을 붙인다.
.BYTE $FF
-
사용자가 만든 매크로는 모두 소문자로 표기한다.
.MACRO remaindr ; code here .ENDM remaindr 5000, 400
-
상수, 라벨, 매크로 이름은 구체적으로 지으려 노력한다. 예:
i
나doit
보다stu_idx
나pushaddr
가 더 좋은 이름 -
주석은 세미콜론을 사용한 한 줄짜리 주석만 허용한다.
; do nothing and return jmp exit
-
코드와 같은 줄, 즉 코드 오른쪽에 주석을 달아도 된다.
jmp exit ; do nothing and return
- 코드를 다음과 같은 순서를 따라 여러 섹션으로 정리한다.
- 상수
- 변수
- 매크로
- 명령어
-
데이터와 코드를 별도의 섹션(즉, 다른 주소 범위)으로 분리한다.
틀린 방식:
jmp start data: .BYTE $02, $05, $C3 start: ldx #$FF ...
올바른 방식:
ldx #$FF ... .ORG $C000,0 data: .BYTE $02, $05, $C3
-
상수를 사용할 때는 매직 넘버를 사용하는 대신 언제나 이름 달린 상수를 정의해 사용한다.
틀린 방식:
lda #85
올바른 방식:
PASSGRD = 85 ... lda #PASSGRD
-
마찬가지로 점프를 할 때도 직접 메모리 주소를 적지 않는다.
-
모든 어셈블러 경고를 고친다.
- 모든 함수/매크로 위에 다음의 정보를 포함한 주석을 단다.
- 그 함수/매크로가 하는 일에 대한 요약
- 인자 목록
- 그 함수/매크로의 반환값(들)
- 함수/매크로가 변경하는 것들
예:
add: ;(p10,p11) -> A | <SR> ;================================== ; summary: adds two numbers ; ; arguments: <p10> The first number ; <p11> The second number ; ; returns: A p10 + p11 ; ; modifies: SR ;================================== clc lda p10 adc p11 rts ;==================================
II. 소스 코드 포맷팅
-
들여 쓰기는 스페이스 4칸으로 한다.
-
명령어의 니모닉은 딱 한 번만 들여 쓴다.
nop
-
명령어의 피연산자는 니모닉으로부터 한 칸만 띄어 쓴다.
lda $8000
-
명령어 피연산자의 주소지정 모드 정보는 띄어 쓰지 않는다.
lda $8000,x
-
라벨은 들여 쓰지 않는다.
incre: inx iny
-
라벨은 한 줄을 오롯이 차지한다. 같은 줄에 주석을 적는 것은 허용한다.
틀린 방식:
add: adc #$8080
올바른 방식:
add: ; optional comment adc #$8080
-
지시문이나 매크로 안에 들어있는 지시문이나 매크로는 한 번 더 들여 쓴다.
.MACRO HAS_FLAG .IF flag > 0 start: ; code here .ENDIF .ENDM
-
지시문이나 매크로의 매개변수는 쉼표(,)와 스페이스 한 칸으로 구분한다.
.ECHO "Hello", "World!", "from", NAME
프로그래밍 공부순서 | 코딩공부, 지금 시작하세요 | 평생소장 컴공강의
10년 뒤에도 살아남는 프로그래머가 되려면 기본기부터 제대로 배워야 합니다. POCU 아카데미에서 시작하세요!