アセンブラ 13at TECH
アセンブラ 13 - 暇つぶし2ch1:デフォルトの名無しさん
11/08/28 15:24:40.59
前スレ
スレリンク(tech板)

2:デフォルトの名無しさん
11/08/28 15:27:22.39
> アセンブラを勉強するのにいい、unix系の本がありますか?

「プログラミングの力を生み出す本」がわりと良かったのだが在庫切れ増刷未定のようだな。

3:デフォルトの名無しさん
11/08/28 17:58:47.52
カーネルのソースだろ

4:uy
11/08/29 06:06:41.24
>>3
こういう奴って
どのバージョンのカーネルのどのファイルのアセンブラソースさしてんだ

他の奴は答えなくていいから ちょっとお前答えてみろよ

で、そのソースファイルを読むとどういうアセンブラの知識がみに付くのか、言ってごらん


知ったかぶりでカーネルカーネルいってるなら 責任とって死ねよお前

5:デフォルトの名無しさん
11/08/29 08:14:26.79
おまえも2ちゃんねる荒らしの責任とって死ねよ

6:デフォルトの名無しさん
11/09/03 07:38:26.09
>>4
3じゃないがLinux 0.01のboot.s head.sなんかはよんでおいたほうがいいな。
16bit real modeでのBIOS interrupt callの使い方から、32bit保護モードへの以降
gdtr idtr等のディスクリプターテーブル、ページング機構の準備とか。
アセンブリの知識もあるけどx86アーキテクチャの知識も身につく

7:デフォルトの名無しさん
11/09/03 08:41:50.59
うんこぶりぶりあせんぶり

8:デフォルトの名無しさん
11/09/13 08:07:27.52
ザイログ形式以外身につかない

9:デフォルトの名無しさん
11/09/14 14:13:17.97
Z80をIntelニーモニックで解説している本で勉強すればいいんじゃね?
(俺はZilogで覚えちゃったからMOVとかわからんちん)

それ以上の奴をいきなり最初にやるのは敷居が高い気がする

10:デフォルトの名無しさん
11/09/14 16:15:16.64
マシン語レベルで同じなんだから
あとはコンパイラがザイログ形式を受け付けるか受け付けないかの違いでしかない

シンプルで使いやすいザイログ形式がこれだけ干されてるのが不思議だ
8080ニーモニック    Z80ニーモニック
MOV A,M       LD A,(HL)
MOV M,A       LD (HL),A 
LDAX B         LD A,(BC)
LDAX D         LD A,(DE)
STAX B         LD (BC),A
STAX D         LD (DE),A
LDA 1234       LD A,(1234)
STA 1234       LD (1234),A

LD一つで済むだろ

11:デフォルトの名無しさん
11/09/14 17:46:04.25
俺はアセンブラ程度は自分で作ったけど、全部「A=B」のような代入形式にしたな。

12:デフォルトの名無しさん
11/09/14 17:48:15.57
そういえば昔、SMCなんとかという8bitパソコンがそんな感じだったな

13:デフォルトの名無しさん
11/09/14 18:19:48.54
Zilogのはアセンブラがめんどくなるのでメモリ厳しい環境にやさしくない


14:デフォルトの名無しさん
11/10/07 17:08:46.15
0f 01 d8 vmrun
0f 01 d9 vmmcall
0f 01 da vmload
0f 01 db vmsave
0f 01 dc stgi
0f 01 dd clgi
0f 01 de skinit
0f 01 df invlpga

オペコード表には載ってないけどこんな命令あったのか

15:デフォルトの名無しさん
11/10/07 19:22:05.03
AMDV?

16:デフォルトの名無しさん
11/10/07 20:00:51.00
>>15
あーそれでしたどうもです
インテルのマニュアルには当たり前だけど何も載ってないから知らなかった

17:デフォルトの名無しさん
11/10/10 12:39:42.35
longモードで
40 01 00 rex add %eax,(%rax)
01 00 add %eax,(%rax)
この二つは実質的にどういう違いがあるんでしょうか?

