LoginSignup
0
1

More than 1 year has passed since last update.

NASM ってなんだ

Posted at

『30日でできる! OS自作入門』を読んでいる。

書籍では作者さん自作のアセンブラが利用されているのだけど、これがどういうものなのかよくわからない。
なので、何か適当なもので代替することにした。これがどういうものなのか、やっぱりよくわからない。

というわけでつまった (つまっている) ことや調べたことどもをメモ。

RESB の使い方?

お手本 ($ -> ($-$$) に置換したもの) の以下の部分を NASM でアセンブルしたら (記述通りの動きには思えるのだけど) 0x7dfeまでを0x00で埋め たあと、残りの処理がなされたように見えた。

(この辺も違う)
image.png

要するに、できたファイルがフロッピーのサイズを大分はみ出るものになってしまった。

		RESB	0x7dfe-($-$$)		; 0x7dfeまでを0x00で埋める命令

		DB		0x55, 0xaa

; 以下はブートセクタ以外の部分の記述

		DB		0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
		RESB	4600
		DB		0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
		RESB	1469432

0x7dfe-($-$$)0x1fe-($-$$) としたら動いたんだけど、これは解決になってるんだろうか、、?

list はこんな感じだった。

other: は「ラベルがいるのかな?」っと思って書いたもの。けど特に意味をなしてなさそうだった。

(一部抜粋)

    55 00000082 0A                      		DB		0x0a			; 改行
    56 00000083 00                      		DB		0
    57                                  
    58 00000084 <res 7D7Ah>             		RESB	0x7dfe-($-$$)		; 0x7dfeまでを0x00で埋める命令
    58          ******************       warning: uninitialized space declared in .text section: zeroing [-w+zeroing]
    59                                  
    60 00007DFE 55AA                    		DB		0x55, 0xaa
    61                                  
    62                                  ; 以下はブートセクタ以外の部分の記述
    63                                  other:
    64 00007E00 F0FFFF0000000000        		DB		0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
    65 00007E08 <res 11F8h>             		RESB	4600
    65          ******************       warning: uninitialized space declared in .text section: zeroing [-w+zeroing]
    66 00009000 F0FFFF0000000000        		DB		0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
    67 00009008 <res 166BF8h>           		RESB	1469432
    67          ******************       warning: uninitialized space declared in .text section: zeroing [-w+zeroing]
    55 00000082 0A                      		DB		0x0a			; 改行
    56 00000083 00                      		DB		0
    57                                  
    58 00000084 <res 17Ah>              		RESB	0x1fe-($-$$)		; 0x7dfeまでを0x00で埋める命令
    58          ******************       warning: uninitialized space declared in .text section: zeroing [-w+zeroing]
    59                                  
    60 000001FE 55AA                    		DB		0x55, 0xaa
    61                                  
    62                                  ; 以下はブートセクタ以外の部分の記述
    63                                  other:
    64 00000200 F0FFFF0000000000        		DB		0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
    65 00000208 <res 11F8h>             		RESB	4600
    65          ******************       warning: uninitialized space declared in .text section: zeroing [-w+zeroing]
    66 00001400 F0FFFF0000000000        		DB		0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
    67 00001408 <res 166BF8h>           		RESB	1469432
    67          ******************       warning: uninitialized space declared in .text section: zeroing [-w+zeroing]

リンク

0
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1