gcc

ふつうのLinuxプログラミング 第6章 stdio版cat

gcc

6章は至ってふつう。5章のシステムコール版をstdioに直してスッキリした。しかし、簡易版catでは、fgetcを使っているので、ディレクトリかどうかも判断せずにファイルを開く。 % ./cat ../ % ←正常終了 % cat ../ cat: ../: Is a directoryソースを見比べな…

本物のcatを眺めてみる。

gcc

せっかくcoreutilsのソースを手に入れたので、GNU catのソースを眺めてます。ソース量は、800行。案外短いような長いような。vimのTlistで、ざざ〜っと眺める。プログラムの概要は、 macro PROGRAM_NAME AUTHORS max max LINE_COUNTER_BUF_LEN variable prog…

ふつうのLinuxプログラミング 第5章 unistd.h

gcc

ふつうのLinuxプログラミング第5章まで読了〜。この本マジでおもろいです。最初の本格的プログラミングは「catコマンドを作ろう」でも、ふつうのC言語入門とは内容が違う。いきなり、「システムコール」って全然「ふつう」じゃないっす!早速コーディング・・…

コーディングスタイルについて考えてみる(1)

gcc

カーネル2.6のカーネルのコーディング規約のドキュメントを入手しました。JF: Linux Kernel 2.6 Documentation: CodingStyle最も重要な一説は"indent -kr -i8"ついでに、Coreutils - GNU Project - Free Software Foundation (FSF)から、Coreutilsのソースを…

コーディングスタイルについて考えてみる(0)

gcc

自分がどの方向性のコーディングスタイルを取るのかはっきりしていない。Linuxプログラミングを進めるにあたり、C言語のコーディングスタイルをはっきりさせたい。今までは案外適当にやってきたので・・・。ってことで、コーディングスタイルについて調べて…

起動引数の展開

gcc

ふつうのLinuxプログラミング第1部読み終わりました。ついでに作ったプログラムをハックして遊んでます。第1部はLinux入門という形で殆どプログラムらしきモノは出てきませんでしたが、わかりやすく丁寧な解説がステキです。Linuxを構成する3つの要素は、 フ…

gccのありえないオプション数。

GCC

$ gcc -<tab> Display all 663 possibilities? (y or n)げげぇ!bashの補完機能も素晴らしいが・・・こんなにあったとは・・・。</tab>

やっとボクノス始動!

苦節1ヶ月・・・ハードクラッシュを乗り越え、とりあえず開発環境は揃った気がします。そんなわけで、ボクノスようやく始動です!! boxnos 0.00.01 Makefile all : as boot.S -o boot.obj ld -Ttext=7c00 -o boot.exe boot.obj objcopy -O binary boot.exe…

gasでブート

grubとliloのソースを入手してみたけど、cygwinでコンパイル出来ずorzgrubは、configure: error: LZO library version 1.02 or later is required何処かから入手してこないと駄目っぽい。liloはAS86 LD86が無いと。asとldで代用出来るかどうかは不明。う〜。…

ld: cannot perform PE operations on non PE output file 'a.exe'.

アセンブリ言語の教科書のサンプルをやってみました。 $ ld --oformat binary boot.obj ld: cannot perform PE operations on non PE output file 'a.exe'.Linuxではこの方法でベタバイナリが吐けるらしい。しかし・・・Cygwin版gccのリンカldは何が何でもex…

gasでブート

アセンブリ言語の教科書 P205〜gas+bochsでブートする方法について書いてあった!リンカスクリプトも書いてある!!GJ!!ldのマニュアル長すぎなので、助かりました。これから熟読します。

Cygwin GCJを試す。

GCJがうまく動かなかったのでメモしておきます。まずはソース。Hello.java public class Hello { public static void main(String args[]) { System.out.println("Hello,GCJ World!!"); } } gccでコンパイルしてみました。 $ gcc Hello.java /cygdrive/c/DOC…

gdbを試す。

GCC

cygwin上でgdb遊び中。マニュアル発見したのでブクマしときます。GDB マニュアルお、ダウンロード出来るらしい。私的 GNU マニュアル翻訳プロジェクト2個ともブクマだぁ〜

cygwinでGASの練習

GCC

cygwin上でコンパイル出来た。ex1.s .text .global main main: movl $1, %eax movw $0xffff, %ax movb $0b01010101, %ah movl $0, %eax ret Makefile target = ex1 default: $(target) ./$(target) $(target) : $(target).obj ld $< -o $@ -e main %.obj : %…

ブート考

現在のブートソース。 bits 16 org 0x7c00 section .text main: mov si,hello call print jmp halt ; void print(char *si) print: .start mov al, [si] inc si cmp al, 0 je .end call put jmp .start .end: ret ; void put(char al) put: mov bx, 15 ; カ…