[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/24 11:23 / Filesize : 211 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

アセンブラ… (゜□゜) ↑アッー!↓



1 名前:デフォルトの名無しさん [2006/05/24(水) 01:43:34 ]
アセンブラ全般に関するスレッドです。

【前スレ】
アセンブラ… ヽ(゚∀゚)ノフォーウ!
pc8.2ch.net/test/read.cgi/tech/1132761638/

過去ログは>>2辺り

902 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 02:50:44 ]
>>900
もしかして
00000011
ってなると思ってる

903 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 03:28:06 ]
>>902
CFが1で、00000010になるのではないかと。

>>901
あーそっか。-63か-64かは知らないが、絶対値がこれ以下なら
上から2番目のビットも1だから負のままだし、
絶対値がそれ以上の場合にはオーバーフローになるわけね。
tnx.

904 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 01:03:12 ]
「アセンブリ言語の教科書」読んでてよく分かんないのだけど、
MOV AH, 4CH
INT 21H
とシステムコールを利用した時、スタックに値があれば、
終了するのではなく、その値のアドレスに飛ぶのでしょうかね?
Cで例えるなら、exit()でなくreturn相当なのかな。

905 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 03:40:16 ]
exitであってる
exit(AL)になる

returnはret

906 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 06:28:00 ]
>>904
前提が書いてないから勝手にMS-DOSと仮定するが、
そのシステムコールではスタックは関係ない。

907 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 21:23:33 ]
>>905
>>906
どうもです。&& 環境書いてなくてすまんかったです。

しかし、exitであるならば、あの本のコードは少し変なのかな。
……と思ったら、web上の正誤表見たら訂正されてたorz

908 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 17:26:54 ]
#define EMULATE_WINDOWS while(1) { __asm__("cli hlt"); }

ちょwwww

909 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 17:31:25 ]
何ですかそれは

910 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 17:33:45 ]
あてずっぽで言うと、
EMULATE_WINDOWSを展開すると、haltするコード

だが、笑い所がいまいち分からない
だってコードの使い所が分からない



911 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 17:36:05 ]
Windowsのエミュレート=ハングアップっていいたいんだろう。
面白くもなんともないが。

912 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 19:45:29 ]
アセンブラ覚えたての消防がやってる。

913 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 12:29:15 ]
特定の並びの特権命令をトラップしてエミュレーターに移行するんだろ
よくある実装だ

914 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 20:41:18 ]
「初めて読む8086」読んでるんだけど、
linuxなんでdebugコマンドが無くて試せず辛い。
同じようなコマンドにはどのようなものがあるでしょうか。

915 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 23:05:52 ]
>>914
たぶん期待する物はない。
gdbはそういう用途では使いものにならんからのう。
adbとかたまに欲しくなりますな。


916 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:21:17 ]
言われて初めてadbが無いことを知った。

昔のunixには標準で入ってたんだがなぁ。ccが消えた頃から無くなったんかねぇ。


917 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 02:13:06 ]
>>915
うーん、そうなのですかぁ。
なんとも残念無念。

918 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 21:40:54 ]
フリーのDOSはいろいろあるけど、その中には1つくらいDEBUGを持ったものもないか?

919 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 21:51:01 ]
つ ttp://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/debug/

920 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:07:35 ]
つーかDOS上で動くdebug互換(?)デバッガなら結構ある。



921 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 00:12:45 ]

こんばんはこんばんは!
初級Javaプログラマだけど
アセンブラを勉強するための環境って最近はなにが多いの?
アセンブラってCPUによって違うんだよね?
x86系がほとんどなの?
64bitのはまた書き方違ってくる?




922 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 00:46:02 ]
俺はアセンブリの勉強はCASLだったな
初心者向けの書籍がこれほど多いアセンブリ言語も無かろう

923 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 01:11:16 ]
>情報処理技術者試験の教材用のアセンブリ言語。
>正式名称は,CASL II(きゃすうるつー)。

へぇー
でも実用的じゃないアセンブリよりも、Intel系のアセンブリをやったほうが
いい気がするんだけど、どっちでも勉強になるからかわんねって感じなのかな



924 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 01:25:55 ]
CASL II は午後のテストの点稼ぎになるからある意味実用的。
x86のアセンブラは今や一部の人を除いて利用される頻度は少ないのである意味あまり実用的でない。

925 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 01:27:26 ]
どっちも大した役に立たないという点では似たようなもんだな。

926 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 01:33:26 ]
んじゃあ、いま一番人気のアセンブラはなに?

927 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 01:40:58 ]
CELL。
つーか、誰かやってくれ。今なら給料出すから。

