asm

FFmpeg の GENERAL_REGS 問題について再び

yuki さんから情報を頂きました.ありがとうございます. http://d.hatena.ne.jp/eagletmt/20090315/1237114187#c1241296828 Lurker - Database message source pull failure ふむ,これを読む限り-O2以上を渡せばよさそうです. 実際, #include <stdio.h> #include <stdint.h></stdint.h></stdio.h>…

昨日の修正をするまでの思考過程をまとめてみた

また FFmpeg の make が通らない - EAGLE 雑記 の続きみたいな。 昨日はちょっと時間が遅かったので書けなかったけど、忘れないうちにメモ。 間違っている箇所があったら指摘してくれるとありがたいです。 今回使用したのは gcc 4.3.2、CPU は Intel(R) Core…

RTC から時刻を取得して表示

asm

まぁ Hello World! だけではつまらないなと思って。 ひたすら ah=0x02, int 0x1A で RTC を読み出して表示する。 各値は BCD という表現で格納されている。今まで聞いたことすらなかった。 http://ja.wikipedia.org/wiki/BCD ふむ、こういう場合にはむしろ扱…

BIOS で Hello World!

asm

bochsを使ってHello World! - ラシウラ このエントリを参考に、これとはちょっと違う方法で BIOS で Hello World!を出力してみた。 アセンブラは yasm、実行には Q.app(qemu) を使った。 org 0x7C00 ; start address for BIOS start: ; get current cursor p…

cpuid で CPU の詳細な情報を得る

asm

eax に適当な値を入れて cpuid することで、ebx, ecx, edx に CPU の詳細な情報がセットされる。 まずは一体いくつまで cpuid できるかを調べる。 これは eax = 0 として cpuid した後の eax を見ればわかるようだ。 このとき、ebx, ecx, edx には、ebx:edx:…

関数呼び出しと %esp と %ebp

asm

例えば、こんなコード /* f1.c */ int add(int a, int b) { return a+b; } int main(int argc, char *argv[]) { int c = add(1, 2); return 0; } を書いて、 $ gcc -S f1.c -o f1.s とすると、f1.s は .text .globl _add _add: pushl %ebp movl %esp, %ebp s…

始まりはいつだって突然♪

asm

唐突にアセンブリを学びたくなった。 昨日から、C で簡単なコードを書いて gcc -S したものをを読んだり、 asm() をつかってインラインアセンブリを埋め込んだりして、アセンブリコードを理解しようとしています。 現時点まででわかったことで、特にやや理解…