🌳
Tiny CCでasmファイルのアセンブル
はじめに
先日、Tiny CCのデバッグ環境を作りました。
i386-asm.c
あたりの処理を追いたくなってきたので、適当な
アセンブリコード(hello world)を用意しましてみました。
asm 版 Hello world
Linux Assembly HOWTO Chapter 6. Quick start を参考に、以下のようなコードを用意しました。
変更点は.text
を.section .text
に変えた点くらいでしょうか。
.section .text
.global _start
_start:
movl $len,%edx # third argument: message length
movl $msg,%ecx # second argument: pointer to message to write
movl $1,%ebx # first argument: file handle (stdout)
movl $4,%eax # system call number (sys_write)
int $0x80 # call kernel
movl $0,%ebx # first argument: exit code
movl $1,%eax # system call number (sys_exit)
int $0x80 # call kernel
.data # section declaration
msg:
.ascii "Hello, world! tcc asm\n" # our dear string
len = . - msg # length of our dear string
こちらを以下のようにtcc
のでアセンブルをすると、
ちゃんと実行できます。
$ ./tcc -nostdlib asm-hello.s
$ ./a.out
Hello, world! tcc asm
前回用意したでデバッグ環境で
i386-asm.c
内の処理でブレークを貼って止めることも出来ました。
Discussion