18:デフォルトの名無しさん
11/10/10 13:32:41.88
x86で、アセンブラのソースとしては区別がつかない、ことなったバイナリ機械語列が
あることについての疑問?
特に差はないよ。昔からある。

19:デフォルトの名無しさん
11/10/10 13:52:38.18
REXプリフィクスのWビットを作った目的は
新たに増えた8本のレジスタの下位32/16ビットをアクセスするためということでいいんでしょうか?
オペランドサイズを32bitにするだけならREXプリフィックスなしの命令を使えば済むはずですよね
66とREX.Wの二つのフラグがあって分かりにくいです

20:デフォルトの名無しさん
11/10/22 07:51:13.15
C言語に挫折したので、アセンブラから修行しようと思います。
シンプルで学びやすく資料が多いものとなればZ80になりますでしょうか?
定番と呼べる解説書などあったら紹介してください。

21:デフォルトの名無しさん
11/10/22 10:45:32.09
CASL2(情報処理試験用の架空アセンブラ)という手もある
素人向けの資料に関してはかなり多い、試験対策の参考書が大量に出回ってるからな

22:デフォルトの名無しさん
11/10/22 12:06:05.99
CASLはやめとけ。

今時バイトアドレッシングじゃないアーキテクチャで入門の勉強しても、
後でわかりにくくなるだけだ。

23:デフォルトの名無しさん
11/10/22 12:57:19.77
この人のやりたいのはC言語じゃね?
C言語の予備知識つける程度にならあれで充分な気もするが

24:デフォルトの名無しさん
11/10/24 21:59:25.14
>>20
16bitマイコンが良いんじゃない?
秋月その他でキットが買えるルネサスのH8とか、TIのMSP430とか。
どちらも開発ツールは使いやすいとは言えないかもしれんが、
命令セット自体は割とシンプルで癖もなく使いやすい。

25:デフォルトの名無しさん
11/10/25 00:18:32.65
windowsに付いてくるdebugで十分だよ


26:デフォルトの名無しさん
11/10/25 11:44:17.71
いまさら8086の勉強しても…
確実にセグメントで挫折するぞ


27:デフォルトの名無しさん
11/10/25 19:26:24.25
はじめて読む486のx86-64版みたいな本はないのかな。洋書でもいいんだけど。

28:デフォルトの名無しさん
11/10/26 10:31:41.22
>>27
これは?
Professional Assembly Language (Programmer to Programmer) by Richard Blum
URLリンク(www.amazon.com)

あと新しめなのが
The Art of Assembly Language by Randall Hyde
URLリンク(www.amazon.com)

この本ではHLA (High Level Assembler)というPascalっぽい独自のマクロアセンブラを使ってるね。
URLリンク(homepage.mac.com)

29:デフォルトの名無しさん
11/10/26 22:12:46.54
>>28
勧めてくれてありがたいんだけど、違う種類の本みたい。

30:デフォルトの名無しさん
11/12/12 06:43:54.37
x86で処理実行するコアを指定する命令を教えてください

31:デフォルトの名無しさん
11/12/13 14:17:11.74
それはOSのコマンドだ

cpusetとかな

32:デフォルトの名無しさん
11/12/15 12:52:59.14
>>31
ありがとう。
こういうコマンドはどうやって実装してるのかな?
インテルのx86の説明書読んだけど、見つけられなかった。

33:不明なデバイスさん
11/12/15 14:47:12.08
読むもの間違ってる。CPUが勝手にプロセスをスイッチするわけないだろ?
関連する命令は載ってるだろうがそれだけでは何も解決しない。
自分でマルチプロセッサ対応のSMPマルチタスキングスケジューラーを作るなら、BSDかlinuxのカーネルのソースでも読めばいい。
OSがあるならAPI呼べ。

34:デフォルトの名無しさん
11/12/16 03:46:10.74
x86にどんな命令があるかって
インテルから説明書とか仕様書のコピーとかそんな感じのもの買わないと分からない?

