advance/NotHariMain
の編集
http://hrb.osask.jp/wiki/?advance/NotHariMain
[
リロード
|
差分
|
単語検索
|
一覧
] [
編集
|
バックアップ
|
添付
]
-- 雛形とするページ --
A
Akkie
Athlon64X2
Clover
DAsoran
Falcon
FormatRule
FrontPage
Genesis
Help
I
InterWikiName
InterWikiSandBox
InterWikiテクニカル
Jormungand
K
Kebo
Kor_Lee_Hee_Rak
Leaf
Linux
Linux/wako_memo
MOIZ99
MW
MenuBar
OSC
PG_MANA
ReadersOS
RecentDeleted
SKYDASH
SandBox
Sero
Sigle
Source
Triangle_Ld.
Zxcvbnm
advance
advance/CPU
advance/FDC
advance/FPU
advance/NotHariMain
advance/QEMUVGA
advance/RTC
advance/blike
advance/cpu_reset
advance/driver
advance/driver/01
advance/driver/02
advance/families
advance/filesystem
advance/fwrite
advance/hddboot
advance/he86
advance/hints
advance/ipl
advance/kernel
advance/keycode
advance/osselect
advance/smaller1
advance/startup
advnace/smaller2
anzy
aotatsu
banbi-
bluedwarf
bo
bugs
challengers
cybozulabsyouth11
deskmanta
esb02b
faq
faq/advance
faq/asm
faq/c00-03
faq/c04-07
faq/c08-15
faq/c16-23
faq/c24-31
faq/make
faq/others
faq/qemu
guide
guide03
guide05
guide07
hikarupsp
imp_log/0000
imp_log/0001
imp_log/0002
imp_log/0003
impressions
index
k
killer_elf
kota
lea
lea/10_memory
lea/4_color
lea/idea
lea/terms
links
logs
logs/osa_hrb/comments0000
logs/osa_hrb/rumors0000
masa
members
message
mistakes
moge32
moppoi5168
notice
osdevjp
populars
prog_index
projects
q_and_a
q_and_a_2
qa_log/0000
qa_log/0001
qa_log/0002
qa_log/0003
qa_log/0004
qa_log/0005
qa_log/0006
qa_log/0007
qa_log/0008
qa_log/0009
quark
rankings
rule
sakamoto
sasaki
spc09
spcc_30min_os
tatsu
tools
tools/bim2hrb
tools/bin2obj
tools/cc1
tools/edimg
tools/gas2nask
tools/makefont
tools/nask
tools/obj2bim
tools/sjisconv
uchan
uho
updates
violations
wako
white
win64-bit
x
ytakano
ヘルプ
リックス
質問します
整形ルール
本は買ったぞ!持ってるぞ!
練習用ページ
* HariMainは嫌だ! -(by [[K]], 2006.03.24) -発展課題のページ(全部読む前にここを読むのは混乱するのでおすすめじゃないです) -自作OSを作り始めているんだけど、C言語の実行開始関数がHariMainという名前は嫌だという人のためのページです。 *** 仕組み -直すのは簡単です。そもそもHariMainという関数がC言語の実行開始関数になっている理由は、haribote.rulを使うからです。 -そのharibote.rulの中身 format: /* このセクションでリンクの方針を記述 */ code(align:1, logic:0x24, file:0x24); data(align:4, logic:stack_end, file:code_end); file: /* このセクションでコマンドラインに書ききれなかった .objファイル、.libファイルを記載 */ /* なお、このセクションはフルパスで書いてもよい。 */ /* 例: c:/osask/gg00libc.lib; */ ../z_tools/haribote/harilibc.lib; ../z_tools/haribote/golibc.lib; label: /* 必ずリンクしなければいけないラベルを指定 */ /* エントリポイントを指定すればいいと思ってください */ _HariStartup; /* 上記3セクションの順序は入れ替えてはいけません! */ -ポイントはlabel:セクションで_HariStartupを指定しているところです。この関数はharilibc.libの中に入っていて、 omake/tolsrc/hrblib0a/startup.c にソースがあります。 void HariMain(void); void HariStartup(void) { /* 将来HariMainの実行に先立って何かしたくなったら、ここに書き足す */ HariMain(); /* 将来HariMainの終了後に何か処理をさせたくなったら、ここに書き足す */ return; } -こうなっています。つまり、_HariStartupが指定されているから、HariMainが最初に実行されることになっていたんです。 *** 直し方 -1.HariStartupを書き換えて、MyOsMainを呼ぶようにする。 --でもこれだとHariStartupという名前が内部的に残るのでかっこ悪い。 -2.label:のところを_MyOsMainに書き換えたものを作り、それをmyos.rulとして保存して、自作OSのリンクの際にはこれを指定する。 --これが一番かっこいいと思います。もちろん_MyOsStartup&MyOsMainのあわせ技でもいいです。 -注意:_mainという指定はできません。無理にやってみてもいいですが、cc1がいろいろ余計なことをやろうとして、うまくいかなくなるのです。 * こめんと欄 -___mainという空の関数を用意したら_mainが使えました。 -- 名無しさん SIZE(10){2009-04-11 (土) 11:46:27} -おお、おめでとうございます! -- [[K]] SIZE(10){2009-04-12 (日) 02:44:01} #comment
タイムスタンプを変更しない
* HariMainは嫌だ! -(by [[K]], 2006.03.24) -発展課題のページ(全部読む前にここを読むのは混乱するのでおすすめじゃないです) -自作OSを作り始めているんだけど、C言語の実行開始関数がHariMainという名前は嫌だという人のためのページです。 *** 仕組み -直すのは簡単です。そもそもHariMainという関数がC言語の実行開始関数になっている理由は、haribote.rulを使うからです。 -そのharibote.rulの中身 format: /* このセクションでリンクの方針を記述 */ code(align:1, logic:0x24, file:0x24); data(align:4, logic:stack_end, file:code_end); file: /* このセクションでコマンドラインに書ききれなかった .objファイル、.libファイルを記載 */ /* なお、このセクションはフルパスで書いてもよい。 */ /* 例: c:/osask/gg00libc.lib; */ ../z_tools/haribote/harilibc.lib; ../z_tools/haribote/golibc.lib; label: /* 必ずリンクしなければいけないラベルを指定 */ /* エントリポイントを指定すればいいと思ってください */ _HariStartup; /* 上記3セクションの順序は入れ替えてはいけません! */ -ポイントはlabel:セクションで_HariStartupを指定しているところです。この関数はharilibc.libの中に入っていて、 omake/tolsrc/hrblib0a/startup.c にソースがあります。 void HariMain(void); void HariStartup(void) { /* 将来HariMainの実行に先立って何かしたくなったら、ここに書き足す */ HariMain(); /* 将来HariMainの終了後に何か処理をさせたくなったら、ここに書き足す */ return; } -こうなっています。つまり、_HariStartupが指定されているから、HariMainが最初に実行されることになっていたんです。 *** 直し方 -1.HariStartupを書き換えて、MyOsMainを呼ぶようにする。 --でもこれだとHariStartupという名前が内部的に残るのでかっこ悪い。 -2.label:のところを_MyOsMainに書き換えたものを作り、それをmyos.rulとして保存して、自作OSのリンクの際にはこれを指定する。 --これが一番かっこいいと思います。もちろん_MyOsStartup&MyOsMainのあわせ技でもいいです。 -注意:_mainという指定はできません。無理にやってみてもいいですが、cc1がいろいろ余計なことをやろうとして、うまくいかなくなるのです。 * こめんと欄 -___mainという空の関数を用意したら_mainが使えました。 -- 名無しさん SIZE(10){2009-04-11 (土) 11:46:27} -おお、おめでとうございます! -- [[K]] SIZE(10){2009-04-12 (日) 02:44:01} #comment
テキスト整形のルールを表示する