Hi yoahn 개발블로그

[42Seoul/libasm] libasm 서브젝트 번역 본문

42 SEOUL

[42Seoul/libasm] libasm 서브젝트 번역

hi._.0seon 2021. 4. 30. 19:04
반응형

먼저 서브젝트 번역!

 

Chapter 1

Introduction

어셈블리(또는 어셈블리어)는 컴퓨터 또는 기타 프로그래밍 가능한 장치를 위한 낮은 수준의 프로그래밍 언어이며, 언어와 아키텍처의 기계 코드 명령 사이에 매우 강력한(대단하지 않는 경우가 많다) 대응성이 있다. 각 어셈블리 언어는 특정 컴퓨터 아키텍처에 한정됩니다. 대조적으로, 대부분의 고급 프로그래밍 언어는 일반적으로 여러 아키텍처에서 휴대할 수 있지만 해석하거나 컴파일할 필요가 있다. 어셈블리 언어를 기호 컴퓨터 코드라고도 합니다.

 

Chapter 2

Common Instructions

  • 정의되지 않은 동작 외에 예기치 않게 기능(분할 오류, 버스 오류, 이중 사용 가능 등)이 종료되지 않아야 합니다. 이렇게 하면 프로젝트가 작동하지 않는 것으로 간주되어 평가 중에 0을 받게 됩니다.
  • Makefile에는 적어도 $(NAME), all, clean, flean 및 re 규칙이 포함되어야 합니다. 그리고 필요한 파일만 다시 컴파일/다시 링크해야 합니다.
  • 프로젝트에 보너스를 제출하려면 Makefile에 규칙 보너스를 포함해야 하며, 이 경우 프로젝트의 주요 부분에서 금지되는 다양한 헤더, 라이브러리 또는 기능이 추가됩니다. 보너스는 다른 파일 즉 보너스 안에 있어야 합니다.{c/h. 필수 및 보너스 부품 평가는 별도로 수행합니다.
  • 프로젝트에 보너스를 제출하려면 Makefile에 규칙 보너스를 포함해야 하며, 이 경우 프로젝트의 주요 부분에서 금지되는 다양한 헤더, 라이브러리 또는 기능이 추가됩니다. 보너스는 다른 파일 즉 보너스 안에 있어야 한다.{c/h. 필수 및 보너스 부품 평가는 별도로 수행합니다.
  • 이 작업을 제출하거나 등급을 매길 필요가 없더라도 프로젝트에 대한 테스트 프로그램을 만들 것을 권장합니다. 그것은 여러분의 일과 동료들의 일을 쉽게 테스트할 수 있는 기회를 줄 것입니다. 당신은 그 시험들이 당신의 방어 중에 특히 유용하다는 것을 알게 될 것이다. 실제로 방어 중에 평가 중인 피어의 테스트 및/또는 테스트를 자유롭게 사용할 수 있습니다.
  • 할당된 Git 저장소에 작업을 제출합니다. GIT 저장소에 있는 작업만 등급이 지정됩니다. 작업의 등급을 매기도록 Deepthink가 할당된 경우 동료 평가 후에 작업이 수행됩니다. Deepthoughte(딥생각)의 채점 도중 작업의 어느 부분에서든 오류가 발생하면 평가가 중지됩니다.
  • 64비트 ASM을 작성해야 합니다. "calling convention"에 주의하세요.
  • 인라인 ASM을 수행할 수 없으며 '.s' 파일을 수행해야 합니다.
  • nasm으로 어셈블리 코드를 컴파일해야 합니다.
  • AT&T가 아닌 Intel 구문을 사용해야 합니다.

Chapter 3

Mandatory part

  • 라이브러리의 이름은 libasm.a 여야 한다.
  • 라이브러리의 함수를 테스트하고 컴파일하여 작동되는 것을 보여주기 위해서 main을 제출해야 한다.
  • 다음 함수들을 asm으로 다시 작성해야 한다.
    • ft_strlen (man 3 strlen)
    • ft_strcpy (man 3 strcpy)
    • ft_strcmp (man 3 strcmp)
    • ft_write (man 2 write)
    • ft_read (man 2 read)
    • ft_strdup (man 3 strdup, you can call to malloc)
  • syscalls 중 오류를 확인하고 필요할 때 적절하게 설정해야 한다.
  • code에서 errno 변수를 올바르게 설정해야 한다.
  • 이를 위해 extern ___error 를 호출할 수 있다.

Chapter 4

Bonus part

이 함수들을 asm으로 다시 작성할 수 있다. 연결리스트 함수는 아래의 구조를 사용한다.

typedef struct     s_list
{
    void *data;
    struct s_list  *next;
}                  t_list;

 

 

 

  • ft_atoi_base (like the one in the piscine)
  • ft_list_push_front (like the one in the piscine)
  • ft_list_size (like the one in the piscine)
  • ft_list_sort (like the one in the piscine)
  • ft_list_remove_if (like the one in the piscine)
반응형

'42 SEOUL' 카테고리의 다른 글

CI/CD 파이프라인  (0) 2021.08.06
[42Seoul / Philosophers(OS)] Mutex 와 Semaphore 차이  (0) 2021.06.28
[42Seoul / subject] Philosophers 해석  (0) 2021.06.16
[42Seoul/libasm] libasm 시작하기  (0) 2021.04.30
[42Seoul] Cub3D 번역  (0) 2021.03.31
Comments