2014年5月10日 (土曜日)

23:10:37 # Life hello world. なんとなく Hello World ってどうだっけなとおもったので gcc -nostdlib でコンパイルしてうごく x86_64 Hello Worldかいてみた。 システムコールの番号ってどこで定義されているのだとおもったら linux/arch/x86/syscalls/syscall_64.tbl にあった。__NR_writeとかどっかでinclude できるはず。 この段階だとまだstrip して 688Bあるので56バイトとかまでやるのはすごいなぁ。 x86だとシステムコールの1番がexitだったりするんだけど、hello worldするのに必須なwriteが1番になっていてexitはおいやられているx86_64はえらいなぁという感想。

.data
msg:	.ascii "Hello World!\n"
msgend:
	.text
	.globl _start
_start:
	movq $1, %rdi
	movq $msg, %rsi
	movq $msgend-msg, %rdx
	movq $1, %rax
	syscall
	movl $60, %eax
	syscall
	
Junichi Uekawa

$Id: dancer-diary.el,v 1.94 2009/10/21 14:02:48 dancer Exp $