儲からない勉強は業務時間外の2時間までと決めてたんですが、Macのバッテリーが1時間50分ぐらいしか持たないのが切ないkomagataです。
jonesforthを読んでるんですが、まずはGASのhello worldとのコンパイル方法の違いが分からないとしょうがないので勉強。
$ gcc -m32 -nostdlib -static -Wl,-Ttext,0 -Wl,--build-id=none -o jonesforth jonesforth.S
UNIXの部屋 コマンド検索:info (*BSD/Linux)どうでもいいが、当ページ管理人が一番嫌いな UNIX コマンドが info である。有益な情報が info 内にあるのに、見づらいし、操作しづらいから。info2html の吐く HTML も嫌い。世の人々は info に満足しているのだろうか?
GCCのマニュアルにはinfo見ろと書いてある。でも上記にもとても共感してる。
jonesforthをasでコンパイルしようとすると沢山エラーが出る。違いを知るために、hello worldにjonesforthで使われてるものを少しずつ足して行くことに。まずは毎回as, ldが面倒なのでMakefileを書く。
PROGRAM = helloworld
SRCS = helloworld.s
OBJS = $(subst .s,.o,$(SRCS))
ASFLAGS = -a=$(PROGRAM).lst
LDFLAGS = -Ttext 0 -e main
$(PROGRAM): $(OBJS)
$(LD) $(LDFLAGS) -o $@ $<
.PHONY: clean
clean:
$(RM) $(OBJS) $(PROGRAM)
こんな感じで良いのかな?substとかmakeの関数なんて知らなかった。viからは:makeでmakeできるんですね。
それとちょっと気になったのでvimのgasのsyntaxを入れてみた。
apt-cacheで適当に探してたらintel2gasという面白そうなものを見つけた。
Package: intel2gas
Priority: optional
Section: devel
Installed-Size: 340
Maintainer: Alexander Zangerl
Architecture: i386
Version: 1.3.3-12
Depends: libc6 (>= 2.3.6-6), libgcc1 (>= 1:4.1.1-12), libstdc++6 (>= 4.1.1-12)
Filename: pool/main/i/intel2gas/intel2gas_1.3.3-12_i386.deb
Size: 30456
MD5sum: a7b336eb691b3391211cc20b8a29d2e5
SHA1: 6afaec8b0505b3fc1d2b862fdf38de3d63ab1abd
SHA256: 0d8f32134c862b032f7bcf0c4a0bfe0d32a480edfcd7ae30fe25d5839bc91bc5
Description-ja: NASM アセンブラ言語から GAS への変換プログラム
Intel2GAS は、i386 プラットホーム上で、NASM 用に書かれたアセンブラソー
スファイルを GNU Assembler (GAS) を使ってアセンブル可能なファイルに変換
するプログラムです。基本的な MMX 命令への対応も提供します。
.
ホームページ: http://www.niksula.cs.hut.fi/~mtiihone/intel2gas/
Tag: devel::machinecode, interface::commandline, role::program, scope::utility, use::converting
ホームページを見るとgas2intelも出来るみたい。後で試してみたい。
参照: