CS/어셈블리

[SPARC] 9. Assembly Language Programming

2023. 9. 30. 00:54
목차
  1. 어셈블리 언어 기본 문법
  2. Pseudo-operation
  3. Machine Instruction
  4. Synthetic Instruction
반응형

지난 포스팅에서는 SPARC 에서 사용하는 레지스터의 종류 4가지와,

레지스터 윈도우에 대하여 정리하였다.

 

이번에는 어셈블리 언어 프로그래밍의 기본 문법과

어셈블리 언어 명령어의 분류를 정리한다.


어셈블리 언어 기본 문법

- 각 줄의 코드는 명령어 또는 데이터 정의이다.

 

- 매 줄 끝마다 세미콜론은 사용하지 않는다.

 

- 콜론(:) 으로 끝나는 문자열을 '레이블' 이라고 한다.

이는 프로그램의 지표가 된다.

 

- /* */ 를 를 이용해 다중 라인 주석을 적거나

! 을 이용해 한 줄 주석을 적을 수 있다.

 

- 어셈블리 언어의 명령어는 크게 3가지로 나뉜다.

1. Pseudo-operation (의사 명령어)

2. Synthetic instruction (합성 명령어)

3. Machine instruction (기계 명령어)

 

아래는 SPARC 의 실제 코드이다.

1부터 10까지 합을 구하는 프로그램이다.


Pseudo-operation

의사 명령어 (수도 명령어) 는 말 그대로 '수도 코드' 같은 진짜 실행될 수 있는 명령어가 아니라

어셈블러에 전달되어 추가적인 정보를 제공하는 코드를 의미한다.

따라서 Pseudo-operation 은 기계어로 번역되지 않는다.

 

주로 . (온점) 으로 시작된다.

이런 코드가 예시가 된다.

 

.word 라는 코드도 있는데, word 가 4bytes 를 의미하므로,

Int 사이즈의 메모리 공간을 할당하는 명령어가 된다.

.word 7 이라고 하면 연속된 7개의 word 사이즈 메모리 공간을 확보하는 것이 되겠다.

 

또한 의사 명령어에는 상수를 선언하는 기능도 있다.

 

이런 코드도 의사코드이다.

앞으로 L 이라는 값이 보이면 어셈블시 10으로 바꿔서 어셈블한다는 의미이다.

 

상수 선언은 . (온점) 으로 시작하지 않으며,

상수 값의 정의는 기존 상수값과, 다른 상수값과의 연산으로도 정의할 수 있다.

단, 상수값이 아닌 값과의 연산으로는 정의할 수 없다.

 

VAL = 123 - %l0 과 같은 식은 안된다.

123은 상수이지만, %l0 과 같은 레지스터 주소값은 상수가 아니기 때문이다.

Machine Instruction

기계 명령어는 말 그대로 기계어로 1대1 번역이 가능한 명령어이다.

이 명령어들은 SPARC CPU 에서 직접 지원하는 명령어들이다.

Synthetic Instruction

합성 명령어는 SPARC CPU 에서 직접 지원하지는 않지만,

직접 지원하는 명령어들로 구성된 코드를 읽기 좋게 치환한 명령어로 보면 된다.

따라서 합성 명령어는 어셈블리에 의해 기계어로 변환될 수 있다.

 

clr, cmp 라는 명령어는 실제 기계어로 번역이 될 수 없는 명령어지만,

기계어로 번역될 수 있는 or, subcc 같은 명령어들로 변환되어 기계어로 바뀐다.


지금까지 SPARC 언어의 기본 문법과 명령어의 3가지 종류에 대해 정리하였다.

다음에는 SPARC 의 메모리와 gcc를 이용한 실습에 대해 정리해보겠다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'CS > 어셈블리' 카테고리의 다른 글

[SPARC] 11. 산술 연산과 Condition Code  (0) 2023.10.05
[SPARC] 10. SPARC에서 사용하는 메모리 종류  (0) 2023.10.04
[SPARC] 8. SPARC Regsiter Window & Assembly Instruction Format  (0) 2023.09.27
[SPARC] 7. SPARC Architecture & Registers  (0) 2023.09.22
[SPARC] 6. Pipelining Hazard  (2) 2023.09.21
  1. 어셈블리 언어 기본 문법
  2. Pseudo-operation
  3. Machine Instruction
  4. Synthetic Instruction
'CS/어셈블리' 카테고리의 다른 글
  • [SPARC] 11. 산술 연산과 Condition Code
  • [SPARC] 10. SPARC에서 사용하는 메모리 종류
  • [SPARC] 8. SPARC Regsiter Window & Assembly Instruction Format
  • [SPARC] 7. SPARC Architecture & Registers
에버듀
에버듀
개발은 좋은데 뭘로 개발할까
에버듀
Blog. 에버듀
에버듀
전체
오늘
어제
  • 분류 전체보기 (606) N
    • 개인 프로젝트 (43)
      • [2020] 카카오톡 봇 (9)
      • [2021] 코드악보 공유APP (22)
      • [2022] 유튜브 뮤직 클론코딩 (9)
      • [2025] 고성능 에코서버 만들기 (0)
      • 간단한 프로젝트 (3)
    • 팀 프로젝트 (22)
      • [2020] 인공지능 숫자야구 (4)
      • [2022] OSAM 온라인 해커톤 (10)
      • [2024] GDSC 프로젝트 트랙 (6)
      • [2025] 큰소리 웹 페이지 (2)
    • 알고리즘 (PS) (107)
      • BOJ (101)
      • Programmers (5)
      • 알고리즘 이모저모 (1)
    • CS (329) N
      • 자료구조 (19)
      • 어셈블리 (41)
      • 멀티미디어응용수학 (7)
      • 컴퓨터 구조 (29)
      • 알고리즘 분석 (4)
      • 컴퓨터 네트워크 (38)
      • 프로그래밍언어론 (15)
      • HCI 윈도우즈프로그래밍 (26)
      • 기초데이터베이스 (29)
      • 운영체제 (23)
      • 오토마타 (24)
      • 문제해결기법 (11)
      • 블록체인 (22)
      • 소프트웨어공학 (21)
      • 기계학습심화 (12)
      • 컴퓨터그래픽스와 메타버스 (8) N
    • 자기계발 (37) N
      • 동아리 (7)
      • 자격증 (3) N
      • 코딩테스트, 대회 (8)
      • 생각 정리 (18)
      • 머니 스터디 (1)
    • WEB(BE) (5)
      • express.js (1)
      • flask (0)
      • Spring & Spring Boot (4)
    • WEB(FE) (2)
      • html, css, js (1)
      • React.js (1)
    • Tool & Language (6)
      • Edit Plus (1)
      • Git (1)
      • Python3 (2)
      • Java (2)
    • Infra (12)
      • AWS (1)
      • Oracle Cloud (8)
      • Firebase (2)
      • Network (1)
    • Android (18)
      • Java (6)
      • Flutter (12)
    • Window (2)
      • Visual Studio 없이 WPF (1)
      • MFC (1)
    • 독서 (14)
      • Inside Javascript (7)
      • Database Internals (6)
      • 한 글 후기 (1)
    • 인턴 (8)
      • 델파이 (7)
      • Oracle (1)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.1.4
에버듀
[SPARC] 9. Assembly Language Programming
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.