928 名前:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6 mailto:sage [2007/02/14(水) 01:44:08 ]
フィックスター社員乙

x86アセンブラだろ常識的に考えて。

929 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 01:44:25 ]
あぁPS3にものってるやつか
でも、初心者には敷居がたかそうだなぁ

930 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 01:56:34 ]
まあでもx86あたりもMMXやSSE使いたい程度ならemmintrin.hで済むしなぁ。



931 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 02:00:01 ]
x86は人気つーより手近なPCで出来るから数が多いだけだろ。

932 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 02:03:56 ]
これからゲームプログラマになるならCELL?

933 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 02:14:40 ]
>>932
普通はコンパイラでやるだろ。
PowerPC系のアセンブラも覚えておいて損はないだろうけど、
これから未来永劫CELLが使われ続ける訳でもなし。

934 名前:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6 mailto:sage [2007/02/14(水) 02:20:32 ]
まあ最初はCOMET2/CASL2でいいですね

935 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 02:24:01 ]
まあ、バイナリエディタで機械語直書きからアセンブラ、コンパイラ組み込み関数までいろいろ書き方はあるけど、
自分が使うCPUにどういう命令があって、その実行にどれだけのコストがかかるかという知識がいらなくなる時代はまだ当分こないだろうな。

重要なのはそういう知識であって、アセンブラの文法とか機能はわりとどうでもいい。

936 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 02:25:59 ]
そういう時代がきちゃったら、プログラマは廃れちゃうな
実力が

937 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 10:06:54 ]
CASL2のバイブル的な本ってどれですか。
入門書とかじゃなくて。
詳しく買いてるやつ。

938 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 13:03:47 ]
最近やたらめったらいろんなアーキテクチャの仕事があるんで
インストラクションセットを覚える暇すらない
みんな8bitとか16bitとかだけど
命令表を斜め読みして
「げ、左シフトねーじゃんこのCPU」とか
「符号反転ねーよ」とか
「乗算命令じゅーよー」だの
「わは。レジスタ4つ、こっちは32個ー」とか言いつつテンパってる

939 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 13:55:11 ]
>>938
でも一つもアセンブリ齧ってないとそれも判らないんだよね

940 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 16:04:08 ]
>>938
たぶんそう思ったヤツが高級言語作ろうと思ったんだろうな



941 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 16:28:30 ]
>>938
4つのせりふのうち3つは何だかわかった。

orz


942 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 17:22:05 ]
しかもハーバード型、ノイマン型も満遍なく取り揃えられておりますorz

943 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 23:04:01 ]
  そだ  |------、`⌒ー--、
  れが  |ハ{{ }} )))ヽ、l l ハ
  が   |、{ ハリノノノノノノ)、 l l
  い   |ヽヽー、彡彡ノノノ}  に
  い   |ヾヾヾヾヾヽ彡彡}  や
  !!    /:.:.:.ヾヾヾヾヽ彡彡} l っ
\__/{ l ii | l|} ハ、ヾ} ミ彡ト
彡シ ,ェ、、、ヾ{{ヽ} l|l ィェ=リ、シ} |l
lミ{ ゙イシモ'テ、ミヽ}シィ=ラ'ァ、 }ミ}} l
ヾミ    ̄~'ィ''': |゙:ー. ̄   lノ/l | |
ヾヾ   "  : : !、  `  lイノ l| |
 >l゙、    ー、,'ソ     /.|}、 l| |
