예, 나는 그것을 시도하고 작동합니다. 그런 일이 일어나는 것을 보는 것은 꽤 계시였습니다. 이전의 모든 아키텍처에는 최소한 일부 어셈블리가 필요했습니다. 당신은 메인 ()의 단지 표준 호출과 베어 메탈 8 비트 AVR 칩에서 실행하는 C 프로그램을 작성할 수 있습니다. 인수가 필요하지 않으므로 약간 비표준이지만 단일 어셈블리 바이트로 해당 프로그램을 작성하고 ISP를 통해 다운로드하면 잘 실행될 수 있음을 확신 할 수 있습니다. 일반적으로 어셈블리를 새로 접하는 경우 FASM(플랫 어셈블러)은 `플랫 리얼 모드`에서 실행되는 빠르고 효율적인 80×86 어셈블러입니다. 다른 많은 80×86 어셈블리와 달리 FASM은 소스 코드만 있으면 실제로 필요한 정보를 포함해야 합니다. 그것은 그 자체로 작성되고 매우 작고 빠릅니다. 그것은 DOS / 윈도우 / 리눅스에서 실행하고 평면 바이너리, DOS EXE, Win32 PE, COFF 및 리눅스 ELF 출력을 생성 할 수 있습니다. http://flatassembler.net 참조하십시오. ; 어셈블리 언어로 작성된 다양한 UNIX 프로젝트; 물론 그들 모두는 매우 작은 크기를 갖추고 있습니다. 소스 코드 및 예제를 찾고 있는 경우 GCC가 인라인 어셈블리 코드에서 레지스터 제약 조건을 지정할 수 있도록 허용하고 필요합니다.
따라서 인라인 어셈블리 코드는 강제로 정확한 코드가 아니라 패턴으로 만들어집니다. 어셈블러는 추상 구문 트리를 조작하므로 어셈블리 구문 변환기, 디스어셈블러, 공통 어셈블러/컴파일러 백 엔드 등의 기초가 될 수 있습니다. 또한 실제 언어인 Scheme의 모든 힘은 매크로 프로세싱/메타프로그래밍에 대한 도전이 되지 않습니다. 두 가지 동작에 대해 동시에 대처해야 하는 경우 기존 패키지가 어떻게 수행하는지 확인하십시오. 예를 들어, 이전 리눅스 소스 트리를 얻을, 엘크, qthreads, 또는 OCaml. 경우에 따라 프로젝트 목표에 도달하기 위해 어셈블리를 사용해야 할 수도 있습니다. 이전에는 gcc 또는 다른 컴파일러 내에 어셈블리를 포함시키는 데 더 중점을 두어 보았습니다. 그러나 어떤 사람들은 활로 사냥하거나 손으로 빵을 만들거나 더 이상 절대적으로 필요하지 않은 많은 다른 일을하고 싶어하는 것처럼, 어떤 사람들은 어셈블리 언어로 글을 쓰는 것을 좋아합니다. GCC가 사용자의 정확한 CPU에 더 적합한 코드를 생성하도록 CPU 관련 -m486 또는 이러한 플래그를 추가할 수 있습니다. 현대 GCC에는 -mpentium 및 이러한 플래그 (그리고 PGCC는 더 많은 것)가 있지만 GCC 2.7.x 및 이전 버전은 그렇지 않습니다. CPU 관련 플래그의 좋은 선택은 리눅스 커널에 있어야합니다. 자세한 내용은 현재 GCC 설치에 대한 TeXinfo 설명서를 참조하십시오.
당신이 전에 읽은 대로, 다른 방법으로 리눅스에 대 한 쓸 수 있습니다.; 이것은 커널 서비스를 호출하는 가장 빠른 방법이기 때문에 직접 커널 호출을 사용하는 방법을 보여 드리겠습니다. 우리의 코드는 어떤 라이브러리에 연결되지 않습니다, ELF 인터프리터를 사용하지 않습니다, 그것은 직접 커널과 통신.