2008/05/22

[assembler] 64bit アセンブラで Hello World! こっちかな

どうやら 64bit だとシステムコールに syscall を使い、システムコールの番号も使うレジスタも違うみたい。

http://www.milw0rm.com/papers/110

        ;; -*- mode: asm; coding: utf-8; -*-
;; nasm -f elf64 nasm.asm
;; ld -s -o nasm nasm.o
;; ./nasm

section .text

global _start

_start:
mov rax, 1 ; 出力システムコール
mov rdi, 1 ; 標準出力
mov rsi, msg ; 文字列のアドレス
mov rdx, len ; 文字列の長さ
syscall ; システムコール実行

mov rax, 60 ; exit システムコール
mov rdi, 0 ; exit コード
syscall ; システムコール実行

section .data

msg db 'Hello World!', 0ah, 'まみむめも♪', 0ah
len equ $ -msg

0 件のコメント: