3日目 harib00jのコンパイル - HobbyOSs/opennask GitHub Wiki
全体の構成
- naskfunc.nas
; naskfunc
; TAB=4
[FORMAT "WCOFF"] ; オブジェクトファイルを作るモード
[BITS 32] ; 32ビットモード用の機械語を作らせる
; オブジェクトファイルのための情報
[FILE "naskfunc.nas"] ; ソースファイル名情報
GLOBAL _io_hlt ; このプログラムに含まれる関数名
; 以下は実際の関数
[SECTION .text] ; オブジェクトファイルではこれを書いてからプログラムを書く
_io_hlt: ; void io_hlt(void);
HLT
RET
アセンブラ自体は簡単そうに見えるが、出力する側からすると面倒なことこの上ない。テキストがどのように出力されるか頭出しをすると…
nask | 出力されるバイナリ |
---|---|
[FORMAT "WCOFF"] |
画像のNTヘッダの部分 |
[BITS 32] |
32ビットモードで機械語出力する |
[FILE "naskfunc.nas"] |
セクションヘッダ |