:.lヽ ヽ   ー_ ‐-‐ァ'  /::ノl ト、
:.:.:.:\ヽ     二"  /::// /:.:.l:.:.
:.:.:.:.:.::ヽ:\     /::://:.:,':.:..:l:.:.
;.;.;.;.;;.:.:.:.\`ー-- '" //:.:.:;l:.:.:.:l:.:
難しい問題ほど、解けると達成感あるのよね。

944 名前:デフォルトの名無しさん [2007/02/17(土) 21:49:42 ]
extern unsigned int crcTable[];
unsigned int updateCRC32( unsigned char *src, unsigned int size, unsigned int crc )
{
while ( size-- )
crc = ( crc << 8 ) ^ crcTable[ ( crc >> 24 ) ^ *src++ ];
return crc;
}
誰かこれを高速化して下され。
Cの範囲じゃやはりこれが限度っぽい。
後はアセンブラしかなさそうなのです。

945 名前:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6 mailto:sage [2007/02/17(土) 22:05:55 ]
せめてここまでコード最適化してからだね。
アルゴリズムの改良を試みずにアセンブラに頼るのは知性の敗北
www.intel.co.jp/jp/developer/technology/magazine/communications/slicing-by-8-0306.htm


コードはこちらからどーぞ
sourceforge.net/projects/slicing-by-8

946 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 22:26:40 ]
移植性のないポインタ変換とエンディアンの決め打ちがあるから
どちらかというとアセンブラで書くべきアルゴリズムだけどな

947 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 22:35:18 ]
>>937
CASLなんて通過した後は一切触らないから
毎年IPAが配ってる案内書に付属してる仕様書だけで十分。
命令が読めりゃ後は何も困ることないでしょ。

948 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 05:22:21 ]
>>944 のコードのままでも、do whileにしただけで1命令は速くなるね。

949 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 06:47:01 ]
mov eax, crc
mov ecx, size
mov esi, src
rep crc32


950 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 08:06:08 ]
>>948
処がだ、最近のコンパイラはforに特化した最適化をすることが多いから一概には言えない。



951 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 14:09:14 ]
最近のコンパイラは賢いからなぁ
ていうかCPUの内部が複雑杉

952 名前:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6 mailto:sage [2007/02/18(日) 14:33:51 ]
>>949
Nehalemキター

953 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 14:50:04 ]
コンパイラ何よ?

954 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 07:54:37 ]
ファミ通にアセンブラ経験者の求人が乗っててひいた

955 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 18:22:15 ]
アセンブラですか・・・漫画は読んだんだけどOKですかね?
とか?                          Z80でいいなら・・・(・∀・)

956 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 20:26:41 ]
いまさらZ80みたいな変態CPUは無いだろう。


957 名前:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6 mailto:sage [2007/02/20(火) 00:44:35 ]
どうみてもCell一択です

Wiiでもやるんかな、性能稼ぐために

958 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 02:09:12 ]
Wiiは既に死に体だからアセンブラ駆使してまでゲーム作んないぞ。

959 名前:・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6 mailto:sage [2007/02/20(火) 02:54:02 ]
>Wiiは既に死に体だから
それはひょっとしてギャグで言ってるのか?

960 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 04:53:08 ]
>>956 川崎の石は現役ですよ。日立の64180はさすがに作ってないみたいだけど。



961 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 06:07:13 ]
>川崎の石
あの変態なZ80に、更に変態なメモリ管理命令増やした奴だっけ?
#いや、割りと好きですがw

>>957
この前は漏れがそう書いたら社員乙とか書かれた気がするが……

962 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 06:52:22 ]
>>957
今時アセで組む必要があるなんて
余程余裕のない組み込みか
Cellみたいな変な石使う時だろうしそうかもね

963 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 08:31:10 ]
質問です。ml.exeのインラインアセンブラを使って汎用レジスタと
セグメントレジスタの値を表示したいのですが、次のようなコードで
おkですか?

int eaxv, ebxv, ecxv, edxv, esiv, ediv, ebpv, espv;
wchar_t csv, dsv, ssv, esv, fsv, gsv;
eaxv = ebxv = ecxv = edxv = esiv = ediv = ebpv = espv = 0;
csv = dsv = ssv = esv = fsv = gsv = 0;
__asm {
mov eaxv, eax;
mov ebxv, ebx;
mov ecxv, ecx;
mov edxv, edx;
mov esiv, esi;
mov ediv, edi;
mov ebpv, ebp;
mov espv, esp;
mov csv, cs;
mov dsv, ds;
mov ssv, ss;
mov esv, es;
mov fsv, fs;
mov gsv, gs;
}
printf( "EAX=%08X EBX=%08X ECX=%08X EDX=%08X\n", eaxv, ebxv, ecxv, edxv );
printf( "ESI=%08X EDI=%08X EBP=%08X ESP=%08X\n", esiv, ediv, ebpv, espv );
printf( "CS=%04X DS=%04X SS=%04X ES=%04X FS=%04X GS=%04X\n", csv, dsv, ssv, esv, fsv, gsv );


964 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 10:36:56 ]
片っ端から変数に代入しようとすると、結局レジスタを消費してしまって正しく表示できないと思われ。
全部纏めてでなく、一個ずつやらないとダメなんでない?
#つーか、デバッガで見ることはできないのか?

965 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 15:47:34 ]
>944
速いかどうかは、解らないが、とりあえず国産CISCCPU(32bit?)の場合

#pragma PARAMETER update32(A0,R3R1,R2R0)
----
_updateCRC32:
$updateCRC32:
PUSHM A1
__loop:
MOV.W R2,A1
SHL.W #-8,A1

XOR.B [A0],A1
SHL.L #2,A1 ; Long Index
SHL.L #8,R2R0
XOR.L _crcTable[A1],R2R0
ADDX #1,A0
SUBX #1,R3R1
JNZ __loop

POPM A1
RTS


966 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:50:36 ]
>>964
スタックに突っ込めばいいんじゃないかな。
でもってespを適当な構造体のポインタに格納したりして。

967 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 19:54:37 ]
>>963
ml.exeのインラインアセンブラってなんだよ。 等の細かいツッコミは置いといて。
表示するだけならそれで良い。

アセンブリ出力(VC++なら/FAs)を出して確認すれ。

968 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 23:42:56 ]
インラインasm使う必要すらないじゃん

969 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 02:43:28 ]
>>964,>>966,>>967,>>968
みなさん、貴重なアドバイスをありがとうございます。
.asmファイルを見てみると、インラインアセンブラに対応するコードは
下のようになっていました。
余分な処理はないようなので、一応問題なくレジスタの内容を
ストア(?)できているようです。

mov DWORD PTR _eaxv$[ebp], eax
mov DWORD PTR _ebxv$[ebp], ebx
mov DWORD PTR _ecxv$[ebp], ecx
mov DWORD PTR _edxv$[ebp], edx
mov DWORD PTR _esiv$[ebp], esi
mov DWORD PTR _ediv$[ebp], edi
mov DWORD PTR _ebpv$[ebp], ebp
mov DWORD PTR _espv$[ebp], esp
mov WORD PTR _csv$[ebp], cs
mov WORD PTR _dsv$[ebp], ds
mov WORD PTR _ssv$[ebp], ss
mov WORD PTR _esv$[ebp], es
mov WORD PTR _fsv$[ebp], fs
mov WORD PTR _gsv$[ebp], gs


970 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 14:15:18 ]
WindowsだったらGetThreadContextで一発というオチ。



971 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 14:40:27 ]
GetThreadContextを自スレッドに呼び出すと呼び出しは成功するけど中身の保証は無し

972 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 00:05:17 ]
最近勉強中でちょっと悩みがあります。
メモリのアドレスを特定のルーチンだけで利用するんですが、
スタックに入れてpush,popするべきなのか、
メモリから読んでまた書き戻すべきなのか、
どっちがいいんでしょう?
値を更新するので所謂Cのポインタなのですが。
やはりスタックの方が若干速そうなのですがその内バグりそうです。
慣れるまではメモリを使うべきでしょうか?

973 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 00:10:01 ]
>>972
レジスタ

974 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 01:12:27 ]
65816アセンブラの勉強中で詰まってしまいました。
例えば
AD E0 11 LDA
で11E0の値が260以上ならXにジャンプ
260以下ならYにジャンプという命令はどのようにしたらいいですか?
AD E0 11
CD 60 02
F0 04
5C XX XX XX
5c YY YY YY
とやりましたがゼロフラグを使っての分岐なので
260だったときでした。
「260以上はXにジャンプ、260以下はYにジャンプ」の分岐の方法を
何方かご教授下さい。

975 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 01:34:34 ]
>>974
65816は知らんが、ニモニック表をよく見てみ。
条件分岐命令にゼロフラグチェック以外にもキャリーフラグチェックのがあるはずだから。

976 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 03:01:21 ]
>>974
おまい、OKWaveでも同じこときいてたな。>>975の説明でも
理解できなさそうだ。

なあ、206以下と260以上で分けるていってるけどさ、「260」のときは
どっちに分岐させんだいw



977 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 08:47:17 ]
>>975
65816ではこうやって覚えとけばいい。
同じ(A = CMP xxxx):BEQ F0
以外(A ≠ CMP xxxx):BNE D0
未満(A < CMP xxxx):BCC(BLT) 90
以上(A ≧ CMP xxxx):BCS(BGE) B0

あと、CD 60 02だとCMP $260、つまり$260番地の内容との比較になる。
即値と比較がしたかったらC9 60 02とやるべき。


978 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 09:25:36 ]
>>975
フラグの意味がわかってませんでした。

>>976
260以下と260未満でした。
すみません。

>>977
ありがとうございます!
無事260以上の命令が出来ました。

皆様お忙しい中有難うございました。

979 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:03:34 ]
> 260以下と260未満

980 名前:デフォルトの名無しさん [2007/03/17(土) 23:56:27 ]
あげ



981 名前:デフォルトの名無しさん [2007/03/21(水) 00:07:46 ]
age

982 名前:デフォルトの名無しさん [2007/03/21(水) 17:34:48 ]
NASMでSSE3やそれ以上は使えるのですか。

983 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:52:27 ]
マクロアセンブラならどんなニモニックだろうと(自分で追加すれば)使える。

984 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 20:25:57 ]
まず勉強






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<211KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef