2010-04-16 5 views
6

Mac에서 Snow Leopard (10.6.3)를 사용 중입니다. 내가 사용하는 어셈블리 언어는 사용하는 칩셋에서 유효해야합니다. 나는 이것에 완전히 익숙하지 않다. 나는 C와 Objective-C 프로그래밍의 기본 배경과 PHP의 배경이 강하다. 나는 항상 어셈블리에 관한 모든 것을보고 싶었습니다.Mac에서 어셈블리 프로그래밍

내가 살펴볼 튜토리얼은 VTC [link]입니다.

내가 알고 싶은 것은 : 내가 가지고있는 자습서가 내가 가지고있는 Mac의 어셈블리 버전과 호환된다는 것입니까?

미안 내가이 언어에 대해 완전히 새로운 것을 알고 있지만, 그 중 일부를 다시 생각해 본다. 나는 xcode가 있고 내가 궁금해하는 점은 xcode에서 어떤 종류의 문서를 열어서 어셈블리로 작업 할 수 있으며 Mac에 16 진수 편집기가 내장되어 있는지 (필요할 때가 올 때)?

감사합니다.

답변

5

사용하는 어셈블리 언어는 사용중인 OS가 아니라 CPU의 명령 집합에 따라 다릅니다. Mac 버전으로 판단하면 Intel 프로세서를 사용하고 있다고 말하면서 x86 또는 amd64 어셈블리를 배우고 싶을 것입니다.

+1

개인적으로 x86을 쉽게 찾을 수 있습니다. 거기다 x86에 관한 더 많은 정보가 amd64보다 많습니다. – Earlz

+4

이것은 다소 오해의 소지가 있습니다 - 언어는 CPU에 의해 다르지만 시스템 호출은 플랫폼에 따라 다르므로 Linux 용 자습서는 Mac에서 작동하지 않습니다 (그리고 맥 시스템 콜은 잘 설명되어 있지 않다.) – shosti

+0

참 - 그러나 이것을 고려하십시오 : Mac OSX는 Unix 기반입니다. –

0

어셈블리 언어는 명령어 아키텍처에 따라 다릅니다. 칩은 명령어 아키텍처의 인스턴스입니다.

제 생각에는 TextWrangler를 받고 gcc로 직접 컴파일하면됩니다.

찾으시는 파일 확장자는 .s입니다.

+0

'. – Earlz

+0

GCC는 AT & T 구문을 사용합니다. Mac에서 컴파일하면 대부분의 경우 gcc를 사용하고 있습니다. –

+2

@Paul "less used" "less by hand"라는 말은 GNU as 구문이 컴파일러에 의해 생성되도록 최적화되고 설계된 것입니다. 이것은 GNU as가 끔찍한 오류 처리와 탐지를하는 이유이기도합니다. 그것은 GCC에서 코드를 완벽하게하는 데 사용됩니다. 이것만으로도 초보자에게 권장하지 않는 이유입니다. – Earlz

0

조립품은 모든 프로세서에 대해 개념상 다소 차이가있을 수 있습니다. 그러나 복잡도는 프로세서마다 다릅니다. 귀하의 사이트에서 볼 수 있듯이, 당신은 x86 어셈블러를 사용하게 될 것입니다. (x86은 모든 소비자 용 인텔 프로세서가 사용하는 명령 세트이고, 최근의 Mac 및 모든 PC는 사용합니다.) 상당히 복잡하지만 압도적이지는 않습니다. 당신이 단계별로 배우면.

Xcode는 일반 텍스트 파일과 호환됩니다. Hex Fiend이 필요합니다.

조립품은 매우 낮은 수준입니다. ifs, whiles, 또는 사실 어떤 제어 루프도 "do operation"과 "GOTO 결과가 0이 아니거나 같음"을 제외하고는 없습니다 (귀하의 어셈블러가 구문 설탕으로 제공하지 않는 한, 어떤면에서 목적을 상회합니다). PHP 지식은 대부분 접선으로 유용합니다. 당신의 지식은 당신을 잘 섬길 것입니다.

+0

매크로를 사용하여'ifs'와'whiles'를 얻을 수 있습니다. –

+1

실제로. "[...] 통념적인 설탕으로 생각합니다. – Kyte

1

조립품을 가져 오는 좋은 방법은 자신과 함께 놀 수있는 임베디드 장치를 얻는 것입니다.

TI에는 재생할 수있는 일부 nice, inexpensive devkits이 있습니다. 컴퓨터에 무선으로 연결할 수있는 프로그래밍 가능한 MSP430 마이크로 컨트롤러가 장착 된 디지털 시계가 장착 된 Chronos 키트 ($ 50)를 사용했습니다. 그것은 꽤 달콤합니다.

업데이트 : 나는 Arduino을 언급하는 것을 잊었습니다. 재미있는 주변 장치 및 프로젝트를 온라인으로 제공하는 꽤 멋진 오픈 플랫폼입니다.

0

링크 된 자습서는 Mac에 포함 된 NASM을 사용하는 것처럼 보입니다.그러나 시스템 호출은 일반적으로 플랫폼에 따라 다르며 (Mac과 Linux는 매우 다릅니다.) 자습서를 보지 않고도 다른 플랫폼을 대상으로할지 여부를 알기가 어렵습니다. 보다 나은 방법은 SPIM을 설치하고 x86보다 더 간단한 MIPS 어셈블리를 배우는 것입니다.

0

Mac에서 실행중인 어셈블리 코드는 사용자로부터 불과 3 걸음 거리에 있습니다. XCODE를 사용하여 수행 할 수 있지만 NASM 명령 행 도구를 사용하는 것이 더 좋습니다.

그냥 따라

  1. 먼저 명령 ld -macosx_version_min 10.7.0 -lSystem -o OutPutFile myFile.o && ./64
를 사용하여 출력을보기 위해이 명령을 nasm -f macho64 myFile.asm
  • 실행의 Obj 파일을 사용하여 확대 개체 파일에 브루 brew install nasm
  • 변환 .ASM 파일을 사용하여 NASM 설치

    간단한 텍스트 귀하의 편의를 위해 아래에 myFile.asm 파일이 작성되었습니다. 일반적으로 인텔 (NASM/yasm/TASM/MASM) 구문 조립체에 사용되는 '.asm` 동안 일반적으로 덜 사용하는 AT & T (GNU)를 구 조립체에 사용되는 .s`

    global start 
    section .text 
    
    start: 
        mov  rax, 0x2000004 ; write 
        mov  rdi, 1 ; stdout 
        mov  rsi, msg 
        mov  rdx, msg.len 
        syscall 
    
        mov  rax, 0x2000001 ; exit 
        mov  rdi, 0 
        syscall 
    
    section .data 
    
    msg: db  "Assalam O Alaikum Dear", 10 
    .len: equ  $ - msg 
    
  • +0

    또는 코드를 GIT에서 XCODE의 RUN 어셈블리 코드로 다운로드하십시오. https://github.com/akhzarna/AssemblyLanguage –

    관련 문제