인텔 어셈블리어 공부하다가 리눅스 32비트에서 해보려니 잘 안되네요.

스택오버플로우에서 물어물어 해본 결과

어셈블과 링크하는 방법은 다음과 같습니다.


nasm -f elf file.asm gcc -m32 -nostdlib -o file file.o


아래는 'Hello world!' 출력하는 예제입니다.


SECTION
.DATA hello: db 'Hello world!',10 helloLen: equ $-hello SECTION .TEXT GLOBAL _start _start: ; Write 'Hello world!' to the screen mov eax,4 ; 'write' system call mov ebx,1 ; file descriptor 1 = screen mov ecx,hello ; string to write mov edx,helloLen ; length of string to write int 80h ; call the kernel ; Terminate program mov eax,1 ; 'exit' system call mov ebx,0 ; exit with error code 0 int 80h ; call the kernel


64비트 환경에서 리눅스 어셈블리어 연습해보려고 별짓을 다 해봤는데 어셈블하고 링크하는 방법을 모르겠더군요. 그래서 그냥 VM Ware에 32비트 우분투를 설치하고 nasm으로 연습했습니다.


더 공부해보고 싶으신 분은 링크의 튜토리얼을 확인하세요(튜토리얼 링크: http://www.tutorialspoint.com/assembly_programming/)

Posted by 도전하는 공돌이pooh

댓글을 달아 주세요