35:デフォルトの名無しさん
11/12/16 04:53:53.02
>>33
ありがとう。
ちょっと興味があっただけなんで、時間があれば読みます。


36:デフォルトの名無しさん
11/12/16 06:45:33.41
>>34
落とせ
URLリンク(www.intel.com)
URLリンク(www.intel.com)

37:デフォルトの名無しさん
12/02/25 17:08:40.88
x86のアセンブラでプログラミングをしたいのですが、
アセンブラ用のエディタとかIDEとかって無いのですか?

38:デフォルトの名無しさん
12/02/25 18:28:46.64
前世紀にはあった


39:デフォルトの名無しさん
12/02/25 19:01:04.15
emu8086っての使ってた
15日ぐらいの試用でデバッガは使えなくなるけど自己解決しました

40:37
12/02/25 21:00:01.36
>>39
使ってみましたが、入力画面がバグりますね…。
ググったらFASMのfreshっていうのがけっこう高機能そうなのでこれ使ってみます。
64bit非対応なのが難ですが。


41:デフォルトの名無しさん
12/02/25 21:22:43.11
>>40
そうそう、選んだフォントによってはおかしくなる
自分に合ったのを使った方がいいね

42:デフォルトの名無しさん
12/03/17 17:02:20.04
アッセンブリブリ

43:デフォルトの名無しさん
12/03/17 19:35:52.22
>>37
WinASM
URLリンク(www.winasm.net)

RadASM
URLリンク(radasm.cherrytree.at)


44:デフォルトの名無しさん
12/03/17 20:14:03.22
>>37
Visual C++ 2010 Express でいいじゃん。
URLリンク(www.microsoft.com)

ASM も C/C++ も使えるし、VB や C# に浮気すんのもラクチンだし、マジオススメ。

45:デフォルトの名無しさん
12/03/18 13:52:08.72
>>37
インラインアセンブラがオススメやで?
逆アセンブルウィンドウとかも勉強になるしな
だから普通のVisual Studioちゃん

46:デフォルトの名無しさん
12/03/18 14:56:52.43
>>43
WinASM以外と凄いな。
あんまりコード書かないで簡単なダイアログアプリ作れちゃったよ

47:デフォルトの名無しさん
12/03/21 03:06:44.48
VirtualPCとかVMwareとかでアセンブルでオリジナルOSとか作れちゃったりする?

48:デフォルトの名無しさん
12/03/21 17:18:52.57
OSならC++でやった方が楽だろう

49:デフォルトの名無しさん
12/03/22 15:41:44.49
この程度のことを自力解決できない様では
何使っても結果は同じだろう


50:デフォルトの名無しさん
12/03/26 02:30:25.17
gasで最近.intel_syntax使い始めたんだけど、
いままで

movw $Label, %SI

って書いてたのを

mov SI, Label

にすると即値代入じゃなくなってしまう。
どうすればいいんだろう。

51:デフォルトの名無しさん
12/03/26 02:34:43.91
intel_syntaxやめればおk

52:デフォルトの名無しさん
12/03/26 02:37:12.06
masm系だとoffset Labelだけど
gasだとintel_syntaxでも$Labelじゃなかったっけ?
自信ないけど。

53:デフォルトの名無しさん
12/03/26 02:38:10.54
そうだ
movじゃなくてleaを使えば良いかも。
本質的な解決じゃないけど。

54:デフォルトの名無しさん
12/03/26 02:45:03.10
>>50
gasなんて所詮はコンパイラの出力をアセンブルする程度のツールなんだから、縁を切るチャンスと思うほうが吉。

55:デフォルトの名無しさん
12/04/14 10:08:42.94
初歩的な質問ですまないけど一つ教えて。
call label_name@xxx
(xxxは整数値)の@xxxは何を意味するのでしょうか?

見かけたのは↓の"call _GetStdHandle@4"などの表記です。
URLリンク(ja.wikibooks.org)

