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

アセンブラ自体は簡単そうに見えるが、出力する側からすると面倒なことこの上ない。テキストがどのように出力されるか頭出しをすると…

image

nask 出力されるバイナリ
[FORMAT "WCOFF"] 画像のNTヘッダの部分
[BITS 32] 32ビットモードで機械語出力する
[FILE "naskfunc.nas"] セクションヘッダ