56:デフォルトの名無しさん
12/04/14 11:20:37.16
単にそういう名前の関数なだけです

57:デフォルトの名無しさん
12/04/14 22:23:48.97
呼び出し規約が __stdcall(WINAPI) の場合の、引数の合計サイズですよ。

58:55
12/04/15 03:55:29.17
>>57
thx.
そういう情報ってどこか集まっているサイトか資料(本とか)あるんですか?
ここで質問する前に結構探したつもりなんですが…。

59:デフォルトの名無しさん
12/04/15 16:20:37.25
>>58
検索するとしたら "アセンブラ 呼び出し規約" かなあ。
例えば↓とか。
URLリンク(ray.sakura.ne.jp)

60:デフォルトの名無しさん
12/06/21 21:51:25.92
BIOSでhello worldを表示するためのプログラムを作ってみたんですが、何も表示されません。
「mov (%bx), %al」コレがマズイ気がするのですが、表示する方法を教えてもらえませんか?

.code16
.text
_start:
.global _start
mov $msg, %dx
jmp loop1

loop:
mov $0x00, %bh
mov $0x07, %bl
mov $0x0e, %ah
int $0x10
loop1:
mov %dx, %bx
mov (%bx), %al
inc %dx
cmp $0, %al
jne loop

msg:
.ascii "Hello World\r\n\0"
end:
.org 0x200-2
.word 0xaa55


61:デフォルトの名無しさん
12/06/21 22:13:23.04
>>60
動作環境ぐらい書いとけ(つーかその辺りから分かってないだろ?)

62:デフォルトの名無しさん
12/06/21 22:50:24.78
>>61
vmwareです。
正直あまりわかってないけど、昔は同じようなプログラムを作った。

63:60
12/06/21 22:53:34.34
概ねこのサイトのコピペなんですが、どれもちゃんと動かないです。
何も表示されなかったり、文字化けしたり…
URLリンク(news.mynavi.jp)


64:デフォルトの名無しさん
12/06/21 23:21:42.01
QEMUは「qemu -fda as_bios3.com」で起動します。

65:60
12/06/21 23:33:32.01
知ってたらでいいんで、文字列の目の前でcallする以外のスマートな方法ありますか?
FreeBSDのブートプログラム見たらそんなのないけど、アセンブラの知識不足でよくわかりません。

66:デフォルトの名無しさん
12/06/21 23:38:44.15
>アセンブラの知識不足
パソコンのBIOSについての知識不足?

67:60
12/06/21 23:40:09.64
それも不足してると思います。

68:デフォルトの名無しさん
12/06/21 23:43:24.94
63に書いてあることはやったの、DOS窓のほう?

69:60
12/06/21 23:46:57.54
一番下以外はvmwareで試しました。(おかしな表示になりました)。
Windowsじゃなくて、LinuxなんでDOS窓では動かしてません。
一番下のは明日やります。

アドバイスくれた人ありがとう。
釈然としませんが、とりあえずcallを使うと上手く行くらしいことだけわかりました。

70:デフォルトの名無しさん
12/06/21 23:57:39.28
linuxならdosemu上でやってみたら

71:60
12/06/22 00:10:17.98
dosemuインストールしましたが、使い方を調べてみます。

72:60
12/06/22 01:07:07.83
URLリンク(d.hatena.ne.jp)
この変見てるとcall使ってないんですが、nasmとgasの違いなのでしょうかね?

73:デフォルトの名無しさん
12/06/22 01:14:32.98
int 0x10
がBIOSコール

74:60
12/06/22 01:16:06.81
>>73
それはわかったのですが、なぜか文字化けor表示されないのです。
>>63のサイトでは、callを使えとあるんですが、いまいち理由がわからず困っています。


75:60
12/06/22 01:24:53.38
コンパイルオプションの問題でした。
スレを汚してすみません。

76:デフォルトの名無しさん
12/06/22 03:35:26.45
callに呼応しているのはpop %bp。
IA32ではipを直接movしたりip相対でアドレシングすることができないから
その代わり。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch