1 名前:デフォルトの名無しさん [2011/08/28(日) 12:36:52.66 .net] 初心者OK!質問大歓迎!のアセンブラのスレッドです。 基本情報の勉強中の人、PICやH8を勉強中の学生などなど…
2 名前:デフォルトの名無しさん mailto:sage [2011/08/28(日) 13:59:51.60 .net] このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
3 名前:デフォルトの名無しさん mailto:sage [2011/08/28(日) 14:07:20.38 .net] アセンブラ最高や! C言語なんか最初からいらんかったんや!
4 名前:デフォルトの名無しさん mailto:sage [2011/08/28(日) 14:18:11.54 .net] マシン語最高や! アセンブラなんて最初からいらんかったんや!
5 名前:デフォルトの名無しさん mailto:sage [2011/08/28(日) 14:20:20.98 .net] アセンブラを勉強するのにいい、unix系の本がありますか?
6 名前:デフォルトの名無しさん mailto:sage [2011/08/28(日) 15:25:38.65 .net] だいぶ前に落ちたっきり次スレが立たなかったアセンブラスレの 次スレを立てましたので、以後そちらで。 hibari.2ch.net/test/read.cgi/tech/1314512680/l50
7 名前:デフォルトの名無しさん mailto:sage [2011/08/28(日) 19:26:11.59 .net] >>6 初心者用らしいしここでいいんじゃね
8 名前:デフォルトの名無しさん mailto:sage [2011/08/28(日) 19:53:10.57 .net] 初心者用なら質問用テンプレが居るな、特にアセとなると 石、アセンブラが何か分からんと答えられんケースあるし 【CPU】 アセンブラではCPU(通称「石」)によって回答が全く違ってくることも多いので必須です。 まったく分からなくても「Windowsが動くCPUです」など、分かるだけのことを書いてください。 【アセンブラ】 これも分かれば。コマンド名とかでもいいです。 あとは何をテンプレにすべき?
9 名前:デフォルトの名無しさん mailto:sage [2011/08/28(日) 21:36:27.48 .net] 書籍なんかがあればいいと思うけど
10 名前:デフォルトの名無しさん mailto:sage [2011/08/31(水) 12:03:39.49 .net] 質問します 『独習アセンブラ』という本を買って来て、文字を出力するプログラム(p.5)をつくってみたのですが、うまく動きません nasm -f bin dispchar.asm -o dispchar.com こう入力してから dispchar.com を動作させると、つぎのように表示されました このバージョンの \dispchar.com は、実行中の Windows のバージョンと互換性がありません。コンピューターのシステム情報を確認して、 プログラムの x86 (32 ビット) のバージョンと x64 (64 ビット) のバージョンのどちらが必要か確認してから、ソフトウェアの発行元に問い合わせてください。 windows 7 64 bit でとりあえず動作させたいのですが、どうすればよいのでしょうか? 【CPU】 intel core i5-2400 【アセンブラ】 NASM version 2.09.10 compiled on Jul 15 2011
11 名前:10 mailto:sage [2011/08/31(水) 12:05:03.29 .net] dispchar.asm のソースを一応載せておきます >cat dispchar.asm ; dispchar.asm mov ah, 02 mov dl, 31h int 21h mov ah, 4Ch mov al, 0 int 21h
12 名前:デフォルトの名無しさん mailto:sage [2011/08/31(水) 13:17:22.23 .net] >>10 それに乗ってるのは16bitのコードだから、win7 64bitでは動かないよ アセンブラも多分16bitだから動かないんじゃないかな?
13 名前:デフォルトの名無しさん mailto:sage [2011/08/31(水) 22:09:56.92 .net] >>12 えっ、そうなのですか 残念です では64bitの環境で学習できるよいサイトはあるでしょうか?
14 名前:デフォルトの名無しさん mailto:sage [2011/08/31(水) 22:13:55.85 .net] NASMはWin32版もある
15 名前:デフォルトの名無しさん mailto:sage [2011/09/01(木) 02:22:30.05 .net] ピックやれピック
16 名前:デフォルトの名無しさん mailto:sage [2011/09/01(木) 21:14:57.42 .net] >>13 32bitアセンブラコードは。。。 ほとんどwin32API呼び出しで、アセンブラの意味はないしねぇ。。。 >>15 の言う通り、PICマイコンでアセンブラした方が遊べると思うけど、こっちのアセンブラが64bitOSで動くかも不安が在るな。。。 ためして見た人居る?
17 名前:デフォルトの名無しさん mailto:sage [2011/09/01(木) 21:22:48.86 .net] 実ハードで動かすことにこだわらず、エミュ使うのも手だと思うが。
18 名前:デフォルトの名無しさん mailto:sage [2011/09/01(木) 21:28:50.15 .net] xpモードで開発&実行
19 名前:デフォルトの名無しさん mailto:sage [2011/09/01(木) 21:57:17.07 .net] アセンブラで、C言語のcase文のように書きたいのですけどどう書けばいいですか? また、イフ文のようにも書きたいんですけどどう書けばいいですか?
20 名前:デフォルトの名無しさん mailto:sage [2011/09/01(木) 21:58:06.62 .net] あ、開発環境はMPASM PIC16F84Aです
21 名前:デフォルトの名無しさん mailto:sage [2011/09/01(木) 23:27:06.89 .net] 基本的には無理。 定番としてはテーブルジャンプだけど、その石でできるかどうかは知らない。
22 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 00:57:45.07 .net] call adressを機械語にすると E8 77 77 77 77 みたいになるけど この77777777実際のアドレスと違うんだよね どういう規則でこのアドレスは算出されてるの?
23 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 03:08:10.28 .net] call命令っつっても対応するオペコードは複数あるんだよ。 E8の場合はIPからの相対アドレスへのnear call。
24 名前:デフォルトの名無しさん mailto:sage [2011/10/02(日) 05:49:48.47 .net] 相対ジャンプの場合は、石によるけど、ジャンプ命令のアドレスからのオフセットか、 その次の命令のアドレスからのオフセット(8086はどっちだっけ)。
25 名前:22 mailto:sage [2011/10/02(日) 05:56:17.04 .net] 8086はWindowsのことだよね? 逆算してみたら、次のコードの開始位置からの相対位置ですね
26 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 15:03:31.57 .net] BSR ラベル:16 で書くのと JSRではどっちのがメモリ食うのか分からないです。 長いならJSRですかね?
27 名前:デフォルトの名無しさん [2011/12/14(水) 04:55:52.34 .net] 石の種類によるけど、BSRは3〜4バイト、JSRは4〜6バイト。 BSR ラベル:8 と書ける石もあって、この命令は2バイト。 でも、一般的にBSRのほうがJSRよりもマシンサイクルが多い(=遅い)。 その差まで気にかけるほどシビアな条件にはならないようにハード選定時点で 考えられるはず。 ってもう見てないよな(w
28 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 18:44:46.56 .net] 暇なんでやってみた win32だとCでやるのと変わらんわ・・・ ;ml hello.asm /link /subsystem:console .386 .model flat, stdcall GetStdHandle proto :DWORD WriteConsoleA proto :DWORD,:DWORD,:DWORD,:PTR,:DWORD ExitProcess proto :DWORD includelib kernel32.lib .data STD_OUTPUT_HANDLE EQU -11 hello DB 'hello, world',0Dh,0Ah,0 .data? OUTLEN DWORD ? .code mainCRTStartup proc local STDOUT :DWORD invoke GetStdHandle,STD_OUTPUT_HANDLE mov STDOUT,eax invoke WriteConsoleA,STDOUT,offset hello,14,offset OUTLEN,0 invoke ExitProcess,OUTLEN ret mainCRTStartup endp end
29 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 15:57:39.75 .net] 64bitOS上の32bitアプリで関数コールにpushad popadだけ書いてretしたらエラー落ちするのは何が問題なんでしょう?
30 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/03/31(土) 17:38:06.65 .net] >>29 .386 .model flat .code _start: call testsub ret testsub: pushad popad ret end _start ml test.asm /link /subsystem:console Vista 64bit で動かしたけど、なんも問題ないっぽいけど。
31 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 01:39:15.92 .net] たのしそうだなー
32 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 21:06:07.23 .net] >>30 それ64bitOS上の64bitコードじゃね?
33 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/01(日) 21:31:03.44 .net] バカ発見
34 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 16:38:17.56 .net] キチガイ発見
35 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 00:23:22.00 .net] アフォは自己紹介をする。
36 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/09(月) 01:41:07.82 .net] >>35 早く自己紹介して
37 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 13:51:03.49 .net] アセンブリをCのソースに変換するフリーのデコンパイラって存在しますか?
38 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 13:58:08.54 .net] 存在しますよ。
39 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 14:00:48.85 .net] 検索キーワードを教えちくり
40 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 14:17:23.30 .net] 英語で検索すればおk
41 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 14:18:27.72 .net] なるほど ありがとう!やってみる
42 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 19:06:18.83 .net] フローチャート書いてるんですが スタック操作命令のPOP,PUSHってどうやって書けばいいですか? PUSHの場合これ出会ってますか? SP←0+(GR1)
43 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 19:27:42.00 .net] フローチャートはコーディングじゃないから、箱(処理)の中に「GR1をスタックに保存」「GR1をスタックから復帰」とか、自分で分かりやすい風に書きゃいーよ。
44 名前:42 mailto:sage [2012/05/02(水) 19:34:10.73 .net] >>43
45 名前: そうなんですか。 ありがとうございます [] [ここ壊れてます]
46 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 00:55:55.00 .net] 68kの性能のいいディスアセンブラないですか? 例えばデータの直後に命令があったらそれを識別できるくらいのがありがたいのですが
47 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 20:56:41.58 .net] サブルーチンからメインルーチンヘジャンプ命令ってプログラム的には問題なんでしょうか? たとえば EXE START LOOP IN BUF,LEN CALL DISP RET DISP LD GR1,LEN LAD GR2,1 CPL GR1,GR2 JZE LOOP RET BUF DS 256 LEN DC 1 END これの場合風呂チャートはどう書けばいいでしょうか?
48 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 22:13:45.87 .net] 何これ、CASL?
49 名前:46 mailto:sage [2012/05/13(日) 12:11:07.96 .net] >>47 CASL2です
50 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 15:50:00.32 .net] >>46 まず第一に、そのコード自体がまずい。 コール、リターンというのがどういう動作なのか理解してる? コールは次の命令のあるアドレスをスタックに積み、ジャンプする。 逆にリターンはスタックから1つ取り出して、そのアドレスにジャンプする。 そのコードだとLOOPへジャンプする度にスタックを食いつぶしていくことになる。 本来ならループされた数だけ戻り先の処理が行なわれてしまい、戻った際の処理もおかしくなるところ。 (そのコードの場合は戻り先がたまたまRET…つまり、何もせずにリターンするために一応動くことには動くのだが)
51 名前:デフォルトの名無しさん [2012/05/19(土) 14:27:41.30 .net] inline void __fastcall sincos( const float& angle, float& sin, float& cos) { _asm { fld angle fsincos mov edx, [cos] mov ecx, [sin] fstp dword ptr [edx] fstp dword ptr [ecx] } } これ正しい値を返さないんだけど、何か間違ってますか?(VC++2010EESP1)
52 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 14:32:51.37 .net] >>50 自分でトレースすりゃすぐに分かりそうなもんだが、何故人に訊く?
53 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 14:42:32.19 .net] fldの所でdword ptrは付けないの? そのままだとtbyte ptrがデフォルトになっちゃうと思うんだけど
54 名前:50 [2012/05/19(土) 14:52:50.88 .net] angle 0.78539819 ↓こうなる。何だよDENって。。 cos 1.0000000 sin 1.997e-039#DEN ↓正しくはこう cos 0.70710677 sin 0.70710677 >>51 さっぱりわからんとです。ハード的なコアな問題じゃないかと思って聞いた。 >>52 fld dword ptr [angle] こうしたが同じだった。
55 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 14:54:22.87 .net] >>53 悪い間違った 勝手にfldのサイズをインラインアセンブラが類推してdword ptrにしてくれた 正しくは _asm { fld dword ptr angle fsincos lea edx, cos lea ecx, sin fstp dword ptr [edx] fstp dword ptr [ecx] } だね movではアドレスではなく中身を取ってきてしまう
56 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:01:10.67 .net] また間違った 今起きたばかりで脳がボケている &だから参照なんでアドレスが入っているんだね だから最初のfldもアドレスを先にロードしてそこからさらに読み取ればうまくいった _asm { mov eax, angle fld [eax] fsincos mov edx, cos mov ecx, sin fstp dword ptr [edx] fstp dword ptr [ecx] }
57 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:04:11.36 .net] >>53 DENはおそらくデノーマル数だろうな。
58 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 15:54:13.22 .net] >>53 >さっぱりわからんとです。ハード的なコアな問題じゃないかと思って聞いた。 ステップ実行すりゃ、一番最初の fld angle で失敗してることくらい一目瞭然だろ。 ひょっとしてデバッガの使い方分からんのか?
59 名前:50 mailto:sage [2012/05/19(土) 21:08:19.23 .net] >>55 そのコードで直りました!ありがとう! >>57 うちのVCたんはレジスタ表示出来ないの お茶目な奴なんだよ
60 名前:デフォルトの名無しさん mailto:sage [2012/05/19(土) 21:16:04.76 .net] >>58 >うちのVCたんはレジスタ表示出来ないの ツール(T)→設定(S)→上級者用の設定 にチェック入れてる?
61 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 02:07:11.52 .net] x86の浮動小数点演算って変な格好をしてるよなあ 8087というコプロセッサを使うために作られたアーキテクチャとは言えそのまま引きずってるし SSE2を使うと精度は64bitに落ちるが一応倍精度演算出来るもんな x64も最初はFPUをコンテキストスイッチで保存しない計画だったんでしょ 全部SSE2に切り替えようとした でもどっから圧力が掛かったのか社内の意見で反発されたのか、64bitOSはFPUを保存する事にした
62 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 02:11:57.46 .net] あ、ちなみにSSE2には超越関数はもちろんないが、プログラムで組んでもFPUと互角か FPUより速い場合が今のCPUでは普通
63 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 03:09:57.58 .net] >>60-61 日本語でおk
64 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 04:45:01.70 .net] >>62 意味が分からないなら無理に読まなくてもいいよ
65 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 05:14:03.65 .net] >>63 > 8087というコプロセッサを使うために作られたアーキテクチャとは言えそのまま引きずってるし 「〜とは言え〜し」の使い方が異常。 > SSE2を使うと精度は64bitに落ちるが一応倍精度演算出来るもんな IEEE754でいうところのDouble precisionなのに何が「一応」なのか意味分からん。
66 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 05:54:25.35 .net] 難癖付けるのだけはうまいな Intelは互換性を重視したために今のような汚いアーキテクチャになった これは意図的に選んだ道だ いくらでも綺麗に設計しなおすチャンスはあったが敢えてそうしなかった MSのVCのlong doubleが64bitであるようにFPUを切り捨てる計画は かなり前からあったようだがIntelに押し切られるような格好でOSの設計 だけは譲られなかったのだろう それからFPUの内部演算は全て80bitだ だから64bitで計算するのと結果が異なる場合がある
67 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 06:11:06.67 .net] >>65 >Intelは互換性を重視したために今のような汚いアーキテクチャになった 8086の頃から汚かったゾ? >これは意図的に選んだ道だ 「今のような汚いアーキテクチャになった」のは「結果」であって、「選んだ道」ではないが。
68 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 06:19:38.94 .net] >>65 >いくらでも綺麗に設計しなおすチャンスはあったが敢えてそうしなかった 432とか、80860とか、Itaniumとか、ハイエンド製品についてアーキテクチャを見直すチャレンジは何回かやってるよ。
69 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 12:43:10.15 .net] どこに言っても言葉尻だけ捉えて重箱の隅をつつくようなアホがいるから対応策は一つ 66 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん 67 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
70 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 14:13:12.69 .net] >>67 は言葉尻ではないよな
71 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 14:47:18.99 .net] 69 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
72 名前:デフォルトの名無しさん [2012/05/26(土) 23:12:40.96 .net] スレ違だったらすみません H8マイコンで、ボタンが押されるたびにLCDに表示されてるいる数を減らすのを作りたくて、ER4に MOV.W #D'5みたいに入れてそれをボタンが押されるたびに、一個づつ減らすように書いたのですが、そのER4の内容をLCDに表示させるのはどうすればいいんでしょうか?
73 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 02:45:41.91 .net] >71 日立…じゃなくて今はルネサスか…に問い合わせればきっと トレーニングキットなり講習なりの案内はもらえるとは思えますよ。 数十万〜数百万個とか使うのでなければ有償だとは思うけど。
74 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 04:40:40.39 .net] >>71 「LCDに表示させる」ってとこはLCDのデータブックを理解できると仮定して・・・ ・ワークregにER0を使う。(ことにする) HEX: DC '0123456789ABCDEF' ER4をER0に移す ER0を0000000FでAND MOV.B (HEX,ER0),R1L で、16進の1桁をASCIIに変換できる R1LをLCD表示用の変数にセット ER4を右に4bitシフト これを8回くり返せばER4の内容を表示用の文字列に変換できる。
75 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 01:13:11.99 .net] >>72 >>73 レスありがとうございます。>>73 さんのやり方で表示できました。ありがとうございました!
76 名前:73 mailto:sage [2012/05/30(水) 01:22:20.91 .net] お役に立てて嬉しい
77 名前:73 mailto:sage [2012/05/30(水) 01:39:47.03 .net] あ、途中で書き込んじゃった・・・レジスタや変数の内容を表示したいのはよくあること だから、dmp(変数)(長さは4とか16とか固定)、dmp(変数,長さ) とかの使い回し できる関数にしておくといいよ。レジスタはその変数に代入してからdmp( )を呼ぶ。 cで製品を開発するときこういうのを組み込んでおいてずいぶん役に立った。 表示先はLCDの他に、uartのコマンド/報告で組み込むのをよくやった。 H8だったら最低2CHぐらいはuartが搭載されてるでしょ。 dmp <ff010><ret> と入力したら、そのCHに FF010 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 <CR><LF> と表示させる。上のはFF010番地に DC '0123456789ABCDEF' がある所を ダンプした例ね。
78 名前:73 mailto:sage [2012/05/30(水) 02:16:37.21 .net] ここがASMスレなのを忘れて書いてしまった。 コンパイラによって違うけど、ルネのだと dmp(変数) MOV.L #変数,ER0 JSR dmp dmp(変数,長さ) MOV.L #変数,ER0 MOV.W #長さ,R1 (16bitで充分、8bitでも可) JSR dmp となります。
79 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 10:18:13.79 .net] 返信遅くなりすみません 有益な情報ありがとうございます 是非この先使ってみたいと思います!
80 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 22:37:17.91 .net] すみません,アセンブラ単体でヒープ領域のメモリ確保ってできますか? アーキテクチャはlinux 2.6 on EM64T(およびPIC30F4012です.) (おそらく後者は不可能という結論は出ていますが,ついでなので質問です.) 前者は,call malloc等でC関数を呼べば実装できているんですが, Cランタイム非依存のlinux環境下では,int 0x80のシステムコールのみで ヒープ領域の確保,解放を行う必要性があると思っています. (システムコールなく,CPU命令で直接ヒープ領域にメモリ確保できれば十分です) わかる方いらっしゃるでしょうか
81 名前:デフォルトの名無しさん mailto:sage [2012/06/12(火) 00:19:48.97 .net] >>79 >すみません,アセンブラ単体でヒープ領域のメモリ確保ってできますか? できますよ。 >アーキテクチャはlinux 2.6 on EM64T(およびPIC30F4012です.) どちらも当たり前にできますよ。
82 名前:80 mailto:sage [2012/06/12(火) 09:12:21.36 .net] >>80 それぞれのインストラクションコードってわかりますか? ggり方の問題なんでしょうけど,探しても見つかりません……
83 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 10:29:17.85 .net] >>80 騙してやるなよ可愛そうだろ. それとも本気で無知乙か?w >>79 PICのアーキテクチャ見てみろ.heap……ってか, レジスタ以外にメモリあるか? 別途メモリとか実装すればそれっぽいことはできるかもな. そもそもシングルタスクなのにメモリ空間を分ける意味がわからないが. AMD64はわからんが,linuxならシステムコールのリファレンスとか, libcの逆アセンブルを見ればいいんじゃないか?あとはggれ
84 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 11:52:54.05 .net] >>82 無知乙
85 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 16:32:20.11 .net] ページのフラグ変更すればいいんじゃね?
86 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 16:57:26.71 .net] >>82 >PICのアーキテクチャ見てみろ.heap……ってか, >レジスタ以外にメモリあるか? 別途メモリとか実装すればそれっぽいことはできるかもな. 「PIC heap malloc」とかでぐぐってみ? >そもそもシングルタスクなのにメモリ空間を分ける意味がわからないが. ハーバードアーキテクチャとタスクがどうこうは関係ない話だが? 本気で無知乙だな。
87 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 13:28:27.16 .net] 初心者スレで、初心者を愚弄する奴は来るな!
88 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 13:42:22.46 .net] 初心者スレってバカが知ったかでアドバイスするスレだったのか?
89 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 15:25:43.26 .net] >>86 「初心者を愚弄」って、>>82 の >それとも本気で無知乙か?w みたいなこと?
90 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 16:22:44.16 .net] 32ビットのフラットメモリモデルの場合なのですが、アドレスを記述する際にセレクタを 指定しなかった場合、実行時に使われるセレクタはDSで合ってますか?
91 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 17:26:44.55 .net] 普通のアクセスは。 EIPによる命令フェッチはCSなのと、PUSHやPOPでのESPによるアクセスはSSだけど、 他に例外はあったかな。
92 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 17:32:00.51 .net] ebpはssだろうし ストリング命令でのdiはesだと思う。
93 名前:デフォルトの名無しさん mailto:sage [2012/06/29(金) 18:14:35.79 .net] フラットモデルは CS==DS==SS==ESというキチガイモデル LDTでプロセス毎のメモリ空間を確保 まあお陰で楽と言えば楽なんだが
94 名前:デフォルトの名無しさん mailto:sage [2012/07/04(水) 01:17:53.26 .net] >>90-92 大変よくわかりました、ありがとうございます
95 名前:デフォルトの名無しさん [2012/07/06(金) 01:32:49.84 .net] 秋に基本情報を受けようと思ってるのでCASL2の勉強をしようと思うのですが、お勧めの参考書かサイトないでしょうか? あとまったく知識ゼロの状態でCASL2を勉強して合格しようと思ったら どれぐらいの期間かかりますか?(CASL以外の時間は含まず)
96 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 01:40:51.02 .net] >>94 何かひとつ実際のアセンブラが使えればCASLなんて屁でもないので CASLの勉強なんて無駄なので止めなさい。 今使ってるPCのアセンブラでも勉強したほうがはるかに有意義だから。
97 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 08:45:26.33 .net] >>94 人による、としか。 CASL2自体を覚えるのはそんなに掛からないよ。 早い人ならそもそも試験会場で問題冊子に書かれた仕様と問題文から覚えちゃう。 苦手な人でも、一年やって仕様自体が頭に入ってない人は稀だろう。 問題となるのはそこからの応用力だから、そればかりは本当にその人次第だねえ。 応用できちゃう人は覚えた瞬間からほぼ全問解けるだろうが 応用の苦手な人は問題集で色んなパターンを覚えるしかない。
98 名前:94 [2012/07/06(金) 22:01:30.66 .net] レスありがとうございます >>95 そうなんですか…CASLが勉強時間も短くて、試験にも通りやすいと聞いたので 選択しようと思ってたのですが、今後役に立たない知識ならば別のを選択したほうがいいですかね… >>96 試験本番で仕様を読んで合格する人ってすごいですね…
99 名前:デフォルトの名無しさん mailto:sage [2012/07/06(金) 23:20:43.78 .net] >>97 まあ、合格するまではやってみてもいいんじゃね
100 名前:デフォルトの名無しさん [2012/07/09(月) 13:16:53.86 .net] すみません最近勉強しだした、ど素人なんですが MAIN START OUT BUF,LEN RET BUF DC 'Hello, World!' LEN DC 13 END Hello,Worldって表示させるだけなんですが、 BUF DC 'Hello, World!' LEN DC 13 この二つを MAIN START と OUT BUF,LEN の間に記述したら駄目なんでしょうか? 流れ的にはラベルBUFにHello,World、LENに13と宣言してからOUTで出力させるような気がするのですが C言語とはアルゴリズムが全然違うんでしょうか? 私が買った参考書にも特に説明もありませんでした。 出力の後に宣言があるので、なぜそうなるのかどなたか教えてください。お願いします ちなみにこのプログラムは以下のサイトから抜粋しました www.officedaytime.com/dcasl2/pguide/chapter1f.html
101 名前:デフォルトの名無しさん mailto:sage [2012/07/09(月) 13:51:18.05 .net] アセンブラの場合、データ(BUF DC 'Hello, World!' / LEN DC 13)も、メモリの その場所に置かれてしまうので、もしMAIN STARTの後に置いたら、 その文字コードを命令とみなして実行してしまうのでめちゃめちゃになる。
102 名前:デフォルトの名無しさん mailto:sage [2012/07/09(月) 13:55:58.49 .net] >>99 >BUF DC 'Hello, World!' >LEN DC 13 >この二つを >MAIN START と OUT BUF,LEN の間に記述したら駄目なんでしょうか? セグメントの記述をキッチリしてればおk
103 名前:99 [2012/07/09(月) 21:09:18.55 .net] >>100 ,>>101 なるほど、ありがとうございます
104 名前:デフォルトの名無しさん mailto:sage [2012/07/09(月) 21:14:50.18 .net] >>102 なるほど、とか言ってるけど実際分かってないんだろ?
105 名前:デフォルトの名無しさん [2012/07/09(月) 21:17:22.99 .net] >>103 うん
106 名前:デフォルトの名無しさん [2012/07/09(月) 21:29:09.19 .net] >>103 私の勉強不足と理解力が無いだけなんで、理解できるよう努力します
107 名前:デフォルトの名無しさん mailto:sage [2012/07/10(火) 00:15:24.71 .net] 流れでアセンブラをプログラムしようとするやつ
108 名前:デフォルトの名無しさん mailto:sage [2012/07/10(火) 00:21:33.24 .net] アセンブラ以外の言語はやらないのだろうか?
109 名前:_ [2012/07/12(木) 22:43:47.48 .net] _
110 名前:デフォルトの名無しさん mailto:sage [2012/07/12(木) 22:57:27.69 .net] 片山さつき「大津の事件の原因は日教組政権下におけるハングル授業 大津のいじめ自殺について、本当にたくさんのメール、ツイートいただきました。 【中略】 担任の先生の、前任地、滋賀大学付属中学における、ハングルの授業・・?の記事なども入手しました。 英語習得段階もまだまだ中途であるはずの中学校で、なぜハングルを教育する必要があるのか? 子ども達に選択の余地はあったのか? いかなる方針で、誰のオーソライゼーションによってそのような教育が行われていたのか? それだけでも、かなり変わっているな、と感じられましたし、 【中略】 教育の自主性とか教育現場不可侵、、などを超えてしまっている現実を、 手をこまねいて見ていた多くの関係者、、。 3年前に「日教組政権?」が成立してしまったことで、 そこに、ますます歯止めがきかない空気が、浸透してしまった、そんな可能性はないのでしょうか? ソース blogos.com/article/42932/ ハングルの授業の資料 blog-imgs-53.fc2.com/h/o/t/hotlog/1341623759_img6946.jpg
111 名前:デフォルトの名無しさん mailto:sage [2012/07/12(木) 23:07:03.19 .net] >>109 大蔵省のおばちゃんいらね
112 名前:デフォルトの名無しさん mailto:sage [2012/07/13(金) 01:18:34.37 .net] >>110 そんなにおかしいこと言ってないだろ? 大蔵省が気に入らないのか?
113 名前:110 mailto:sage [2012/07/13(金) 08:27:36.90 .net] >>111 気にいらね、増税、おまえうれしいのか?
114 名前:デフォルトの名無しさん mailto:sage [2012/07/13(金) 10:07:42.62 .net] ν速中毒が国会議員になれるなんて胸が熱くなるな。
115 名前:デフォルトの名無しさん mailto:sage [2012/07/14(土) 02:45:23.36 .net] 増税は反対だが、行き過ぎたチョン教育がおかしいってのは何も間違ってないだろ
116 名前:デフォルトの名無しさん mailto:sage [2012/07/14(土) 07:15:16.79 .net] 国会議員が行き過ぎたバッシングで人気取りを狙ってるほうが、 1000倍狂ってる。
117 名前:デフォルトの名無しさん mailto:sage [2012/07/14(土) 14:37:00.65 .net] しかしあれだな、CASLな人はCASLと書いて欲しいな
118 名前:デフォルトの名無しさん mailto:sage [2012/07/15(日) 02:21:18.10 .net] >>115 韓国の方でしたか それは失礼しました
119 名前:デフォルトの名無しさん mailto:sage [2012/07/15(日) 07:28:14.94 .net] バカウヨはν速に帰れ
120 名前:デフォルトの名無しさん mailto:sage [2012/07/16(月) 13:07:09.29 .net] ここ何のスレだよ・・・
121 名前:デフォルトの名無しさん mailto:sage [2012/07/18(水) 09:06:45.66 .net] 【大赤字】 韓国万博にK-POPスターを呼んでも客が来ないため、チケット69円で投売り開始 engawa.2ch.net/test/read.cgi/poverty/1342528699/ 麗水エキスポ:1000ウォンの深夜入場券発行へ 麗水エキスポの入場者数が目標を大幅に下回っていることを受け、 韓国政府は1000ウォン(約69円)の深夜入場券を発行することを決めた。 www.chosunonline.com/site/data/html_dir/2012/07/17/2012071701101.html
122 名前:デフォルトの名無しさん [2012/07/19(木) 00:31:33.84 .net] 話題を変えてしまってすみません。 戻り値が -1 である時に条件分岐したいのですが、 どうすればいいのでしょうか? Linux x86_64でsyscallでopenを呼び出し、 ファイルオープンが出来なかったらエラーに飛びたいのです。 開きたいファイルが存在しない状態で実行ファイルを 実行したけれど、エラー処理に飛びませんでした。 # error check cmp $-1,%rax je _err としても、 # error check cmp $0xFFFFFFFFFFFFFFFF,%rax je _err としてもうまく行きませんでした。
123 名前:デフォルトの名無しさん mailto:sage [2012/07/20(金) 01:41:07.82 .net] ENOENTは-1じゃねーぞ
124 名前:デフォルトの名無しさん [2012/07/20(金) 23:06:25.48 .net] ありがとうございます。 -2 が戻るんですね。 戻り値が負であればエラーと見做せばいいんですね。
125 名前:デフォルトの名無しさん mailto:sage [2012/07/21(土) 09:43:17.25 .net] 欧州研究所が告白! 太陽光パネルで出力劣化しないのは日本製品とドイツ製品だけ!中韓メーカー発狂か engawa.2ch.net/test/read.cgi/poverty/1342751788/ シャープ製太陽光パネル、「出力低下なし」お墨付き−欧最大の研究機関が評価 シャープは同社製の太陽光パネルに「PID」と呼ばれる産業用太陽電池特有の出力低下現象が起きないと欧州最大の研究機関に認められた。 フラウンホーファー研究機構(本部=独ミュンヘン)が欧州、北米、中国、韓国メーカーなどの太陽電池モジュール13製品を評価した。 欧州ではPID現象による太陽光パネルの出力低下が相次ぎ、品質問題として注目されている。PID現象が発生しなかったのは4製品だけ。 これまでに京セラ、ドイツの最大手Qセルズも現象が起きなかったと公表している。 詳細 2012/7/20 www.asahi.com/digital/nikkanko/NKK201207200019.html
126 名前:uy [2012/07/23(月) 23:46:45.61 .net] この板は何もないなぁと常々思う 流石にITに夢見る奴も絶滅してしまったせいだろうか プログラミングというものが、リアルで中学生位でも出来る奴が増えてきてるんだろうな VBとか、BASICじゃなくてC++、C#関係を そうやって一般人でも空気を吸うかのごとく扱えるようなジャンルになってくると プロってものはいらなくなってくる あとに残された金儲けの手段
127 名前:は 煩雑で、未整理で、情報の収拾が難しい分野の技術 けど、そういったものも、いずれ徐々に俺みたいな奴がその得た情報で金儲けするわけでもなく 無償で情報ばら撒き始めれば市場も崩れる 後に残されるのは、工場勤務などとなんら変わらない 個人能力に左右されないお仕事 機械で自動化できる部分を、あえて人間にやらせるお仕事 それが大多数のプログラマの仕事になるんだろうよ [] [ここ壊れてます]
128 名前:uy [2012/07/23(月) 23:53:39.98 .net] こうなってくるとゲームのような、ほとんどが再利用不可能なソースコードで構成されたプログラムを作ることと なんら変わらない、所詮は再利用するかしないかどころか、 不必要なシステム、不必要なプログラムを、人間の労働力が余っているから仕事を与えさせて動かしているだけであって それなら、ゲーム系に「無駄」を使ったほうがマシだよ コピペで済むものを、わざわざ再開発していく コピペで済まされたら、暇になっちゃうから 遠回りして、仕事してるフリをしろと 本当に悲惨な職業だと思う
129 名前:uy [2012/07/24(火) 00:05:23.79 .net] 結局、目的のためにプログラミングをしてるってのは不健康なんだと思うよ 手段そのものでストレスを発散できるようになり、 目的度外視で手段を楽しいと思わなければ、その者は不幸だろう ありえないリソースをサイト上にアップしているにも関わらず、 あまりにもアクセス数の少ない技術系情報サイト そういうものも、手段を楽しんでいなければ構築できはしない 結局は気づくしかない 人間の素の演算能力が高くなれば、プログラミング言語がどれであろうと構わないって事 結局、世界全体の技術力を高めるには、人間の平均スペックを何世代にも渡って向上させていくしかないんよ 技術力のないバカに気づかせる事よりも、自分のことだけ考えて生きてた方がマシ
130 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 19:38:45.58 .net] ながすぎる
131 名前:デフォルトの名無しさん mailto:sage [2012/07/27(金) 00:17:08.91 .net] うううう この試験のために参考書いくつか買ってるけど金がかかってしょうがない 専門学校やPCスクールに通うよりは遥かにましだけど、1万以上は軽く飛んだぜ
132 名前:デフォルトの名無しさん mailto:sage [2012/07/27(金) 00:17:55.07 .net] 基本情報のスレに書いたつもりが間違えてしまった
133 名前:デフォルトの名無しさん mailto:sage [2012/08/01(水) 09:09:30.11 .net] 俺馬鹿だからZ80のハンドアセンブルくらいが一番勉強になる 図書館で昔の書籍発掘しながら勉強してるよ
134 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 10:39:06.85 .net] 10進数ってどうやって表示してんの? 内部的には2進数で管理してるんでしょ?
135 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 11:25:31.62 .net] どちらも整数であって、「2進数」とか「10進数」という数があるわけじゃないから。 2進とか10進というのは表記法の違い。 表示する時に、たとえば7セグメントデコーダに 8 を表示するなら、 全てのLEDを点灯させるとか。
136 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 14:13:28.73 .net] それを言うなら、現実では1進数じゃないか。それをどうやって10進数で表している?
137 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 19:10:57.51 .net] 言いたいことはわかるが、位取り記数法としては1進なんてものはないので、 そう言うのは混乱させる元だと思う。
138 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 21:30:51.99 .net] 独習アセンブラって本をわざわざ買ってちょこっとかじったけど、他の言語と何ら変わらないイメージを持ってしまった アセンブラって直接CPUいじるイメージだったからなんか違うなー と思い、マイコンのアセンブラプログラム(ハンドアセンブラしてる時代)の本借りて勉強したら、構造が単純だからスイスイ頭に入ってわかりやすかったし、機械を操作してる感じもあって非常に勉強になった こういうことをしたくてアセンブラを勉強したかったのに、最近のアセンブラ教本は他の高級プログラム言語の本となんらかわりがいないのがなんかかなしいな 昔の本を読むってのも勉強になると思った
139 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 21:39:03.59 .net] いまどきのOS上で動作するアプリを作る程度の使い方なら、アセンブラも他の言語も大して変わらんだろう。
140 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 21:58:43.57 .net] うんそうなんだよね OS上で動作するんだったら普通の言語でいい オレはコンピュータが動作する仕組みが知りたいからアセンブラの勉強はじめたんだけど、独習とかの教本はピンとこなかった そういう意味で昔の本のほうがピンとくるんだ アセンブラでコンパイラ作る本とかあって、コンパイラがどういう構造でできてるかとか勉強になるから面白いんだ
141 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 22:10:40.75 .net] CPUの性能が現在の1/10000くらいの時代、少しでも処理速度を早く したくて、自分のコードを書き換えながら実行するプログラムとか アセンブラで作ってたなあ、なつかしい(遠い目
142 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 00:57:17.15 .net] >>139 自己書き換えプログラムか 今のでそれやったら命令キャッシュにうまく読み込まれなくて ハングするんだったな
143 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 01:38:19.73 .net] >>136 これわかるわー 今のrichなユーザインタフェースのOSや機能満載の開発環境の上だと,初心者を プログラミングの世界に導くのが逆に難しくなってきていると思う."hello world" なんて画面に表示できたところで何がおもしろいの?ってな感じなんだろうな. それよりも単純に画面をタップしてモンスターをやっつけたりするほうが子供たちには 楽しいんだろうよ.今の子供たちはかわいそうだと思ってしまう俺も年なのか.
144 名前:デフォルトの名無しさん [2012/08/06(月) 07:39:54.12 .net] いきなり目に見えるものが作れるのは幸せじゃない ドラクエやってゲーム作りたいって思って じゃあ基礎のアセンブラやりましょうとかなったら 完成までの道のりが遠すぎて挫折する 今は仮想化が何重にもなっててCPUを意識したプログラムもわけがわからない。 Mac上にVirtualBoxでWindows入れてその中で動くQEMU用のコードを書いたときに 最終的に動くCPUやメモリ内容が想像しづらい いまサーバ側で動くCのプログラム書いてるけどそれも動かすのVPSだしなー テクニックとかは仮想でも生きるんだよね?
145 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 14:45:28.62 .net] >>141 大先輩ですねー 俺らんときはかろうじてポケコンが有りましたよ あんまいいじってなかったけどw 本当にコンピュータのことを勉強するんだったらCPUを直接操作して、こうやって画面に出力して、こうやって入力してって基本的なことから学んだほうがいいような気もします 自分は、なんでPCてこんな動きするんだろ?OSってなんで必要なんだ?って疑問から入って、調べていくうちにどんどんわからないことが増えていって、最終的にはアセンブラだなって思ってアセンブラの勉強したけど結局他の言語と同じじゃんとなってしまいました どちらかというとアセンブラより、ハンドアセンブラをしたほうが、勉強になる気がします そっからはいって経験を積み上げていくほうが面白いと僕は感じました
146 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 19:54:32.61 .net] > 自己書き換えプログラムか 今のでそれやったら命令キャッシュにうまく読み込まれなくて > ハングするんだったな しないよ。ていうか、キャッシュはコヒーレンシを保たなきゃ困るんだから。 自己書き換えでトラブるのはキャッシュじゃなくて先読みバッファ。 Intelの場合Pentium以降はそのへんチェックしてて、書き換えた結果が即有効になる。
147 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 20:13:44.82 .net] >>144 先読みバッファって何? パイプラインではなくて? 「IA-32 Intel® Architecture Software Developer’s Manual Volume 3: System Programming Guide」 download.intel.com/products/processor/manual/325462.pdf の「8.1.3 Handling Self- and Cross-Modifying Code」てとこ見ても、ジャンプ命令かシリアライズ命令入れれって説明で、 > Intelの場合Pentium以降はそのへんチェックしてて、書き換えた結果が即有効になる。 て感じではないみたいだが。
148 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 21:28:15.26 .net] 正確にはプリフェッチキュー。 ↓の中で Pentium って書いてあるところを検索して、その前後を見ればわかる。 ttp://service1.symantec.com/legal/publishedpatents.nsf/0/D10DB5F5D479457888256DF7005D6C1D/$FILE/United%20States%20Patent%205,765,030.htm
149 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 03:53:05.21 .net] 岩田聡氏はこういう文法を使って任天堂機を 作った訳ですね。
150 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 04:00:09.59 .net] >>146 情報古杉。お前馬鹿だろ。
151 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 07:30:37.86 .net] いや、ファミコン時代初期まで遡るなら、アセンブリ言語通り越してマシン語直打ち。
152 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 07:37:01.51 .net] >>149 TK-80の頃でもクロスアセンブラとか珍しくなかったが。
153 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 13:28:35.36 .net] どこかに珍しいとか書いてあったか? 症状から当たりを付けてダンプリストながめて直接手直しなんてのはザラだった。
154 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 14:07:30.05 .net] >>151 そんなの時代関係ないが。
155 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 17:46:25.83 .net] >>144 ふつーはパイプラインにのってる書き換え前の命令がそのまま実行される キャッシュもユニファイドでなければinvalidしない限り反映されん x86は互換性命で無駄に努力しとるが
156 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 22:33:11.95 .net] アセンブラだけでは高級言語との区別が分かりにくく ハンドアセンブルまでしてこそ 「プログラムもデータも同じようにメモリに乗る」 のが判るのは確かだな 前にCASL2教えてくれって言われて説明してたらそこが解ってもらえないから CASL2の仕様引っ張りだしたがニーモニックだけでオペコード載ってないでやんの それがあったならノイマン型コンピュータの解説にも便利だろうに… Win32のDEBUGコマンドはそれを分かりやすく示してくれてたのに 64で削られたのは残念だった
157 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 23:12:25.64 .net] >>154 ほんとそうだよね ハンドアセンブルしてからようやくアセンブラがどういうものかわかる nasmとかmasmとか、勉強したとき、ラベルやら変数やらでわかりやすく記述できるのはいいんだけど、それがCPUのなかで順次どういう風に処理されてるかわかりづらかった Z80で自分でラベルとかつけながらアセンブラでプログラム作って、実際にHEXに変換するって作業をするとCPUとメモリとのやりとりがわかる この経験をしておけばCのポインタとかすっごい理解しやすいと思うんだが…
158 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 05:24:04.18 .net] そしてポインタに + 1 すると、ポインタが指す先のデータのサイズ分増えることが 理解できなかったりするわけねw 情報処理技術者試験の出題範囲が提示されてる、実施要綱だかの資料に、 附録で参考資料扱いだけど、オペコード表は載ってる。
159 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 05:29:40.35 .net] >そしてポインタに + 1 すると、ポインタが指す先のデータのサイズ分増えることが >理解できなかったりするわけねw データサイズに応じてアドレスポインタ++ できるアーキテクチャってそんな多くないし、 あんまアセンブラと関係ないな。
160 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 07:06:28.80 .net] C言語のその動作って処理系定義だっけ?
161 名前:デフォルトの名無しさん mailto:sage [2012/08/08(水) 18:10:41.92 .net] void *以外は規格で決まってる
162 名前:デフォルトの名無しさん mailto:sage [2012/08/09(木) 08:43:37.95 .net] int型は16bitですか?32bitですか? ビッグエンディアンですか?リトルエンディアンですか? 処理系定義だべ?
163 名前:デフォルトの名無しさん mailto:sage [2012/08/09(木) 10:23:46.58 .net] ポインタに+1した時の動作の話をしてるんじゃないのか?
164 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 03:28:16.51 .net] >>133-135 メモリ上では2進データだけど 画面表示するときとか十進数で表示するけど LEDとかで1桁の数字とか表示するとかなら固定パターンの出力でいいかもだけど 十進数で数桁あるのを表現するときってどうやってんの?(十進数の桁ごとに分割する方法?) メモリ上のたとえば4バイトの符号ありの整数とか少数とか
165 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 04:44:30.97 .net] 10進の表示:10で割った余りに 30h(=ASCIIのゼロ)を足して1文字表示、これを 商がゼロになるまでくり返す。32bitなら最大8回。 16進の表示:0000000FhでANDすると下4bit分の値(0〜F)ができる。その値をオフセット にして、"0123456789ABCDEF"の表引き(先頭からオフセットbyte先を読みとる)、 その値を1文字表示。元の値を4bit右にシフト。これを32bitなら最大8回くり返す。
166 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 13:11:08.51 .net] なるほど ありがdクス
167 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 14:01:27.72 .net] >>163 いろいろ突っ込みどころがありすぎて困るが、uintをBCD(10進数って何だよw) に変換するのに普通はそんな間抜けな方法は取りませんw
168 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 14:04:56.71 .net] >>165 ↑具体例も示せない口先だけの屑
169 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 15:42:56.50 .net] >>165 >>166 の二名がどうやらクズのようです
170 名前:166 mailto:sage [2012/08/11(土) 15:55:16.18 .net] Cで書くと例えばこんな感じ void putN(int n) { if (n >= 10) { putN(n / 10); } putchar('0' + n % 10); }
171 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:49:39.60 .net] >>168 商と剰余でするなら再帰せずに12バイトの配列用意した方がよくないか? で、165が言ってるのはそもそも商と剰余を使わずにBCDで論理演算だけでやるんだ(キリッ って事だろ 誰もBCDで扱いたいとは言ってないけども
172 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 16:55:59.63 .net] >>169 >再帰せずに12バイトの配列用意した方がよくないか? どういう点でよいと言ってるのか分からんがそう思うならお前がそういう例を示せばいいだけの話。
173 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 17:01:04.66 .net] >>169 >商と剰余でするなら再帰せずに12バイトの配列用意した方がよくないか? なぜ12バイト?
174 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 17:03:02.19 .net] >>169 >で、165が言ってるのはそもそも商と剰余を使わずにBCDで論理演算だけでやるんだ(キリッ >って事だろ >>165 が言ってるのは 整数→BCD の変換だろう
175 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 17:17:53.68 .net] >>171 32ビットだと11桁が最大だろ? ttp://ideone.com/0fAwc 負数も入れて13になっちゃったけど >>172 165は変換してそれを使うといいたいんだろ? それがそもそも163とかからはお呼びじゃなさそうだったというのを書きたかったのだが 如何せん日本語が不自由だからな
176 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 17:20:32.04 .net] つか数え間違いしてるわw どう見ても最大は10桁だなw
177 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 17:34:32.46 .net] >>173 ttp://ideone.com/0fAwc ・0 与えたとき puts() が 2回呼ばれるとかロジックが汚すぎる。 ・マイナスをサポートしてるのは偉いが、0x80000000 を与えると多分うまく表示されない。 他人に見せるサンプルとしてどうなのという気がする。
178 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 17:42:30.37 .net] >>173 >165は変換してそれを使うといいたいんだろ? >それがそもそも163とかからはお呼びじゃなさそうだったというのを書きたかったのだが 中間形式は1文字/バイトで持とうがBCDで持とうが自由じゃね? 10桁くらいならメリットも小さいが桁がもっと多い場合にはメモリ使用量が少ないとか、デバッガでメモリダンプしたときに見易いとか、無理矢理考えれば BCD にも利点がないわけではない。
179 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 21:40:52.12 .net] 10で割るって割り算ってどうやるんだっけか
180 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 22:56:05.10 .net] 割り算のアルゴリズムって小学校低学年で習うだろw 最単純な符号なし整数の場合、まず除数と被除数のMSBが揃うまで除数を左シフトして... 後は分かるよね?
181 名前:デフォルトの名無しさん mailto:sage [2012/08/11(土) 23:15:35.71 .net] 今どきの小学校低学年の教科書はどうなっているんだ
182 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 03:42:47.35 .net] ということは10進数を表示するのって結構複雑なアルゴリズムになるわけか
183 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 05:49:21.37 .net] 割り算命令が無いような古代の石だと確かに複雑だよ。8085でLSI-Cが無い頃に 仕方なく除算のコードを書いたことがある。7801にも移植できて、奇跡的にパツイチ。
184 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 06:27:02.26 .net] 10で除算なんて大して複雑でない。 16bitの値を10で割るだけならこんなもん。8085で書いても30行くらいじゃないか? unsigned div10(unsigned n, unsigned* mod) { unsigned ans = 0; unsigned cmp = 10 << 12; unsigned i; for (i = (1 << 12); i > 0; i >>= 1) { if (n >= cmp) { n -= cmp; ans |= i; } cmp >>= 1; } *mod = n; return ans; }
185 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 06:52:25.96 .net] 試しに組んでみたら40行超えた。 cseg div10: xra a sta ans sta ans+1 lxi d,10 shl 12 lxi b,1 shl 12 loop: mov a,l sub e mov a,h sbb d jcs skip mov h,a mov a,l sub e mov l,a lda ans ora c sta ans lda ans+1 ora b sta ans+1
186 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 06:54:55.75 .net] 続き: デバッグしてないから動かんかも。眠いし。 skip: ora a mov a,d rar mov d,a mov a,e rar mov e,a mov a,b rar mov b,a mov a,c rar mov c,a ora b jnz loop xchg lhld ans ret dseg ans: ds 2
187 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 13:29:06.94 .net] >>180 というか、だから少なくとも除算がネイティブな機能として実装されてないようなCPUなら 10で割るなんて方法は取らない。
188 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 13:42:08.27 .net] >>185 具体的におねがいします
189 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:16:08.79 .net] 次のものはどんなCPUでも比較的実装が簡単 - BCD同士の加算 - BCDの2のべき乗倍 - byte(nibbleでもいいけど) ⇒ BCD変換 だから、 0xAABBCCDDのBCD変換値は0x00AABBCCのBCD変換値と0xDDのBCD変換値から求められる。 0x00AABBCCのBCD変換値は0x0000AABBのBCD変換値と0xCCのBCD変換値から求められる。 ... あとは分かるよね
190 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:20:36.36 .net] >>185 ビデオゲームのスコア表示なんかだったら、数字一桁に1バイトやパックド10進数で数字2桁に 1バイトを複数バイト使って点数計算と表示してたりするけど、そういう特殊な話してんじゃないんだよね?
191 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:23:09.83 .net] >>187 で、例えば16ビットの整数の値を割り算使わないで10進数で表示するのってどうやるの? C の printf() なんかで当たり前に実装されてる機能だと思うけど。
192 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:24:35.37 .net] >>187 >0xAABBCCDDのBCD変換値は0x00AABBCCのBCD変換値と0xDDのBCD変換値から求められる。 >0x00AABBCCのBCD変換値は0x0000AABBのBCD変換値と0xCCのBCD変換値から求められる。 >... > >あとは分かるよね なんで16進数が出てくるんだかマジ分からん
193 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:25:07.60 .net] >>189 int⇒uint⇒BCD⇒Hex
194 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:25:24.86 .net] >>187 C や擬似コードでもいいんで具体的にご説明願います
195 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:26:20.07 .net] >>191 >uint⇒BCD ↑んとこ具体的にご説明下さい。
196 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:26:38.45 .net] >>190 流石にそこまで初歩から説明させるのは勘弁してw っていうか、少しはそれを恥ずかしいことだという意識を持とうよ
197 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:27:15.48 .net] >>193 だから>>187 に考え方が書いてあるじゃん
198 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:28:45.25 .net] >>194 >流石にそこまで初歩から説明させるのは勘弁してw >っていうか、少しはそれを恥ずかしいことだという意識を持とうよ お前、具体的な方法も例示できないバカって思われてるの理解してる?
199 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:30:50.83 .net] >>196 バカにバカと思われても何とも思わない。 馬鹿だろお前。
200 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:31:46.31 .net] さらっとコード書いて説明すりゃ一発な筈なのにな、まあ、できないんじゃ仕方ないが。
201 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:34:03.23 .net] >>197 ああ、確かに何とも思わないね。
202 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:37:13.46 .net] 10で割る方法は具体的なコードがいくつも挙がってるのに、「10で割るなんて方法は取らない」と 言ってる側からはひとつのコードも例示されない不思議
203 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:38:28.44 .net] ヒント: 馬鹿
204 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:40:33.16 .net] >>200 これはアセンブラで書かないと意味がないが、特定のCPUのアセンブラで書いても それを知ってる人間以外には伝わらない。 というか、>>187 の説明で理解できない奴がコード見て理解できるとは尚更思えんね。
205 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:41:30.85 .net] っていうか、こんだけ絡んでくる馬鹿が多いってことは、 つまりこの程度の常識を知らない奴が多いってことか....
206 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:42:39.46 .net] >>202 >これはアセンブラで書かないと意味がないが、特定のCPUのアセンブラで書いても >それを知ってる人間以外には伝わらない。 お前の知ってるアセンブラでいいよ
207 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:50:54.83 .net] >>187 >次のものはどんなCPUでも比較的実装が簡単 > - BCDの2のべき乗倍 実装は簡単かもしれんが整数みたいにシフトすりゃいいもんじゃないし、演算のコスト考えれば 割り算なんかしないと言ってるロジックには採用し辛いんじゃないか?
208 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 15:55:08.03 .net] >>205 割り算みたいに1ビットずつシフトして比較して減算して....なんてやるわけじゃないから コストはずっと低い。 例えば256倍はBCD加算を8回繰り返すだけ。
209 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 16:01:44.27 .net] >>206 >例えば256倍はBCD加算を8回繰り返すだけ。 8ビットの割り算も、引けるかどうか8回繰り返すだけだよ。
210 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 16:03:59.84 .net] >>187 >次のものはどんなCPUでも比較的実装が簡単 > - byte(nibbleでもいいけど) ⇒ BCD変換 それが 整数→十進数変換 だろうに何言ってんのコイツ?
211 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 16:11:05.28 .net] 馬鹿の頭脳は8ビット、まで読んだ。
212 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 16:14:06.80 .net] いまだ具体的なコードのひとつも示せない奴がなんか言ってます(ププ
213 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 16:21:02.34 .net] >>202 >これはアセンブラで書かないと意味がないが、特定のCPUのアセンブラで書いても >それを知ってる人間以外には伝わらない。 「アセンブラで書かないと意味がない」ってのは理解に苦しむが、もし俺がそういう状況だったら知ってる人が多いであろう x86 か ARM で書くけどなあ? それか、書けるアセンブラ(8080、Z80、6800、6809、6502、8086、386、x64、PIC、AVR、SH、mips、PowerPC、Alpha)の中から選んでもらってそれで書くわ。 それぐらいの対応お前できねーの?
214 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 16:22:19.82 .net] あ、68K抜けてた。
215 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 16:23:02.04 .net] ARMも抜けてた。ボロボロだな。
216 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 16:32:11.53 .net] __m128 _mm_cvtepi32_decstr(__m128 a) a最下位のuint要素を10進表現の文字列へ変換して返す。(余った桁には0が入る。) こんな感じに1〜2クロックで変換できるSIMD演算器の命令、追加されないかな。 需要無いか。
217 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 16:33:13.83 .net] >>212 死刑。
218 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 16:34:09.51 .net] 128bitの値が素数が否か1クロックで判定する
219 名前:命令追加されないかなー [] [ここ壊れてます]
220 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 17:12:11.04 .net] >>202 完全に逃げの態勢
221 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 17:18:45.55 .net] >>211 そこは敢えてCASLでだな…
222 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 17:19:58.49 .net] >>187 >次のものはどんなCPUでも比較的実装が簡単 > > - BCD同士の加算 > - BCDの2のべき乗倍 > - byte(nibbleでもいいけど) ⇒ BCD変換 どんなCPUでもBCD演算をサポートしてるとか思ってる?
223 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 17:21:00.65 .net] >>217 そう思うなら試しに君が書いたら? まあアルゴリズムが理解できないから無理だよねw 自分の理解力不足を棚に上げてこれだからな。 アセンブラのそれなりに実用的なコードなんて暗号的な上に冗長で、 相当慣れてても読解に苦労するものなのにそのサンプルを書けとか馬鹿の戯言意外に聞こえん。
224 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 17:25:38.50 .net] >>187 >次のものはどんなCPUでも比較的実装が簡単 > > - BCD同士の加算 > - BCDの2のべき乗倍 > - byte(nibbleでもいいけど) ⇒ BCD変換 > >だから、 > >0xAABBCCDDのBCD変換値は0x00AABBCCのBCD変換値と0xDDのBCD変換値から求められる。 >0x00AABBCCのBCD変換値は0x0000AABBのBCD変換値と0xCCのBCD変換値から求められる。 >... > >あとは分かるよね なんも説明してない典型
225 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 17:28:07.46 .net] >>220 >アセンブラのそれなりに実用的なコードなんて暗号的な上に冗長で、 >相当慣れてても読解に苦労するものなのにそのサンプルを書けとか馬鹿の戯言意外に聞こえん。 ん?>>183-184 とかこのスレにコード投稿してる人もいるのに何言ってんの?
226 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 17:29:18.93 .net] >>220 >アセンブラのそれなりに実用的なコードなんて暗号的な上に冗長で、 >相当慣れてても読解に苦労するものなのにそのサンプルを書けとか馬鹿の戯言意外に聞こえん。 だから擬似コードでもいいって言われてんのにねー?
227 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 17:34:09.85 .net] >>202 >これはアセンブラで書かないと意味がないが、 C言語とかにはないBCD加算とかの命令は中身ブラックボックスの関数とかで代替できますよ。 a = bcdadd(b, c); 「アセンブラで書かないと意味がない」ってどゆこと?
228 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 17:48:35.38 .net] >>224 >>これはアセンブラで書かないと意味がないが、 「演算によるフラグへの影響を再現できない」とか言うのかな? グローバル変数でCとかZとかのフラグ用意してaddやsubとかの演算は関数用意するとか、 C++で演算子のオーバーロードするとか、方法は幾らも考えられるよね。
229 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:20:29.11 .net] >>225 こんなこと一々説明されないと理解できないことは恥だと思うべきだと俺は思うが、 今問題にしているのは実行効率だから。 なぜ10で割った商と剰余を利用するより>>187 の方法の方が効率的かはCで書いても コードに現れない。
230 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:21:51.19 .net] っていうか、>>187 が理解できればコード書けなんて馬鹿は言わないはずで、 だったらこういうの相手にしても時間の無駄だな。
231 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:23:05.68 .net] 説明がおかしいという考えに及ばないところが馬鹿丸出し
232 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:24:23.70 .net] >>226 >こんなこと一々説明されないと理解できないことは恥だと思うべきだと俺は思うが、 >今問題にしているのは実行効率だから。 > >なぜ10で割った商と剰余を利用するより>>187 の方法の方が効率的かはCで書いても >コードに現れない。 説明求められてんのはロジックなのに変な言い訳w
233 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:26:43.37 .net] コード提示すりゃ済む話を長々と引っ張るネw
234 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:27:39.23 .net] >>229 馬鹿って本当鳥頭だよな。 >>226 は>>225 に対する回答だ。
235 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:29:21.92 .net] >>226 >今問題にしているのは実行効率だから。 > >なぜ10で割った商と剰余を利用するより>>187 の方法の方が効率的かはCで書いても >コードに現れない。 どういう処理を機械語に落としたらどの程度の効率になるかなんてのは、自分で触ってる プロセッサなら当たり前に想像付くようなモンじゃね? お前、自分はそういう見積もりが出来ませんと言ってるワケ?
236 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:31:25.73 .net] >>231 求められてるのはロジックだと言ってるよ。お前が実行効率を理由にコードを提示しない理屈は通らんよ。
237 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:34:38.69 .net] まあ、コードの提示がない時点で出来ませんと言ってるも同然なんだが
238 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:38:55.58 .net] >>203 >っていうか、こんだけ絡んでくる馬鹿が多いってことは、 >つまりこの程度の常識を知らない奴が多いってことか.... 常識って言うなら、どっかの他人が書いるコードとかロジックの説明のページ、ゴマンとあんじゃね? お前に具体的なコード書いたりすんのが無理ならそのURL書くだけでもいんじゃね?
239 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:41:40.33 .net] 訂正 ×どっかの他人が書いる ○どっかの他人が書いてる
240 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:45:14.11 .net] >いろいろ突っ込みどころがありすぎて困るが、uintをBCD(10進数って何だよw) >に変換するのに普通はそんな間抜けな方法は取りませんw まあ、BCD(=二進化十進数)の言葉の意味も理解してない馬鹿みたいだし。
241 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 18:54:43.27 .net] >>165 >いろいろ突っ込みどころがありすぎて困るが、uintをBCD(10進数って何だよw) Man page of PRINTF linuxjm.sourceforge.jp/html/LDP_man-pages/man3/printf.3.html > o, u, x, X > unsigned int 引き数を、 符号なし8進数 (o), 符号なし10進数 (u), 符号なし16進数 (x と X) に変換する。 「10進数」なんて↑に限らず良く使われる用語では? 何がおかしいのだろう?
242 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 19:17:06.12 .net] スレタイも読めない奴が上から目線で初心者を叩くスレがあると聞いてきたんですが、もしかしてここですか?
243 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 19:23:59.34 .net] ここはアセンブラ初心者が上級者ぶって初心者を叩くスレだから
244 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 19:24:21.05 .net] >>239 違いますね。ここは知識豊富な上級者様(=>>203 )に、「この程度の常識を知らない奴」等が教えを請うスレです。
245 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 19:52:24.06 .net] >>187 ひょっとしてお前こういうこと↓言いたいわけ? typedef unsigned char bcd_t[5]; void put10(unsigned n) { bcd_t ans; bcd_t t; int i; memset(ans, 0, sizeof(ans)); for (i = 0; i < 32; i += 8) { byte2bcd(&t, n & 0xff); bcdMultPowerOf2(&t, i); bcdAdd(&ans, &t); n >>= 8; } bcdPut(ans); } byte2bcd() の中身、割り算なしでどういう実装になるか教えてくれん? まさかテーブルじゃねぇよな?
246 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 19:53:06.34 .net] >>238 たいして専門知識もない奴が大昔に訳したまんま所が多いJMを出典にすんなw 「整数値を、8進法 (o), 符号なし10進法 (u), 符号なし16進法で数字(列)に変換する」が正しい。
247 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 19:53:54.99 .net] つーかこの程度のコードも明示できないんだとしたら終わってるだろ。
248 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 19:59:20.39 .net] >>243 >たいして専門知識もない奴が大昔に訳したまんま所が多いJMを出典にすんなw 日本人が書いたと思われる Ruby のマニュアルにも「2進数」なんて語が出てくるが、これも間違い? sprintfフォーマット www.ruby-lang.org/ja/old-man/html/sprintf_A5D5A5A9A1BCA5DEA5C3A5C8.html > Ruby の sprintf フォーマットは基本的に C 言語の sprintf(3) のものと同じです。ただし、 > short や long などの C 特有の型に対する修飾子が ないこと、2進数の指示子(%b)が存在すること、
249 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 20:07:11.64 .net] >>242 byte⇒BCDはuintの上位バイトから実行した方が効率がいい。 byte⇒BCDの部分は除算命令でもテーブル参照でも何でも構わない。 そこで除算を使うななんて言ってない。
250 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 20:10:25.84 .net] おっ、コードの一つも提示できなかった奴がなんか言ってるw
251 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 20:11:41.24 .net] >>246 >そこで除算を使うななんて言ってない。 「というか、だから少なくとも除算がネイティブな機能として実装されてないようなCPUなら 10で割るなんて方法は取らない。」
252 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 20:13:50.08 .net] >>248 ホント馬鹿の頭脳は8ビットだな。
253 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 20:14:53.62 .net] なーんか、こういう高速化方法もあるよぐらいで済ましときゃよかったのに「常識」とか言っちゃって引っ込みが付かなくなったカンジね
254 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 20:17:21.46 .net] 馬鹿の癖にプライドだけは高い奴の典型
255 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 20:18:03.42 .net] >>250 恥を知らないって幸せだね。
256 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 20:21:00.70 .net] >>187 >次のものはどんなCPUでも比較的実装が簡単 > > - BCD同士の加算 > - BCDの2のべき乗倍 > - byte(nibbleでもいいけど) ⇒ BCD変換 「どんなCPUでも」って、BCD演算サポートしてないCPUにはしんどいんじゃないの?
257 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 20:23:30.92 .net] 結局、馬鹿が自分の思い込みを常識と勘違いしてただけでしたチャンチャン
258 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 21:28:13.40 .net] PLC(いわゆるシーケンサ)のCPUならBCD演算今でもサポートしてるよ ニモニックで書けば一応アセンブラか? もっともPLCのCPUはSHとかのどこにでもあるCPUの上の仮想CPUだけど
259 名前:ね [] [ここ壊れてます]
260 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 21:50:48.10 .net] >>187 >次のものはどんなCPUでも比較的実装が簡単 > - BCDの2のべき乗倍 試しにZ80で2**24倍するコード書いてみたが処理重すぎだろ。 ld c,24 loop1:push hl ld b,5 loop2:ld a,(hl) add a,(hl) daa ld (hl),a inc hl djnz loop2 pop hl dec c jp nz,loop1 ret これだけでざっと見て5000サイクル位掛かるじゃねーか。10で割ったほう速いだろ。
261 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 21:53:56.86 .net] >>255 >PLC(いわゆるシーケンサ)のCPUならBCD演算今でもサポートしてるよ だから何? 8080だって6502だってBCD演算今でもサポートしてるけど?
262 名前:デフォルトの名無しさん mailto:sage [2012/08/12(日) 22:13:24.54 .net] BCDで2倍を24回繰り返すのと、BCDで16777216倍すんのと、どっちが速いだろう?
263 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 04:46:30.85 .net] ここまでスレが伸びるとか10進数表示って奥が深いんだな
264 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 04:53:24.87 .net] Cでprintf("%d",v);だけのプログラム作って解析すりゃいいんじゃね
265 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 04:57:06.07 .net] 解析は犯罪です
266 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 05:14:19.27 .net] 6502って現役なの?リモコン用?
267 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 09:44:15.10 .net] gccのコード見た方が早くね?
268 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 14:16:19.57 .net] CASL2で10進数表示のコードを提示してください
269 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 14:28:12.28 .net] >>264 CASL II 入門講座 第5章 数値を10進数の文字列に変換する www.officedaytime.com/dcasl2/pguide/chapter5f.html
270 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 14:33:07.30 .net] >>264 IN命令とOUT命令 - 3. 応用:符号なし10進数を文字列に変換して表示する www-cg.cis.iwate-u.ac.jp/~fujimoto/prog3/printud.html
271 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 17:39:33.83 .net] このアルゴリズム的に何の意味もないコメントの付け方をみると無性に腹がたつ。 学習用とはいえ、いちいち命令をすべて日本語に読み下すなと。
272 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 17:53:25.73 .net] >>267 どれのこと言ってんの?
273 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 17:57:42.24 .net] >>262 割と最近の製品の例 www.brielcomputers.com/wordpress/?cat=24 動作しているところ nicoviewer.net/sm4158739
274 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 18:23:18.16 .net] >>269 どんだけ特殊な製品なんだw こいうお遊び以外では需要なんてないだろ。
275 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 18:47:55.08 .net] WDCの製品ラインナップにあるからまだ需要もあるのだろう www.westerndesigncenter.com/wdc/w65c02s-chip.cfm 6年前のトラ技の記事 toragi.cqpub.co.jp/Portals/0/backnumber/2006/06/p245-246.pdf
276 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 18:56:26.10 .net] 世の中に出回ってる製品のうち、使ってるマイコンの種類をエンドユーザーが分かるものなんて稀だろう。 俺らの知らんところで6502が使われてても不思議はない。
277 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:10:17.02 .net] ないないw そもそも8bitなんて組み込み用途しか需要がないんだから組み込み「マイコン」以外の CPUに需要はない。
278 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:14:50.89 .net] >>273 >そもそも8bitなんて組み込み用途しか需要がないんだから組み込み「マイコン」以外の >CPUに需要はない。 新規開発に限ればまあだいたい合ってるが世の中それだけではない。
279 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:25:35.33 .net] 国内のパチンコやパチスロの
280 名前:当たりを決めてるところの制御はいまだにZ80の派生品で行ってるらしい。 外国から見れば、日本のパチンコやパチスロの事情なんてわけの分からん話だろうし、一般に情報も伝わらないだろう。 どこかの国に「日本のパチンコやパチンコ」に該当するものがあったとして、我々はそれを知りうることができるだろうか? 「組み込み「マイコン」以外のCPUに需要はない」と断言する奴は視野が狭いと思う。 [] [ここ壊れてます]
281 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:29:54.80 .net] 訂正 ×「日本のパチンコやパチンコ」 ○「日本のパチンコやパチスロ」
282 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:41:07.16 .net] >>275 パチンコ業界のことは知らんが、恐らく派製品ですらなくIPでしょ。 あれをZ80と呼んでよいかは微妙だね。 そもそも今時本当にZ80相当を使ってるかどうか疑わしい気もする。 都市伝説の類じゃないのか?
283 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:43:34.37 .net] LE-Techも聞いたことない素人さんですか?
284 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:46:42.79 .net] まあなんにしろ、仮に事実パチンコにZ80が使われ続けているとしても、 それは政治/行政上の理由という特殊事情で選択されているに過ぎず、技術的あるいは経済的理由で 選択されているわけではない。
285 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:47:17.91 .net] >>277 >そもそも今時本当にZ80相当を使ってるかどうか疑わしい気もする。 >都市伝説の類じゃないのか? パチンコ関係じゃ、いまだにZ80の求人あるの知らんの? www.careerjet.jp/search/jobs?s=Z80&l=%E4%B8%AD%E9%83%A8%E5%9C%B0%E6%96%B9
286 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:48:37.06 .net] >>279 そういう事情が日本以外には存在しないと考えるおバカさんですか?
287 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:50:04.35 .net] >>275 はもはや持論を正当化するための屁理屈に過ぎんな
288 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:51:42.19 .net] だから知らねえって言ってるだろ。 それに、求人があるからって現行製品かどうか分からんでしょ。 ある種の保守用人員かもしれない。 例えば古い台をゲーセン用に改造するためとか
289 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:54:43.54 .net] 知らない奴が何いってんだろ?
290 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:57:00.93 .net] >>283 >それに、求人があるからって現行製品かどうか分からんでしょ。 >ある種の保守用人員かもしれない。 >例えば古い台をゲーセン用に改造するためとか 求人内容見て言ってる? 必死すぎw
291 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:58:51.32 .net] 初心者の質問スレじゃなくて プロが語り合うスレになっちまってるな
292 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 19:59:12.10 .net] >>283 >だから知らねえって言ってるだろ。 知らないくせに断言とか良くできるなー。感心するわ。
293 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 20:01:35.65 .net] どう見ても片っぽは素人
294 名前:デフォルトの名無しさん mailto:sage [2012/08/13(月) 20:36:32.24 .net] 暑苦しいおっさんどもだなぁ
295 名前:デフォルトの名無しさん mailto:sage [2012/08/14(火) 14:45:16.63 .net] 64bitだとアセンブラ使えないのか・・ どうしよう
296 名前:デフォルトの名無しさん mailto:sage [2012/08/14(火) 14:49:25.74 .net] >>290 インラインアセンブラか何かを勘違いしてる?
297 名前:デフォルトの名無しさん mailto:sage [2012/08/14(火) 19:13:53.50 .net] 何ビットだろうと出来ないことはないだろう 最悪、ハンドアセンブルで!
298 名前:デフォルトの名無しさん mailto:sage [2012/08/14(火) 21:08:36.30 .net] C言語の入門書をやり終えたら パソコンが中で何やってるか知りたくなって、アセンブラに興味が湧いたんだけど スレの上のほうで64bit環境じゃうまく動かないって報告があったから… アセンブラで何か作りたいってわけではないのですが、いい参考書あったら教えて下さい 因みにラ・リ・ルって 「アセンブラでアセンブリをアセンブルする」 でいいんですよね?
299 名前:デフォルトの名無しさん mailto:sage [2012/08/14(火) 21:16:26.09 .net] >>293 > いい参考書あったら教えて下さい はじめて読む486―32ビットコンピュータをやさしく語る www.amazon.co.jp/gp/product/4756102131/ インテルのマニュアル水で薄めたような内容だけど、まあやさしく書いてる。
300 名前:デフォルトの名無しさん mailto:sage [2012/08/14(火) 23:32:15.67 .net] 本読んで終わりって人達ですか?
301 名前:デフォルトの名無しさん mailto:sage [2012/08/14(火) 23:
] [ここ壊れてます]
302 名前:56:43.22 .net mailto: >>294 それと、はじめて読むアセンブラ―ソフトウェアツールの原点を探る を買ってみます >>295 触って動かしてみたいけど64bit環境しか無いので… [] [ここ壊れてます]
303 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 02:04:23.84 .net] >>296 パソコンで64bit環境(x86系)なら、32bitなアプリも作れるでしょうに 何を読んで?そう思ったのかしらんけどね アセンブラっていっても、どのCPU?でやりたいのかな?
304 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 02:44:39.11 .net] >>293 CPUの中身を知りたいのならオレが今読んで学んでる、Z80マイクロプログラミング実習って本がわかりやすい いきなりx86系とか学ぶと頭ついていかなかった頭の悪いオレからの助言
305 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 16:03:00.55 .net] それは違うだろ Z80も一応調べてみたけど「あれ?乗算除算浮動小数点演算命令ないよ?何それ?」 って感じだった x86の方が明らかに組みやすい
306 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 16:03:50.85 .net] 書けても動かないとか?
307 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 16:20:15.82 .net] >>299 >「あれ?乗算除算浮動小数点演算命令ないよ?何それ?」 >x86の方が明らかに組みやすい そういうレベルで分かった気になってると、自前で乗除算組まなければいけなくなったときに泣きを見るゾw
308 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 16:27:54.03 .net] >おれ、x86のアセンブラ知ってるんだ それって、かっこいいの?
309 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 16:29:52.70 .net] 楽したければ
310 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 16:38:21.04 .net] 浮動小数点は上位言語で使えるようになってるからね アセンブラよりは低レベルな考え方を身につける方がいいんじゃね 今は、CPUに依存した命令が読めればいい方
311 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 17:00:29.29 .net] >>302 >それって、かっこいいの? むしろ知らないとCのデバッグにも苦労すると思う。 性能出したいところでコンパイラの出力したコードを参照してソースの書き方変えるとか、当たり前のことだし。
312 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 17:02:43.52 .net] >>305 レベルの高いことまでやろうとは思ってないんじゃないの?
313 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 21:43:58.20 .net] IEEE754に準拠した浮動小数点演算命令パッケージは探せばあちこちに落ちてるけど 回転/シフト命令だけで結構楽に組めるんだな 超越関数に至ってはSSE2で書いた方がFPUよりも速いという
314 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 22:18:00.98 .net] >>297 Intel Core i7 860です >>10-14 を見て64bitだとうまくいかないのかと思いました
315 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 22:25:14.65 .net] >>308 >を見て64bitだとうまくいかないのかと思いました Windowsの64bit版だと16bitのコードが動かないのはその通り。 64bitか32bitのコードを動かすか、エミュレータ上で16bitのコードを動かせばよいだけ。
316 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 23:46:39.85 .net] >>309 調べてみたら win7のxpモードで16bitが動くようなので それでやってみます!
317 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 23:10:27.88 .net] mov CS:[w_sp],SP この第一オペランドの:の意味がわからんのです これはCSとw_sp両方にSPを入れるってことなの?
318 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 23:13:02.28 .net] >>311 本かインテルのマニュアルかなんか見れ。
319 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 23:33:38.29 .net] 本見たりググったりしたんだけどわかんねーんだよ 記述自体が古いのかな… なんせPC9801のアセンブラだから…
320 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 23:43:22.21 .net] >>313 超基本的なことだから、書いてないなら本が悪い。ぐぐってわからんのならお前の頭が悪いわ。
321 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 23:46:33.52 .net] 基本的なことなのか!! すまん…もうちょっと頑張ってぐぐってみる ありがとう
322 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 23:53:13.25 .net] あ!わかった!!! CSってのはコードレジスタだから、そこを基準に[w_sp]分オフセットがかかってるってことなんだな!! わかったぞ! >>313さんありがとう ちゃんと考えなかったオレが悪い 考えるキッカケを作ってくれてありがとう
323 名前:デフォルトの名無しさん mailto:sage [2012/09/26(水) 23:54:19.26 .net] ごめん313じゃなくて314でした
324 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 09:47:06.61 .net] @ inc dword ptr [count] というのはアトミックですか? ++cnt; をVC10でReleaseコンパイルしたら上記のようになったのですが、 デバッグコンパイルしたら下記のように分解されてしまいました。 A mov eax,dword ptr [count] add eax,1 mov dword ptr [count],eax Aは明らかにアトミックではないと思いますが、 コードの途中で、他のスレッドが同じコードを通ったときに カウントがおかしくなってしまうのは構いません。 2つ以上のスレッドが同時に@かAを通ったときに 動作が異なる可能性があるのかを知りたいです。 (動作が異なるならインラインアセンブラで書くか、 カウントがおかしくなるのが困るようになったときは クリティカルセクションでも使います)
325 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 10:04:35.72 .net] InterlockedIncrement
326 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 10:06:38.40 .net] 一応、そのx86での実装は 普通はinc等ではなく、lock+xadd
327 名前:318 mailto:sage [2012/09/27(木) 11:59:10.28 .net] >>319 >>320 知りたいのは、マルチスレッドで同じコードを同時に通った場合に、 @とAで動作が異なる可能性があるかどうかなのです。 カウントがおかしくならないようにするための方法を 示していただいたということは、@もアトミックではないと 解釈して良いのでしょうか?
328 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 21:16:39.57 .net] 割り込みコントローラ回りのコーディングが、どうしたものかわかんないんだよなぁ
329 名前:デフォルトの名無しさん mailto:sage [2012/09/27(木) 23:58:41.44 .net] cmpxchg
330 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 00:47:19.87 .net] H8なら@に相当するコードはアトミックだったよ。割込とタスク両方からカウントを 変更するときに割禁かまさなくて済むから意識的に使った。 だからx86でも@はアトミックだと類推する。
331 名前:デフォルトの名無しさん mailto:sage [2012/09/28(金) 01:14:48.26 .net] * add eax,1 * mov dword ptr [count],eax *印のところでスレッド切り替えが起きたらどうなると思う?
332 名前:318 mailto:sage [2012/09/28(金) 12:23:50.67 .net] 回答ありがとうございます。 >>323 クリティカルセクションを実装するのに使える命令なのでしょうか? 排他が必用になったときに、試してみます。 >>324 @がアトミックだとなると、 デバッグ版のAとは違う動作になってしまいます。 あまりに挙動が変わってしまう場合は、 インラインアセンブラで@に書き換えてみます。 >>325 他のスレッドで、カウントが巻き戻ってしまうかも しれないというのは分かります。 他に致命的な問題があるのなら、 インラインアセンブラで@に書き換えてみます。
333 名前:デフォルトの名無しさん mailto:sage [2012/09/29(土) 17:44:46.97 .net] PC/AT互換機での電源の制御ってどう行えばいいんだ?(シャットダウン等) BIOSファンクションがあるのか、はたまたデバイスとやり取りしてやるのか 出来るなら、どいつが扱ってるのか理解したいから、BIOSファンクションを使わなくてもいいなら、そちらの方法が知りたい
334 名前:デフォルトの名無しさん mailto:sage [2012/09/29(土) 18:02:25.95 .net] ACPIを通しているのは確実でしょ。 どうやってACPIを使うかは知らん。 探せば仕様書くらい出てくるかも。
335 名前:デフォルトの名無しさん mailto:sage [2012/09/29(土) 22:08:07.87 .net] >>2326 cmpxchgはCAS命令と呼ばれる物だよ ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%9A%E3%82%A2%E3%83%BB%E3%82%A2%E3%83%B3%E3%83%89%E3%83%BB%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97 Lock-freeとWait-freeアルゴリズムが実装出来る あとx86に ja.wikipedia.org/wiki/Load-Link/Store-Conditional これが欲しかった まあいらんのかも知れんれど
336 名前:デフォルトの名無しさん mailto:sage [2012/09/29(土) 22:08:24.52 .net] ×>>2326 ○>>326
337 名前:デフォルトの名無しさん mailto:sage [2012/09/29(土) 22:44:36.32 .net] >>327 APMファンクション呼べばよろし ACPIでもできるけどAMLインタプリタ用意せにゃいかんので 面倒くさい
338 名前:デフォルトの名無しさん mailto:sage [2012/09/30(日) 18:55:20.60 .net] >>331 APMという単語で調べて、一応なんとかなった、ありがとう。 調べれば調べるほど、アセンブラでもかなり高級なプログラミングなんだなと思えて、嫌になってくるが。 in、out命令でなんとかならないかのう
339 名前:デフォルトの名無しさん mailto:sage [2012/10/01(月) 16:29:22.52 .net] >>332 Embedded Controler叩けばいいはずだが、標準仕様がないしそのへんの情報は ほとんど公開されとらんので自力で調べんといかん のでBIOSにお願いするのが一番簡単
340 名前:デフォルトの名無しさん mailto:sage [2012/10/02(火) 16:49:46.89 .net] APMって未実装のものも多いよな ACPI使わないとデバイス割り当て出来なかったりもするし、どこに向かっていくんだか…
341 名前:デフォルトの名無しさん mailto:sage [2012/10/06(土) 20:25:08.12 .net] そりゃAPMじゃ手に負えなくなってACPIができたんだから 16bitモードが消え去ってUEFIに移行すりゃなくなるだろう
342 名前:デフォルトの名無しさん mailto:sage [2013/03/07(木) 11:26:55.04 .net] computer 計算機(JIS用語らしい)、コンピュータ compiler コンパイラ、「コンパイルを行う翻訳プログラム」 linker リンカ、「…ロードモジュールを作成するために用いられる計算機プログラム」 assembler アセンブラ、「アセンブルを行う翻訳プログラム」 assemble アセンブルする、「アセンブラ言語で書かれたプログラムを目的プログラムに翻訳する」 assembler language program アセンブラ言語プログラム assembly language アセンブラ言語(JIS用語らしい)、アセンブリ言語、「機械命令に対応した記号形式を備えたプログラム言語」 source code ソースコード、原始コード コンピュータ用語辞典第3版(日外アソシエーツ)
343 名前:デフォルトの名無しさん [2013/04/24(水) 11:21:55.75 .net] よろしくお願いします。 はじめてプログラミングを勉強するにあたり、 CASL2とZ80だとどちらがお勧めでしょうか? CASL2は基本情報参考書の付録CD-ROMのエミュ、Z80は講談社ブルーバックス付録CD-ROMのエミュを持っていて、このどちらかで勉強を始めたいと考えているのですが… どなたかアドバイスをよろしくお願いします。
344 名前:デフォルトの名無しさん mailto:sage [2013/04/24(水) 11:25:29.76 .net] プログラミング自体が始めてならいきなりアセンブラというのはあまりお勧めできない。 それでもやるというならどちらでも好きにしなさい。
345 名前:デフォルトの名無しさん mailto:sage [2013/04/24(水) 11:35:30.91 .net] >>337 エミュレータを使っての学習はつまらんので続かないと思う。 実機を使うのが良いよ。
346 名前:デフォルトの名無しさん mailto:sage [2013/04/24(水) 17:28:28.54 .net] ということで、CASL2は落選。ゼッパチの使える基板が秋月辺りで帰れば面白い。
347 名前:デフォルトの名無しさん mailto:sage [2013/04/24(水) 17:29:37.13 .net] ごめん、買えれば ね。
348 名前:デフォルトの名無しさん mailto:sage [2013/04/24(水) 17:58:17.10 .net] Z80は既に実用的な用途はだいぶ減ってるし、CASL2はもとから実用的なものではないから、 要するに機種はなんでもいいからアセンブラを始めてみたいということだと思うが、それなら 今ならArduino辺りでいいと思う。LEDチカチカさせるだけでも楽しいよ。
349 名前:337 mailto:sage [2013/04/24(水) 20:27:47.68 .net] 皆さんありがとうございます。 アドバイスをぐぐって調べてみます コンピュータを理解したくて、勉強をしたいと思ったんです。
350 名前:デフォルトの名無しさん mailto:sage [2013/04/24(水) 20:37:11.57 .net] このへんやっても今のPCの理解が深まることはないと思うけどな
351 名前:デフォルトの名無しさん mailto:sage [2013/04/24(水) 21:30:29.33 .net] >>344 お前みたいなやつがいるからどんどんレベルが下がってんだよ
352 名前:デフォルトの名無しさん mailto:sage [2013/04/25(木) 03:37:35.34 .net] >>344 >今のPCの理解が深まることはないと思うけどな それがアセンブラ弄る唯一の目的と思ってるならお前バカ丸出しだよw [] [ここ壊れてます]
354 名前:デフォルトの名無しさん mailto:sage [2013/04/25(木) 04:13:28.59 .net] いまからASMやって身になるならどのへんかねぇ キャッシュと分岐予測あたりが必須になりそうな
355 名前:デフォルトの名無しさん mailto:sage [2013/04/25(木) 07:11:13.38 .net] >キャッシュ ない環境も普通にある。 >分岐予測 ない環境も普通にあるし、あってもプログラマとってはさほど負担になるものではない。
356 名前:デフォルトの名無しさん mailto:sage [2013/04/25(木) 10:05:32.55 .net] 分岐予測が必須とか、15年前からタイムスリップしてきたMIPS信者ですか?とかw
357 名前:デフォルトの名無しさん mailto:sage [2013/04/25(木) 10:40:59.84 .net] そりゃないとこ探せばあるんだろうけども
358 名前:デフォルトの名無しさん mailto:sage [2013/04/25(木) 11:51:09.09 .net] 「必須になりそう」って、キャッシュも分岐予測も解ってない奴が何言ってるんだろ?
359 名前:デフォルトの名無しさん mailto:sage [2013/04/30(火) 17:23:17.57 .net] Ollydbgで得られるアセンブラの記法ってインテル記法?AT&T記法?どっちですか?
360 名前:デフォルトの名無しさん mailto:sage [2013/04/30(火) 17:29:52.45 .net] ググレカス
361 名前:デフォルトの名無しさん mailto:sage [2013/04/30(火) 18:55:26.87 .net] >>352 みたらインテル表記でした ネトゲ(とりあえずどんなネトゲでも、npro,ゲームガードつきとか)のチートツールを作ってみたいんですがどうすればいいんでしょうか? Windows7です 串作成、ラッパー、デコードルーチン実装とかなに? 教えてください 串作成っていうの接続のときプロキシを使うってこと? ラッパーは?デコードルーチン実装って? よくわかりません アンパックとかはなんとなくわかりますが どうやって学んでいけばいいのか教えてください
362 名前:デフォルトの名無しさん mailto:sage [2013/04/30(火) 18:57:22.94 .net] >>353 へのレスですミス
363 名前:デフォルトの名無しさん mailto:sage [2013/05/01(水) 18:40:23.85 .net] 板違い
364 名前:デフォルトの名無しさん [2013/05/21(火) 00:02:08.27 .net] 世界一速い整数多倍長計算ライブラリを作ってくれませんか?
365 名前:デフォルトの名無しさん mailto:sage [2013/05/21(火) 02:13:58.50 .net] そんなニーズないよな
366 名前:デフォルトの名無しさん mailto:sage [2013/05/21(火) 07:28:29.06 .net] なくはないと思う
367 名前:デフォルトの名無しさん mailto:sage [2013/05/21(火) 10:34:32.84 .net] 昔そういうスレがあった気がする 完成したのか挫折したのか知らんけど
368 名前:デフォルトの名無しさん mailto:sage [2013/05/21(火) 10:35:38.08 .net] そりゃ何でも少しでも速いほうがいいのは確かだけど、 新しく作ったらバグが完全に無くなるまでしばらくかかるし。
369 名前:デフォルトの名無しさん mailto:sage [2013/05/21(火) 11:31:17.83 .net] >>357 gmplib.org/ とかで何か不満でもあるのか?
370 名前:デフォルトの名無しさん mailto:sage [2013/05/21(火) 15:07:33.51 .net] 並列処理対応、64bit対応じゃないと嫌。パスワードクラックしたいんです。
371 名前:デフォルトの名無しさん mailto:sage [2013/05/21(火) 19:43:51.04 .net] パスワードクラックなら最近はGPU(GPGPU)系じゃね?
372 名前:デフォルトの名無しさん [2013/05/21(火) 20:46:51.41 .net] >>364 ありがとう 調べてみる
373 名前:片山博文MZパンク ◆0lBZNi.Q7evd [2013/05/21(火) 21:39:53.83 .net] x86逆汗を作っています。 インテルの技術文書を読みました。 PE形式の情報がダンプできるようになりました。 何かアドバイスをお願いします。
374 名前:デフォルトの名無しさん mailto:sage [2013/05/21(火) 22:59:43.97 .net] >>366 勇士Qに弟子入りする
375 名前:デフォルトの名無しさん mailto:sage [2013/05/21(火) 23:16:17.84 .net] アドバイスも何も仕様に従って変換するだけだろ 強いて言うならアドレスを生の数値だけじゃなく 何らかのラベルをつけるといいかもね
376 名前:デフォルトの名無しさん mailto:sage [2013/05/22(水) 05:52:53.30 .net] >>366 ・Cコードを吐き出すようにする
377 名前:デフォルトの名無しさん mailto:sage [2013/05/22(水) 08:41:40.61 .net] 1パスディスアセンブラなんて簡単過ぎるから2パスアセンブラを作る つまりジャンプ先にラベルを付ける あとある程度コードとデータの分離を可能にし、コードは16進ダンプと 文字列を付ける、など
378 名前:片山博文MZパンク ◆0lBZNi.Q7evd mailto:sage [2013/05/29(水) 22:43:35.13 .net] アドレッシングややこしや 関数の呼び出し規約が難しい
379 名前:デフォルトの名無しさん mailto:sage [2013/05/29(水) 22:47:35.13 .net] そんなんややこしい内に入らん
380 名前:デフォルトの名無しさん mailto:sage [2013/05/29(水) 22:49:01.25 .net] 64bitの呼び出し規約はレジスタ渡し
381 名前:オつつスタックは開けておくとか スタックを16バイト境界に揃えるとか結構ややこしい [] [ここ壊れてます]
382 名前:デフォルトの名無しさん mailto:sage [2013/05/30(木) 04:11:04.04 .net] そんなんややこしい内に入らん
383 名前:片山博文MZパンク ◆0lBZNi.Q7evd [2013/06/02(日) 21:38:39.39 .net] こいつはどでかいswitchが出来そうだ。 ところでa16って何?
384 名前:デフォルトの名無しさん [2013/06/03(月) 00:02:51.99 .net] push %ebp mov %esp,%ebp sub $0x28,%esp これgdbで出た結果なんだけど、どういう風に動いてるのかよくわからなくて、図で説明してくださると助かりますorz
385 名前:デフォルトの名無しさん mailto:sage [2013/06/03(月) 00:07:23.82 .net] スタックフレームを作ってローカル変数領域を確保している
386 名前:デフォルトの名無しさん [2013/06/03(月) 00:17:28.67 .net] >>377 1行目で4バイト分確保するん? それで2、3行目はなにを?
387 名前:デフォルトの名無しさん [2013/06/03(月) 00:21:37.15 .net] もしアセンブラ詳しい人いて教えてくれる人いればスカイプに来てくれると嬉しいです。 スカID satito39
388 名前:デフォルトの名無しさん mailto:sage [2013/06/03(月) 00:24:53.96 .net] ttp://www.c-tipsref.com/words/stackframe.html
389 名前:デフォルトの名無しさん [2013/06/03(月) 00:28:42.09 .net] >>380 はじめの4バイトと3行目の0x28バイト分はその図でいうとどこに当たるのでしょうか?
390 名前:デフォルトの名無しさん [2013/06/03(月) 01:26:18.00 .net] push %ebp 新たなフレームポインタを書き込むためebpをスタックに退避 mov %esp,%ebp フレームポインタを更新 sub $0x28,%esp 28バイト分のローカル変数領域をスタックに確保
391 名前:デフォルトの名無しさん mailto:sage [2013/06/03(月) 03:11:30.78 .net] >>382 > sub $0x28,%esp 28バイト分のローカル変数領域をスタックに確保 40バイト
392 名前:デフォルトの名無しさん [2013/06/03(月) 07:18:49.71 .net] movl $0xaea4a4af,-0x13(%ebp) movl $0xb6b2a6ba,-0xf(%ebp) movw $0xc4,-0xb(%ebp) movb $0x0,-0x9(%ebp) 続きでこういうものがあればどう動くのですか?
393 名前:デフォルトの名無しさん mailto:sage [2013/06/03(月) 07:23:58.95 .net] >>384 www.intel.co.jp/content/www/jp/ja/developer/download.html#ia32 www.google.co.jp/search?q=at%26t%E8%A8%98%E6%B3%95
394 名前:デフォルトの名無しさん mailto:sage [2013/06/03(月) 09:35:43.09 .net] push %ebp ;ebpの退避(以前の BP の値) mov %esp,%ebp ;ローカル変数参照時にBPを使ってる? sub $0x28,%esp ;ローカル変数領域の確保 何がやりたくて質問してんのやら
395 名前:デフォルトの名無しさん mailto:sage [2013/06/03(月) 15:42:11.79 .net] void foo(void) { uint32_t a,b; uint16_t c; uint8_t d; a = 0xaea4a4af; b = 0xb6b2a6ba; c = 0xc4; d = 0; : : :
396 名前:デフォルトの名無しさん mailto:sage [2013/06/03(月) 16:48:02.81 .net] アラインメント取れていないし文字列でないかい
397 名前:デフォルトの名無しさん [2013/06/03(月) 16:54:22.97 .net] こういうものがありどのように動くのかなとおもいまして、できれば動きを順番に解説していただきたいorz 0x0804840c <+0>: push %ebp 0x0804840d <+1>: mov %esp,%ebp 0x0804840f <+3>: sub $0x28,%esp 0x08048412 <+6>: movl $0xaea4a4af,-0x13(%ebp) 0x08048419 <+13>: movl $0xb6b2a6ba,-0xf(%ebp) 0x08048420 <+20>: movw $0xc4,-0xb(%ebp) 0x08048426 <+26>: movb $0x0,-0x9(%ebp) 0x0804842a <+30>: jmp 0x804844b <foo+63> 0x0804842c <+32>: movzbl -0x9(%ebp),%eax 0x08048430 <+36>: movzbl -0x9(%ebp),%edx 0x08048434 <+40>: movzbl -0x13(%ebp,%edx,1),%ecx 0x08048439 <+45>: mov $0xffffffcc,%edx 0x0804843e <+50>: sub -0x9(%ebp),%dl 0x08048441 <+53>: xor %ecx,%edx 0x08048443 <+55>: mov %dl,-0x13(%ebp,%eax,1) 0x08048447 <+59>: addb $0x1,-0x9(%ebp) 0x0804844b <+63>: cmpb $0x9,-0x9(%ebp) 0x0804844f <+67>: jbe 0x804842c <foo+32> 0x08048451 <+69>: lea -0x13(%ebp),%eax 0x08048454 <+72>: mov %eax,(%esp) 0x08048457 <+75>: call 0x80482f0 <puts@plt> 0x0804845c <+80>: leave 0x0804845d <+81>: ret
398 名前:デフォルトの名無しさん mailto:sage [2013/06/03(月) 17:04:43.50 .net] 自分であたまを使おうという気はゼロ
399 名前:デフォルトの名無しさん mailto:sage [2013/06/03(月) 17:26:14.85 .net] >>389 こりゃ荒らしだな
400 名前:デフォルトの名無しさん mailto:sage [2013/06/03(月) 21:00:12.43 .net] 0xccでxorした文字列(10文字
401 名前:jを戻して表示してるだけ [] [ここ壊れてます]
402 名前:デフォルトの名無しさん mailto:sage [2013/06/03(月) 21:20:33.05 .net] おまいらいじわるだな せめて金額交渉くらいしてやれよ
403 名前:デフォルトの名無しさん mailto:sage [2013/06/07(金) 12:03:20.18 .net] アセンブラのディレクティブなどの方言説明がばらばらって困るよな。 同じCPUなのに命令記述が違いそんなレジスタないみたいな。 データの流れが右から左へと左から右へと逆だったり。 酷いのは命令語のニーモニックが特殊な略なのにその説明がどこにもない。 インラインアセンブラとかも個性ありすぎるのにインライン部分の仕様は 解説が一切ないみたいな。
404 名前:デフォルトの名無しさん mailto:sage [2013/06/07(金) 12:12:03.69 .net] 嫌だったら使うなよ そのためにC言語とかあるんだから アセンブラ無しでハンドアセンブルなんて事もしょっちゅうだぞ
405 名前:デフォルトの名無しさん mailto:sage [2013/06/08(土) 12:28:44.95 .net] 統一仕様を策定してユーザーを増やそう という世界じゃないから
406 名前:片山博文MZパンク ◆0lBZNi.Q7evd [2013/06/08(土) 18:53:19.31 .net] ndisasmのバグ発見! F2 0F D6 ... が正しくMOVDQ2Qに変換されない。
407 名前:片山博文MZパンク ◆0lBZNi.Q7evd mailto:sage [2013/06/12(水) 12:07:16.18 .net] ごめんなさい、バグじゃなかったみたい
408 名前:デフォルトの名無しさん mailto:sage [2013/06/17(月) 00:48:25.48 .net] >>397 たんにサポートしていないだけだろ。正式対応まで待て。
409 名前:デフォルトの名無しさん [2013/06/22(土) 07:16:16.14 .net] #include <stdio.h> void main(void) { unsigned buf[4]; _asm { cld mov esi, offset buf mov eax, 22222 mov ecx, 4 rep stosd }; for (int i=0; i<4; i++) printf("%d\n", buf[i]); } このコードを実行すると意図した結果(buf[0]〜buf[3]まで全部22222になる)にならずハングアップするのですが、 どうすればよろしいでしょうか?
410 名前:デフォルトの名無しさん mailto:sage [2013/06/22(土) 08:30:41.12 .net] >mov esi, offset buf これ lea esi, buf じゃないの?動かしてないけど
411 名前:デフォルトの名無しさん mailto:sage [2013/06/22(土) 08:40:28.48 .net] 動かしてみた あと、esiじゃなくてediな int main(void) { unsigned buf[4]; _asm { cld lea edi, buf mov eax, 22222 mov ecx, 4 rep stosd }; for (int i = 0; i < 4; i++) printf("%d\n", buf[i]); } 22222 22222 22222 22222
412 名前:デフォルトの名無しさん mailto:sage [2013/06/22(土) 10:22:52.80 .net] eaxやecxをpushしなくていいの?
413 名前:400 mailto:sage [2013/06/22(土) 10:47:50.40 .net] >>402 ありがとうございます!
414 名前:デフォルトの名無しさん mailto:sage [2013/06/22(土) 13:15:07.29 .net] >>403 環境依存だからなあ・・・気に掛かるならインラインアセンブラで使うレジスタは 全部退避すると安心かもね でもpushすると例えば lea edi, buf は俺の所では lea edi, [esp] と展開されたので 狂ってくるような気もする 実際やってみないとどうなるか分からないけど
415 名前:片山博文MZパンク ◆0lBZNi.Q7evd [2013/08/05(月) NY:AN:NY.AN .net] 今、逆アセンブラ作ってる。巨大なswitch構文ができた。これをデータ表現にしようと考えている。 やるならx86以外のCPUについても、CPUの違いを吸収して統合させたい。 各CPUのアーキテクチャの表現はどのようにすればいいか?
416 名前:デフォルトの名無しさん mailto:sage [2013/08/05(月) NY:AN:NY.AN .net] 1ワードで複数の命令含むアーキテクチャなんかもフツーにあるし汎用的な表現なんて無理
417 名前:デフォルトの名無しさん mailto:sage [2013/08/05(月) NY:AN:NY.AN .net] 1ビットを一文字とした構文解析と考えればいいのでは?
418 名前:デフォルトの名無しさん mailto:sage [2013/08/05(月) NY:AN:NY.AN .net] 余計なことを考えるのはまともに使えるものを一本仕上げてからにしろ
419 名前:デフォルトの名無しさん mailto:sage [2013/08/05(月) NY:AN:NY.AN .net] ただちに影響はありません
420 名前:デフォルトの名無しさん mailto:sage [2013/08/21(水) NY:AN:NY.AN .net] 【boot】nasm【loader】 toro.2ch.net/test/read.cgi/tech/1377053129/
421 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 15:30:02.86 .net] HxD っていうHEXEDIT使ってるけど、WIN8に変えたら エラー履くようになりました・・・ どうすればいい? Cannot creat fil
422 名前:e "C:¥Program Files¥HxD.ini".アクセスが拒否されました。 [] [ここ壊れてます]
423 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 15:33:52.85 .net] > どうすればいい? いまどき Program Files の下に ini ファイル作ってるソフトなんか捨てれ
424 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 16:31:02.81 .net] 普通どこに作るんだよ?
425 名前:デフォルトの名無しさん [2013/09/06(金) 17:06:30.70 .net] いまどきは C:\Program Files (x86)\
426 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 17:20:48.51 .net] >>414 レジストリかね。 もしくはAppDataとか、マイドキュか。 ユーザーディレクトリの直下にドット付のフォルダを作ってそこに入れてるアプリもあるね。 Program Filesはunix系のOSで言ったら、/usr/bin とか/local/usr/binにあたるから データを保存するのは、ちょっとないね。
427 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 17:21:55.13 .net] Program Dataだろ。
428 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 17:34:33.05 .net] ProgramDataは全ユーザー共通じゃん。
429 名前:デフォルトの名無しさん [2013/09/06(金) 18:00:55.59 .net] chrome.blogspot.jp/2013/09/a-new-breed-of-chrome-apps.html itpro.nikkeibp.co.jp/article/NEWS/20130906/502868/ news.mynavi.jp/news/2013/09/06/057/ internet.watch.impress.co.jp/docs/news/20130906_614308.html
430 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 18:06:17.02 .net] ていうか、exeファイルをProgramFiles直下に置いているような気がするのだが
431 名前:デフォルトの名無しさん mailto:sage [2013/09/06(金) 22:28:35.95 .net] それ以外どこに置くんだ?
432 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 07:46:35.57 .net] Win8のセキュリティ設定を変えるだけだろ? それすらできないやつがアセンブラ? バイナリエディタ? 百年早えわ
433 名前:デフォルトの名無しさん mailto:sage [2013/09/07(土) 08:50:06.65 .net] >>421 そんなところにexeなんて置いたことありませんが
434 名前:デフォルトの名無しさん [2013/09/07(土) 10:30:32.07 .net] つ ttp://www.youtube.com/watch?v=FFH7TWsxsVA
435 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 02:28:35.44 .net] >>168 n % 10 が糞遅いだろ これだから高級言語に被れたあほは
436 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 04:09:22.32 .net] >n % 10 が糞遅いだろ 適切にコード化されてるなら、前段の /10 で %10 も計算できてるな。まあ、そんなコンパイラ存在しないとは思うが。
437 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 04:18:51.19 .net] 除算を使わない高速な方法を>>425 さんが示してくれます
438 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 09:21:50.21 .net] >>168 が糞遅いことを1年以上も研究し続けた >>425 の努力に敬礼
439 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 10:06:55.78 .net] 一度の計算で余りもレジスタに入るから、実質二度手間になるんだろ?
440 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 10:08:58.86 .net] >>425 は gcc -O3 -S とかやったことが一回もないドあほ。 実際にやってみろ。自分がどれだけドあほか、わかるから。
441 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 13:18:25.22 .net] gccが最も効率のいいコードを吐くとでも思ってるのかな? ドあほってレベルじゃないぞ
442 名前:デフォルトの名無しさん [2013/09/10(火) 13:51:02.98 .net] 煽りを入れるのは見比べてからでも遅くはないのでは?
443 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 14:06:41.23 .net] >gccが最も効率のいいコードを吐くとでも 早くも問題をすり替えて逃げ態勢に入りました
444 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 14:12:04.54 .net] cygwin 上の gcc で試した。gcc のバージョンは 4.7.3 _putN: subl $28, %esp movl %ebx, 16(%esp) movl 32(%esp), %ebx movl %esi, 20(%esp) movl %edi, 24(%esp) cmpl $9, %ebx jg L7 L2: movl %ebx, %eax movl $1717986919, %edx movl 20(%esp), %esi imull %edx movl %ebx, %eax movl 24(%esp), %edi sarl $31, %eax sarl $2, %edx subl %eax, %edx leal (%edx,%edx,4), %eax addl %eax, %eax subl %eax, %ebx addl $48, %ebx movl %ebx, 32(%esp) movl 16(%esp), %ebx addl $28, %esp jmp _putchar
445 名前:434 mailto:sage [2013/09/10(火) 14:12:54.83 .net] .p2align 4,,7 L7: movl %ebx, %eax movl $1717986919, %ecx imull %ecx movl %ebx, %eax sarl $31, %eax movl %edx, %esi sarl $2, %esi subl %eax, %esi cmpl $9, %esi jg L8 L3: movl %esi, %eax movl $1717986919, %edx imull %edx movl %esi, %eax sarl $31, %eax sarl $2, %edx subl %eax, %edx leal (%edx,%edx,4), %eax addl %eax, %eax subl %eax, %esi addl $48, %esi movl %esi, (%esp) call _putchar jmp L2
446 名前:434 mailto:sage [2013/09/10(火) 14:13:59.16 .net] .p2align 4,,7 L8: movl %esi, %eax imull %ecx movl %esi, %eax sarl $31, %eax movl %edx, %edi sarl $2, %edi subl %eax, %edi cmpl $9, %edi jle L4 movl %edi, %eax imull %ecx movl %edi, %eax sarl $31, %eax sarl $2, %edx subl %eax, %edx movl %edx, (%esp) call _putN
447 名前:434 mailto:sage [2013/09/10(火) 14:14:44.55 .net] L4: movl %edi, %eax movl $1717986919, %edx imull %edx movl %edi, %eax sarl $31, %eax sarl $2, %edx subl %eax, %edx leal (%edx,%edx,4), %eax addl %eax, %eax subl %eax, %edi addl $48, %edi movl %edi, (%esp) call _putchar jmp L3
448 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 14:45:39.42 .net] >>168 はこう↓書いた方がなんぼかマシ。 void putN(int n) { if (n >= 10) { putN(n / 10); n %= 10; } putchar('0' + n); } こう↓書いて gcc -O3 しても div() 呼び出してる部分が展開されなかったのは意外だった。 #include <stdlib.h> void putN(int n) { if (n >= 10) { div_t d = div(n, 10); putN(d.quot); n = d.rem; } putchar('0' + n); }
449 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 15:33:12.83 .net] div_t とか使ってるの見たことない 誰も使わないから対応しないんじゃなかろうか
450 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 [2013/10/01(火) 09:39:59.60 .net] OFっていつもゼロなの? __asm__("movl $0xFFFFFFFF,%%eax\nadd $4,%%eax\nseto %0\n" :: "m"(b) : "%eax"); printf("%d\n", b); //0
451 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 10:30:38.61 .net] ヒント: 符号付き整数
452 名前:デフォルトの名無しさん mailto:sage [2013/10/01(火) 11:15:46.41 .net] >>441 有り難う
453 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 [2013/10/14(月) 14:01:30.87 .net] x86で int a,b; ADD a,b; がオーバーフローする条件をC言語で表すとどうなりますか?
454 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 mailto:sage [2013/10/14(月) 14:25:40.35 .net] 自己解決しました。 (a<-b) != (a+b<0)
455 名前:デフォルトの名無しさん mailto:sage [2013/10/14(月) 16:26:07.41 .net] a と b 共に 0x80000000(-2147483648) だとして、 (a<-b) != (a+b<0) = (0x80000000<-0x80000000) != (0x80000000+0x80000000<0) = (0x80000000<0x80000000) != (0<0) = (0) != (0) = 0 で全然オーバーフローの検出なんてできてないと思うんだが。
456 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 [2013/10/14(月) 16:44:55.65 .net] >>445 見落としてました。 どうすればよいのでしょうか?
457 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 mailto:sage [2013/10/14(月) 16:55:19.67 .net] むずかしいよぉ〜
458 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 mailto:sage [2013/10/14(月) 17:36:03.61 .net] (a>=0 && b>=0 && a+b<0) || (a<0 && b<0 && a+b>=0) これより簡単にできないみたい。有り難う。
459 名前:デフォルトの名無しさん [2013/10/21(月) 19:44:36.41 .net] ttp://pbs.twimg.com/media/BW4WQ-xCYAAnxN0.png
460 名前:デフォルトの名無しさん mailto:sage [2013/10/21(月) 20:12:25.09 .net] 画面に反して本体がmkIIじゃないのが残念
461 名前:片山博文MZコスモ ◆T6xkBnTXz7B0 [2013/10/22(火) 19:22:12.38 .net] (i) x64のprologで認められている命令とは何か? (ii) x64のepilogで認められている命令とは何か?
462 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 15:31:19.25 .net] (i) スタックに積む命令とスタック領域を確保する命令 (ii) スタックから積み下ろす命令とスタックポインタを補正する命令 でいいんだっけ?
463 名前:デフォルトの名無しさん mailto:sage [2013/11/15(金) 16:30:27.64 .net] 初心者スレの割りにレベルが高くてこんなことを聞くのもためらわれまずが 64bitのCPUに32bitのOS入れて解析ってできますか? CPUも32bitのほうがいろいろ捗りますかね
464 名前:デフォルトの名無しさん mailto:sage [2013/11/15(金) 16:47:32.07 .net] 分からない奴にOSの解析など不可能
465 名前:デフォルトの名無しさん mailto:sage [2013/11/15(金) 21:49:14.28 .net] ねぇここって初心者の質問に答えるスレじゃないの? あとOSの解析なんて言ってないんで^^; 偉そうにしてるとこ悪いけど日本語読んでね
466 名前:デフォルトの名無しさん mailto:sage [2013/11/15(金) 21:53:29.21 .net] 何を解析したいのかも書かない奴がなんでか偉そうだね
467 名前:デフォルトの名無しさん mailto:sage [2013/11/15(金) 23:07:19.82 .net] 川越で解析料理なるものを初めて頂く機会があったが、どうせ薄味でお上品な料理ばかりだろという先入観が打ち砕かれたよ 9000円分の満足感があったかと言われると、まあ貧乏人なので牛丼と比べてNoと言ってしまうのだけど 9000円分の仕事をきっちり味わえたな、という実感はありました
468 名前:デフォルトの名無しさん mailto:sage [2013/11/16(土) 03:45:41.63 .net] 誤表記詐欺ですねわかります
469 名前:デフォルトの名無しさん mailto:sage [2013/11/19(火) 22:00:41.96 .net] ○懐石料理 ×解析料理
470 名前:デフォルトの名無しさん mailto:sage [2013/11/19(火) 23:58:42.94 .net] そう言えばNHKで「会席料理」ってやってて、「あれ?懐石料理じゃないの?」と思ったら 読みは同じでも別の料理だった チラ裏
471 名前:デフォルトの名無しさん mailto:sage [2013/11/20(水) 00:09:28.37 .net] ふうむパーティーフードの訳かしらと英辞郎引いたら、a kaiseki mealだと…
472 名前:デフォルトの名無しさん [2013/11/20(水) 17:38:55.81 .net] このスレにふさわしい話題なので www.amazon.co.jp/dp/4844334794 中古(これはひどい) 原価の9割の価格付けて 2013年9月発売の本なのに「経年劣化」とか 「多少のキズ」とか() www.amazon.co.jp/gp/offer-listing/4844334794 裁断済の書籍になります。書籍本体の表紙・背表紙・本の背中が裁断されています (書籍本体の表紙・背表紙・本の背中はありません)。 その他、カバー・帯を裁断している場合があります。 ページ抜けはチェックした限りではありませんが、見落としがある可能性があります。 経年劣化により多少のキズ・ヨゴレ・ヤブレがあります。 ご了承の上、お買い求め下さい。発送は防水包装の上、メール便またはゆうメールを使用する予定です。
473 名前:デフォルトの名無しさん mailto:sage [2013/11/20(水) 17:41:14.68 .net] NHKは勝手に造語造るの好き
474 名前:デフォルトの名無しさん mailto:sage [2013/11/20(水) 18:06:14.99 .net] >>462 本屋で見かけたけどどうでもいい内容の本だったわ
475 名前:デフォルトの名無しさん mailto:sage [2013/11/20(水) 18:46:31.55 .net] ようやるわと思ったら中国人ぽい名前が並んでるな いいのかインプレス
476 名前:デフォルトの名無しさん mailto:sage [2013/11/20(水) 20:26:04.41 .net] 中国人だからどうだというんだ。 だったら差別したいの?
477 名前:デフォルトの名無しさん mailto:sage [2013/11/20(水) 20:39:39.28 .net] わろた 詳しい出品者情報 正式名称: パウロ屋 ストア代表者名: 電話番号: 080 住所: 世田谷区野毛 その他・備考: Amazonマーケットプレイスにおける商品の返品と返金条件に準拠します 最近の評価: 1(5が最高):「到着予定を過ぎても何日待っても商品の届く気配すらありません。 キャンセルした所応じてくれましたがクレカ払いにした為返金も遅れるし返金確認するまで不安で仕方ありません。 最低な出品者です。」minos..., 2013年11月11日 1(5が最高):「本じゃ有りません。紙束です。こんなものを本屋のサイトで「中古品・可」で出品していました。 トランプみたいに1枚1枚手にとってよむのですか。解体したゴミを売りつける悪質業者です。金返せ。」 スタティック初老人, 2013年11月10日 1(5が最高):「10日以上たっても商品が届かず,連絡しても返答さえありません。正直詐欺かと疑っています。」 かむい, 2013年11月7日
478 名前:デフォルトの名無しさん [2013/12/15(日) 01:33:08.29 .net] マイクロソフトのml.exe(VS2010付属)なのですが、 invokeなどがどんなコードを生成してるのか調べる方法はありますか? リストに出そうとしているのですが、.XALLなどでも表示されません。
479 名前:デフォルトの名無しさん mailto:sage [2013/12/16(月) 08:37:41.69 .net] >>468 デバッガで実行して逆アセンブル表示見れば?
480 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 19:12:15.66 .net] アセンブラの解説サイトを読んでるんですけどレジスタの説明がいろいろ変わって混乱しています たとえばAXレジスタっていってるところもあればEAXレジスタっていってるところもああります。同じものと考えていいんでしょうか?
481 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 19:17:09.98 .net] >>470 AXとEAXとALとAHとRAXの違いなんてぐぐればすぐわかるだろ
482 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 20:57:53.32 .net] AXもEAXもレジスタというよりアキュムレータな
483 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 21:02:34.09 .net] AXもEAXもレジスタ
484 名前:デフォルトの名無しさん mailto:sage [2013/12/31(火) 23:10:57.04 .net] AXだけが特別扱いになってるのは8086の名残りだけだから、 今となってはわざわざ特別扱いしてアキュームレータとか言う理由はないな。
485 名前:デフォルトの名無しさん mailto:sage [2014/01/01(水) 02:11:33.12 .net] bxもベースレジスタって名前なかったっけ んでcxがカウンタでdxがデータだっけ? axが特別っつーか、全部に役割持たせてたんだと思う、当初は
486 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 00:24:45.35 .net] >>474 昔(Z80とか8086)はA系レジスタ向けの演算命令が他のB〜系レジスタよりも 多くてA系はアキュムレータだと説得力があった記憶があるけど、 今はどのレジスタも演算命令数は同じというか、差別されていないの?
487 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 00:31:24.41 .net] IA-32やX64でも差別されてるよ
488 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 02:54:44.28 .net] Cの関数の戻り値はEAX(キリっ
489 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 03:02:14.43 .net] ABIに拠るし構造体をEAXで返すことはないと思う
490 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 09:59:16.22 .net] アキュムレーターは索引レジスタに使えないというイメージがあったが、 32bitアドレッシングからは[eax+ecx+12]とか使えるしなぁ
491 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 00:00:03.75 .net] 建て増し構造というか奇形というかスッキリしなさがx86系の嫌いなとこだなあ。 MC68000なんか今触っても整然としてて美しいし。 x64で大幅に改善されたというか、やっと68000に追いつけたんだなぁ。
492 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 00:35:29.00 .net] アドレスレジスタとデータレジスタが別なアーキテクチャは最初から糞
493 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 01:06:13.22 .net] オフセットや相対ジャンプに16ビットの制限のある68000は糞
494 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 02:09:13.49 .net] >>482 アキュームレータとベースレジスタが各一つしかないとか、個数の制限があればそうだね。 でも、十分な数が用意されてるから、実際には困るケースなんて皆無なんだ。 C言語との組み合わせを考えたら、データとアドレスがハードウェアレベルで区別されてるのは好ましいことだしね。 >>483 デコボコしたメモリモデルなんてものがあって8bit時代を引きずり続けたx86にはとてもかなわないよ。
495 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 02:11:58.78 .net] >>484 データレジスタは8つでは足りないしアドレスレジスタは8つ(7つ)も要らん。要はバランスが悪い。
496 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 02:15:29.84 .net] >>484 >C言語との組み合わせを考えたら、データとアドレスがハードウェアレベルで区別されてるのは好ましいことだしね。 具体的にメリットをご説明下さい。
497 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 02:18:20.25 .net] >>484 >デコボコしたメモリモデルなんてものがあって8bit時代を引きずり続けたx86にはとてもかなわないよ。 8bit時代からのしがらみなんてなかった筈なのにセグメントでメモリ管理してた68kMacもそう変わらんよ。
498 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 02:19:39.55 .net] >>484 >アキュームレータとベースレジスタが各一つしかないとか、個数の制限があればそうだね。 6800乙w
499 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 02:24:52.53 .net] >MC68000なんか今触っても整然としてて美しいし。 当時としてはマシな部類だったが、今こんなこと言ってる奴はアフォ
500 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 09:05:56.66 .net] RISC原理主義者がきた〜w
501 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 10:37:25.99 .net] データ=アドレスのレジスタ1個でも気合でどうにかなるだろ
502 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 11:18:59.86 .net] 68000を否定するとRISC原理主義者って意味分からん。
503 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 15:15:03.31 .net] どんなにアーキテクチャが優れていてもソフト資産がなければ糞 すぐ消える
504 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 15:54:06.91 .net] 組み込みならソフト資産なんて関係無いだろう
505 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 15:54:47.93 .net] パソコン用なんかではその通りだが、特定用途向けとかなら事情が違う >ソフト資産がなければ糞
506 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 15:57:57.54 .net] >>494 メーカー提供や他社製品のサンプルプログラムやライブラリ、RTOSとか、組み込み用途でも あれば便利なソフト資産と呼べるものは存在するよ。
507 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 18:15:52.10 .net] 本来表に公開することのないような出来上がったソフトのことじゃなくて 開発するためのソフトの話か? そりゃある方が良いのは当たり前なことだが、そんなのわざわざ書くことじゃないだろ。
508 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 18:26:49.96 .net] >そんなのわざわざ書くことじゃないだろ。 なぜ??
509 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 18:58:28.29 .net] 86系と68系の話の流れの>>493 に対してだから、 ここでいうソフト資産とは、そのアーキテクチャ向けに 作られたソフトのことだろ。 開発のためのソフトじゃなく。
510 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 19:06:21.98 .net] >>499 >ここでいうソフト資産とは、そのアーキテクチャ向けに >作られたソフトのことだろ。 「メーカー提供や他社製品のサンプルプログラムやライブラリ、RTOSとか」ってのは それから外れてないだろ。
511 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 19:11:12.14 .net] >>497 > 開発するためのソフトの話か? 良く分かってないみたいだけどツールかなんかと勘違いしてね?
512 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 20:19:58.67 .net] >>485 8個で足りないんだ?x86(IA-32)だと汎用レジスタは何個だったかな? こたえ:0個 アキュームレータ、ベース、カウンタ、データ、スタックポインタ、スタックベース、ソースインデックス、デスティネーションインデックス、 8つの各用途に分かれていて「汎用」レジスタは存在しない。(命令によって割り当てられないレジスタが多く存在する) x64は便利になったね。AMDはえらい。Intelは救いようのないアホ。 >>486 ポインタの理解が捗る。あれはアドレスレジスタそのものなんだ、ってね。 >>487 Macはクソそのものだよ。68000の特性を理解してないシステム構成だかんね。 >>488 8bit CPUと比較しなけりゃならないx86が恥ずかしいって、わかんないのかな。
513 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 21:12:09.54 .net] >>502 > 8個で足りないんだ?x86(IA-32)だと汎用レジスタは何個だったかな? www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-1-manual.pdf > 3.4.1 General-Purpose Registers > The 32-bit general-purpose registers EAX, EBX, ECX, EDX, ESI, EDI, EBP, and ESP are provided for holding the > following items: > • Operands for logical and arithmetic operations > • Operands for address calculations > • Memory pointers MC68000に、論理/算術演算、アドレス計算、メモリポインタとして使える汎用レジスタはいくつあるの? こたえ:0個 データレジスタとアドレスレジスタの区別のあるMC68000に汎用レジスタはありませんw
514 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 21:21:49.84 .net] >>502 >8bit CPUと比較しなけりゃならないx86が恥ずかしいって、わかんないのかな。 汎用レジスタがないのはMC68000もMC6800も同じじゃないの? x86? 汎用レジスタあるけど?
515 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 22:34:07.51 .net] 制限だらけのx86が恥ずかしげもなく汎用レジスタを名乗り(実際は命令によって割り当てられないor割り当てることを強要される事が多々ある) 制限がなく数も十分ありデータとアドレスの区別をしてなお整然とした68000のデータレジスタのありかたを罵倒する
516 名前: 滑稽だねえ おたくら今からAMDがもたらしてくれた汎用レジスタたっぷりなx86からIntelがいつまでも放置して汚らしかったx86に戻れんの? [] [ここ壊れてます]
517 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 22:39:20.79 .net] >>504 MC6800は8bit CPUだから別にいいの。8bit CPUは可能な限りシンプルであるべきだから。 x86が汚らしいのは32bitアーキテクチャに不合理なもんを持込みすぎてるからであって あれが8bitないしその建てましの16bitから出てこないのであれば全然なんも問題ないの
518 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 22:39:56.02 .net] (なんか語り始めた・・・)
519 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 23:06:26.22 .net] プログラマとしてはデータ/アドレスどちらでも使える汎用レジスタは嬉しいけど、 アドレス線に専念出来るアドレスレジスタとデータ(計算)に専念出来る データレジスタを分けるのは回路設計的には理にかなっているんじゃないの?
520 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 23:43:37.21 .net] >>505 >AMDがもたらしてくれた汎用レジスタたっぷりなx86 AMD64でR8-R15使うときの命令コードってどんなんか知ってる?
521 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 01:32:44.12 .net] 48/ 33 C0 xor rax, rax 48/ 33 D2 xor rdx, rdx 4D/ 33 C0 xor r8, r8 4D/ 33 FF xor r15, r15 33 C0 xor eax, eax 33 D2 xor edx, edx 45/ 33 C0 xor r8d, r8d 45/ 33 FF xor r15d, r15d 66| 33 C0 xor ax, ax 66| 33 D2 xor dx, dx 66| 45/ 33 C0 xor r8w, r8w 66| 45/ 33 FF xor r15w, r15w 32 C0 xor al, al 32 D2 xor dl, dl 45/ 32 C0 xor r8b, r8b 45/ 32 FF xor r15b, r15b
522 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 03:02:46.89 .net] はい、分かってないこと確定ですw
523 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 03:27:26.48 .net] これは
524 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 03:29:29.10 .net] >あれが8bitないしその建てましの16bitから出てこないのであれば全然なんも問題ないの ふむふむ
525 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 11:16:45.98 .net] x64でVCではインラインアセンブラが廃止されたからまたこのスレ流行るかと思ったらそうでもないのな compiler intrinsicsがあるからデバドラでも作らない限りあまり用途はないのか?
526 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 14:47:47.76 .net] SSE2のMOVSDとAVXのVMOVSDはニモニック以外なんか違いあるの?
527 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 16:05:02.11 .net] AMDがx64作れるようになったのは文句言って来そうな MotorolaをIntelが潰してくれたからだろ
528 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 11:49:16.95 .net] それもあるし、IA-64の失敗で迷走してた事もあるんじゃね 実際鯖はXeonで十分だしソフト資産も多いもんなあ
529 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 17:57:38.76 .net] >>515 prefixがVEXになっただけで動作は一緒、YMM系の命令体系に合わせた。 F2/ 0F 10 05 00000020 R movsd xmm0, data_1 C5 FB 10 05 00000020 R vmovsd xmm0, data_1
530 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 09:25:44.97 .net] SSEスレは敷居が高いんでこっちでいいかな ANDPSやORPSというのは何のためにあるのでしょう? 整数用のPANDやPORはわかるのですが 浮動小数点の論理演算というのがピンとこない
531 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 09:33:07.89 .net] わからんけど論理回路組んでいったらそういう操作が余ったので命令にしたんじゃないの? それかfrexp()とかldexp()みたいな関数を作るためとか
532 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 15:52:02.89 .net] SSE命令がが整数演算に対応したのはSSE2からだよ そのせいじゃないの?
533 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 19:53:20.99 .net] 比較命令とかでマスク作って2つのレジスタの任意要素を合成とか 符号ビットいじって絶対値や符号反転とか 整数、少数命令の混在はペナルティが入るから、頻度は少なくても無いと困る
534 名前:デフォルトの名無しさん mailto:sage [2014/01/13(月) 10:05:08.34 .net] なるほど、ありがとうございます。 確かに符号や比較命令のマスクに使えますね。 整数、浮動小数点の混在にペナルティが入るのは知りませんでした。
535 名前:デフォルトの名無しさん mailto:sage [2014/01/14(火) 03:58:16.98 .net] Core i (Nehalem) 以降のIntel CPUにある制約ね >ペナルティ 昔は命令長節約のために整数用にもandpsとかを使うなんてのも往々にして行われていたけれど 今のIntel CPUでは逆に遅くなるという寸法
536 名前:デフォルトの名無しさん mailto:sage [2014/01/28(火) 14:52:09.84 .net] VS2010のでコンパイルしてます。 セグメントレジスターを使うとINVOKEが変なコードをはくのですが仕様ですか? ; ml /c xxx.asm ; dumpbin /disasm xxx.obj .686 .model flat, stdcall foo proto x:word, y:dword, z:byte .code foo proc uses ebx esi edi, x:word, y:dword, z:byte ret foo endp start: invoke foo, fs, gs, al ret end
537 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 02:45:14.99 .net] >>525 おまえ大丈夫か?w
538 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 13:35:13.40 .net] こりゃひどいな、バグかな 0000000D: 50 push eax 0000000E: 66 6A 00 push 0 00000011: 0F A8 push gs 00000013: 83 EC 02 sub esp,2 00000016: 0F A0 push fs 00000018: E8 E3 FF FF FF call _foo@12
539 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 20:32:36.55 .net] はじめて読む486を買ってきたけど、 テストプログラムの環境ってWin3.1を想定してるのか? それともDOS? 実行環境が作れない時点で挫折しそう。。。
540 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 21:22:13.69 .net] DOS VMware か何かを使って、FreeDOS が動く....かなぁ。
541 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 21:22:19.62 .net] DOS
542 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 21:28:01.20 .net] >>529 >>530 情報ありがとう。 DOSはVMWareでなんとかなりそうだけど、 appendixを読むと borland c++3.1 & turbo assembler 3.2 か vc++1.0 & masm6.0 で動作するみたいだけど、そんなの手にはいらんぞ。。。
543 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 22:00:38.07 .net] タダで配ってる Visual C++ Express版に ml.exe 入ってるしなんとかなるべ
544 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 22:17:26.76 .net] ならねーよ
545 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 22:26:41.38 .net] アセンブラはLinkさえ手に入れば最近のml.exeでもいけるよ〜 DOS用にアセンブルする場合は ml /omf を忘れずに CはOpenWatcomで間に合うな
546 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 22:32:20.56 .net] >>534 ありがとう。 火曜に試してみるよ
547 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 22:37:02.43 .net] 16bitのコンパイラならTurbo CやLSIC86試食版があるな。 LSIC86試食版はMASMとは書式が違うがアセンブラも入ってるし使い方次第では便利に使えるだろう。
548 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 23:33:16.06 .net] A86だったかR86ね。 あれは、たとえばORG擬似命令が無くて、RS擬似命令で、(目的アドレス - 現在アドレス) の サイズのメモリを確保してやることでアドレスを調整するとか、あれこれ、知ってる人に 聞かないとわかんないテクが要るのが大変。 ValLinkとArrowAsmってのが2000年頃の定番だったが、今どうなってることやら。 NASMもNASMでMASMと違うからねぇ。
549 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 04:57:21.71 .net] www.agner.org/optimize/
550 名前:デフォルトの名無しさん [2014/02/24(月) 19:05:52.56 .net] おすすめ書籍とかサイトなど御座いますか?
551 名前:デフォルトの名無しさん mailto:sage [2014/02/24(月) 19:07:46.95 .net] ないですね。
552 名前:,,・´∀`・,,)っ-○○○ [2014/02/26(水) 00:38:53.88 .net] 先にCOMET-II/CASL-IIを勉強したらいいんじゃない? これは情報処理技術者のテキスト読んでるだけでたいていクリアできる 資格もとれて一石二鳥。 x86ならこれ1冊で。あとは個々の命令の仕様はIntelのサイトからPDF落とす。 ・はじめて読むPentium マシン語入門編
553 名前:デフォルトの名無しさん mailto:sage [2014/02/26(水) 00:46:38.24 .net] PCを機械語で使うのが目的なのか、他の何か特定のデバイスなのか、 対象はなんでもいいのか、で答えが違うな。
554 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 02:16:08.54 .net] >>539 聖書がおすすめ
555 名前:デフォルトの名無しさん mailto:sage [2014/02/27(木) 06:04:53.44 .net] 新約旧約どっちがいい?
556 名前:デフォルトの名無しさん [2014/02/27(木) 06:10:52.32 .net] コーランが良いアルニダ
557 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 04:04:41.92 ID:4B5tOSzi.net] NXビットとかってアセンブラでいじれるの?
558 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 04:57:51.84 ID:/EKU/g4K.net] アセンブラでいじれなきゃ他の言語でも無理ダナ
559 名前:デフォルトの名無しさん mailto:sage [2014/03/12(水) 17:09:14.41 ID:Rs2gHvws.net] wrmsrで変更できるね リング0の特権命令だけど
560 名前:デフォルトの名無しさん mailto:sage [2014/05/16(金) 01:36:30.34 ID:750USUyV.net] 同値xorがゼロクリアになるのはテクではなくブール演算の初歩知識ではなかろうか 煽りでなく、むしろその手の基礎から始めてググり続けると良いのでは
561 名前:デフォルトの名無しさん [2014/05/16(金) 02:06:29.00 ID:6rXJBimE.net] 初心者に問題。 AL に入っている数値を [DI] に16進数2ケタで出力せよ。 ※ [DI+00] に上位桁、[DI+01] に下位桁
562 名前:デフォルトの名無しさん mailto:sage [2014/05/16(金) 03:00:26.63 ID:ZWSdCtrz.net] 学校の宿題他人に訊くなよ…。
563 名前:デフォルトの名無しさん mailto:sage [2014/05/16(金) 08:30:06.10 ID:hJC//Tt9.net] >>549 まるち
564 名前:デフォルトの名無しさん mailto:sage [2014/05/16(金) 08:33:06.36 ID:hJC//Tt9.net] >>550 mov [DI], al and [DI], 0x0F shr al, 4 and al, 0x0F mov [DI+01], al
565 名前:デフォルトの名無しさん mailto:sage [2014/05/16(金) 10:03:09.08 ID:PLhTA3a9.net] >>550 久しぶりに触ったけど debug.exe って 64bit Windows だと用意されてないんだな -a 0100 mov ax, cs mov es, ax mov di, 0080 mov al, 5a inc di mov [di], al mov cl, 4 shr al, cl dec di mov [di], al mov al, 0f and [di], al inc di and [di], al
566 名前:デフォルトの名無しさん [2014/05/20(火) 19:52:17.51 ID:EAxy/lYF.net] そこで Virtual PC ですよ。
567 名前:デフォルトの名無しさん mailto:sage [2014/05/25(日) 20:19:23.16 ID:t1V1lNcr.net] アセンブラの学習するのにおすすめの参考書あります? cがちょっとできるレベルなんだけど
568 名前:デフォルトの名無しさん mailto:sage [2014/05/25(日) 22:19:07.25 ID:z/SkfJN9.net] 基本情報のアセンブラの対策本でも読めばいいんじゃね
569 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 08:56:21.98 ID:lvFZnHPn.net] CASL付きポケコンの説明書とかw ただポケコンがオワコンを通り越して生産終了w
570 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 12:04:51.49 ID:ptXAqcmg.net] 「漢字コード」さんはポケコンの時代で時間が止まってる上にそういう自覚がない人でしょ。 だから話が通じない上に一人で逆上してる。 だから放置されてるのに...
571 名前:デフォルトの名無しさん mailto:sage [2014/05/26(月) 14:27:02.60 ID:y9c5KjIu.net] デムパさん?
572 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 10:59:15.94 ID:4srfku2X.net] >>550 ビッグエンディアンは好かん。
573 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 17:53:17.36 ID:xWuYqldz.net] www5c.biglobe.ne.jp/~ecb/assembler/4_3a.html このページを見ながら分岐命令を勉強しているんですがJL・JLE・JNG・JNGE命令などにあるフラグで SF<>OFなどの<>は何を意味するんですか?
574 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 18:08:44.18 ID:pVBw+Lsj.net] >>562 not equal
575 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 22:44:28.88 ID:xWuYqldz.net] >>563 返答ありがとうごじます。危うく詰みそうになりました
576 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 17:54:50.58 ID:/tv+CkMy.net] データ転送命令なのですが MOV AL,BYTE PTR DS:[ECX+EDI] この意味がよくわかりません BYTE PTRがバイト宣言?なのはわかりますが、後ろ側のDS:[ECX+EDI]ってのがいまいちぱっとわかりません
577 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 18:57:10.25 ID:M285qaIr.net] この状況でds修飾は不要 。c言語風に書くとこんな感じ al = *(byte *)(ecx+edi);
578 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 20:58:42.27 ID:55VBH6H6.net] DSは必要
579 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 21:37:09.24 ID:o52VmkJp.net] ストリングス転送命令ではなさそうだけど?
580 名前:566 mailto:sage [2014/06/05(木) 22:18:58.64 ID:/tv+CkMy.net] ECXにEDIを足したものをALにコピーって意味でいいんでしょうか? 後ろのDS:[]ってどういう意味があるんでしょうか?
581 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 22:43:49.27 ID:bOGqmnDA.net] 機械語として見るとセグメントオーバーライドプレフィックスが付いている(ように見える)、 ということだろうけど、普通のメモリアクセスのセグメントはDSなので冗長(必要ない)。 ECX+EDI の結果をアドレスとして、そのアドレスに(バイト単位で)メモリアクセスしてALに コピー、という意味だけど、そもそも正しい場所を解析しようとしているのか怪しいな。
582 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 22:49:00.65 ID:dSg5bErh.net] x64のRIP相対アドレッシングの場合はどうなんのかな
583 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 06:48:37.37 ID:NiHdmLTJ.net] mov ax,[rip+4] 初心者の範疇ではないな
584 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 00:39:40.37 ID:42HLXVNl.net] >>544 Windows的にはNTからだろ?
585 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 04:28:15.67 ID:HlN+9CGy.net] オペランドを1つしか取らないアセンブリってどの種類に分けられる? 初歩的かもしれないけどぐぐるときに困ってるから教えてほしい。
586 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 04:58:06.00 ID:ftf2LwSc.net] >>574 >オペランドを1つしか取らないアセンブリってどの種類に分けられる? プロセッサに拠る
587 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 04:59:38.74 ID:HlN+9CGy.net] 16ビットマイクロプロセッサです
588 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 05:08:45.69 ID:ftf2LwSc.net] そんなのいくらもあるよ bitsavers.informatik.uni-stuttgart.de/pdf/ti/TMS9900/TMS9995.pdf datasheets.chipdb.org/Western%20Design/w65c816s.pdf www.freescale.com/files/32bit/doc/ref_manual/MC68000UM.pdf documentation.renesas.com/doc/products/mpumcu/doc/rl78/r01us0015jj0210_rl78.pdf
589 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 11:26:24.62 ID:u3dUy4Sv.net] 1アドレス方式とか1オペランド方式、という分類はあるけど、それのこと?
590 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 15:04:36.72 ID:bare2SL/.net] >アセンブリ という用語をどういう意味で使ってるかによるかな。 個々のアセンブリ命令自体には特に分類はない。 そういう命令を主に使うCPUのアーキテクチャといえば、 1オペランド方式とかアキュムレータマシンとかそんな感じか?
591 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 17:07:24.15 ID:uqMqHKO4.net] PLCも仲間入り?
592 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 21:17:21.71 ID:VEYGFS+g.net] >>571 MASM64はラベルとかはrip相対になってるな NASMはDEFAULT REL使ってる
593 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 11:30:26.96 ID:U9hBzx6T.net] Windowsの64bit EXEに再配置の仕組みは残ってるの? rip相対と混在できるかってことだけど
594 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 12:15:57.26 ID:0lLCwyof.net] >>582 自分はrip相対のモードでしか使ったことないけど、使い
595 名前:勝手は32bitと変わらないよ そもそもx64はオフセットが32bitに制限されてるから、NASMがrip相対を デフォルトにしてない理由がよく分からん NASMはabsとかrelを使えば混在できるみたいだね ttps://www.tortall.net/projects/yasm/manual/html/nasm-effaddr.html [] [ここ壊れてます]
596 名前:,,・´∀`・,,)っ-○○○ [2014/06/08(日) 12:25:05.93 ID:qgapksJl.net] mov命令だけだったっけ?disp64使えたのって SIBなしのdisp32が相対、SIBありが絶対
597 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 13:03:19.30 ID:0lLCwyof.net] >>584 64bitのメモリオフセットはmovでもraxだけだね(0xA1, 0xA3) 即値なら他のレジスタも使えるけど
598 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 15:18:04.41 ID:gOfGwFVR.net] いまML64で遊んでるけど、混在できてるかんじですね。 LEA RAX, LABELxx MOV RAX, OFFSET LABELxx LEA使うとrup相対で下だと絶対になってるような。 64bitだとLEA使ったほうが良いの?
599 名前:,,・´∀`・,,)っ-○○○ [2014/06/08(日) 17:38:33.43 ID:qgapksJl.net] 別にRIP相対アドレスなら速くて絶対アドレスは遅いなんてことはない。 Haswellではmovは1サイクルあたり2命令のスループット。 leaは1命令。 Atomとかがターゲットなら割と命令長は気にしたほうがいいけど (命令フェッチが8byte/clkしかないから)
600 名前:デフォルトの名無しさん mailto:sage [2014/06/09(月) 01:56:46.89 ID:r1q53MGM.net] リロケーションのコストを気にしなきゃいかんのは よほどでかいDLLを2つ以上作るときくらい
601 名前:デフォルトの名無しさん [2014/07/20(日) 04:01:19.48 ID:jA7npZ7N.net] 英文字を入力して大文字なとき小文字に変換するアセンブラコードを教えて下さいm(_ _)m
602 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 04:59:50.88 ID:glgeKy6r.net] なんでこのスレはAssembly言語をAssemblerって言うの?
603 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 05:05:02.94 ID:RQRWxhz5.net] ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA%E8%A8%80%E8%AA%9E > アセンブリ言語で書かれたプログラムを機械語プログラムに変換する事をアセンブル (assemble) すると言い、 > それを行うプログラムの事をアセンブラ (assembler) と言う。なお、アセンブリ言語の意味で「アセンブラ」 > または「アセンブラ言語」(Assembler Language)と呼ぶ場合も多い[注 1]。 > 脚注 > 1. IBMはSystem/360から2011年現在まで一貫してアセンブラ言語(Assembler Language)と呼んでいる。 > 例:IBM High Level Assembler
604 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 05:24:42.88 ID:W4duPEEG.net] >>589 C言語で char c = 'H'; if ('A' <= c) { if (c <= 'Z') { c += ('a' - 'A'); } } をコンパイルして出てくるアセンブリコードを参考にしてみるとか
605 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 05:48:11.47 ID:RnwVM2ZH.net] >>591 Assembler languageでググるとAssembly languageが大量に出てくるけど、 このスレはIBMかぶれなの? てか組立言語(Assembly lavigne)を 組立機(Assembler)って言うの気持ち悪くね。
606 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 08:34:23.52 ID:1VhfX4Ek.net] IPAとかもアセンブラ言語って呼んでた気がするからもう気にしないことにしてる
607 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 09:11:23.94 ID:Hpo7L/hK.net] >>593 単にアセンブラって言うことはよくある。「アセンブラで書く」とか コンテキストで、プログラムのアセンブラとは区別が付く 用語のバラバラ感は、英語でも同様みたいだね en.wikipedia.org/wiki/Assembly_language#Related_terminology
608 名前:デフォルトの名無しさん mailto:sage [2014/07/22(火) 13:16:19.12 ID:P1jRYX3s.net] >>589 ; AL <-- 文字コード (1) 大文字→小文字 、他の文字
609 名前:ヘそのまま。 cmp al,'A' jb @f cmp al,'Z' ja @f or al,('A' xor 'a') ; 他の文字が不定でいいならこの行だけでOK。 @@: (2) 小文字→大文字 、他の文字はそのまま。 cmp al,'a' jb @f cmp al,'z' ja @f and al,not('A' xor 'a') ; 他の文字が不定でいいならこの行だけでOK。 @@: [] [ここ壊れてます]
610 名前:590 [2014/07/24(木) 01:43:01.19 ID:hv8nubjy.net] >>596 ありがとうございます それは、CASLUの文法ですか?CASLUの文法でお願いしますm(_ _)m detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12132311387 上に2つの問題があるので、日が出る前に誰が教えて下さい・・・ ウェブマネーでもアップルカードでも現金でもどんな形でも1000円分あげます 先着でお願いします。その際にメアド明記を必ずお願いします。 大学の単位掛かってるのでお願いします・・
611 名前:デフォルトの名無しさん mailto:sage [2014/07/24(木) 02:40:58.69 ID:weGa5ogB.net] 宿題は自分でやろう # つか、大学でCASLII? 底辺だな…。
612 名前:デフォルトの名無しさん mailto:sage [2014/07/24(木) 02:48:29.48 ID:MYJWPOnC.net] >>598 いやCASLを題材としてCPUの内部までやるところもあるよ、教科書もあったけれどもどっかにいってしまった‥もう一度手元に呼び戻したいものだ
613 名前:デフォルトの名無しさん mailto:sage [2014/07/24(木) 02:57:56.22 ID:weGa5ogB.net] > いやCASLを題材としてCPUの内部までやるところもあるよ、 CASL題材に内部までやったところで底辺には変わらん せめてOS動く程度のアーキテクチャでFPGAで実装くらいやってのもんだろw
614 名前:デフォルトの名無しさん mailto:sage [2014/07/24(木) 06:16:57.15 ID:MYJWPOnC.net] そうか、最近なら FPGA っていうのはありだね
615 名前:デフォルトの名無しさん mailto:sage [2014/07/24(木) 14:20:58.97 ID:2qFeAMu1.net] >大学の単位掛かってる 赤点取った後の、お情け課題提出に見える。
616 名前:デフォルトの名無しさん mailto:sage [2014/07/25(金) 03:38:44.05 ID:5HeCUYeT.net] どちらにしても、石もアセンブラも後出しってのはなぁ… CASLなら初めからCASLと書いて欲しいかな
617 名前:,,・´∀`・,,)っ-○○○ [2014/07/25(金) 08:54:19.70 ID:8TTeu6gK.net] 入力するのがアルファベットって決まってるなら c |= 0x20; だけでいいけどな
618 名前:デフォルトの名無しさん mailto:sage [2014/07/25(金) 09:39:55.89 ID:cQJQccdW.net] 丁度良い練習問題は Base64
619 名前:デフォルトの名無しさん mailto:sage [2014/07/28(月) 18:45:13.44 ID:klE3KiB9.net] 下のプログラムをvs2013でリリースビルドした結果なんですが、剰余算の式の過程が訳分からないです リバーシングに興味あってアセンブラいじりだしたんですがわかる人いますか? ; 6 : (i % 3 == 0) ? ((i % 5 == 0) ? printf("%3d hoge\n",i) : printf("%3d hige\n",i)) : printf("%3d hoge\n",i); mov eax, -1431655765 ; aaaaaaabH mov ecx, esi mul esi push esi shr edx, 1 lea eax, DWORD PTR [edx+edx*2] sub ecx, eax jne SHORT $LN8@main mov eax, -858993459 ; cccccccdH mov ecx, esi mul esi shr edx, 2 lea eax, DWORD PTR [edx+edx*4] sub ecx, eax je SHORT $LN8@main push OFFSET ??_C@_09FLCGICCH@?$CF3d?5hige?6?$AA@ jmp SHORT $LN14@main
620 名前:デフォルトの名無しさん mailto:sage [2014/07/28(月) 19:29:51.50 ID:74FTDS++.net] >>606 esi に i の値が入ってるとして、 mov eax, -1431655765 ; aaaaaaabH mul esi shr edx, 1 lea eax, DWORD PTR [edx+edx*2] sub esi, eax jne SHORT $LN8@main で何やってるか考えてみれ。
621 名前:デフォルトの名無しさん mailto:sage [2014/07/28(月) 23:02:52.60 ID:pFFfm4RG.net] 普通に3や5で割るより早いのかのぉ?
622 名前:デフォルトの名無しさん mailto:sage [2014/07/29(火) 11:55:06.03 ID:M1sSUXRJ.net] 『ハッカーのたのしみ』の10章かな
623 名前:,,・´∀`・,,)っ-○○○ [2014/08/07(木) 20:45:20.65 ID:mDZmRo1A.net] MMX/SSE/AVXの整数演算では除算命令がないから逆数との積はしょっちゅう使うよ
624 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2014/08/07(木) 22:11:11.87 ID:mDZmRo1A.net] ちなみに10進数で9の倍数の求め方ってどうやるか知ってる? 全部の桁の数字を、最後の1桁になるまで足して9になればそれが9の倍数。 9にならなければそれが剰余。 3の場合も、整数値を4進数とみなして同じことをやれば 掛け算すら使わずに3の剰余を求めることができる。 ビット演算+シフト+足し算だけ。 収束にやや時間はかかるけどいろいろ応用は利く。 (CASL/COMETって掛け算命令すらなかったよね)
625 名前:デフォルトの名無しさん mailto:sage [2014/08/07(木) 22:20:07.93 ID:bcHrnzcz.net] >>611 >ちなみに10進数で9の倍数の求め方ってどうやるか知ってる? >全部の桁の数字を、最後の1桁になるまで足して9になればそれが9の倍数。 BCDでもない限りは「10進数で」「全部の桁の数字」って言ってる時点で除算が発生してるってことだから 素直に9で割って余りがあるか判定したほうが良い。
626 名前:デフォルトの名無しさん mailto:sage [2014/08/08(金) 05:17:13.57 ID:1UU7vf/D.net] >>611 小学校で習う
627 名前:デフォルトの名無しさん mailto:sage [2014/08/08(金) 10:20:34.18 ID:3pQsoEzr.net] できれば0は9の倍数の仲間に入れて欲しい
628 名前:デフォルトの名無しさん mailto:sage [2014/08/08(金) 10:25:22.80 ID:gW33htdT.net] ちなみに2進数で1の倍数の求め方ってどうやるか知ってる? 全部の桁の数字を、最後の1桁になるまで足して1になればそれが1の倍数。 1にならなければそれが剰余。
629 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2014/08/08(金) 23:48:43.27 ID:QdNtltyv.net] >>612 別に9の倍数を求める必要はないよ。あくまで例として出しただけで。 3と5の剰余を求めたいんでしょ。3なら分割統治法で2ビット値を足し続ければいい。 整数除算はモダンなCPUでも何十サイクルもかかるからビット演算+加減算に 展開したほうが速い場合は多々ある。 > 素直に9で割って余りがあるか判定したほうが良い。 除算・剰余命令が使えないCPUで同じこといえるの? 9の倍数の判定は、7かけてから6ビットに縮約することでできる。
630 名前:デフォルトの名無しさん mailto:sage [2014/08/09(土) 00:07:52.61 ID:L0D9xiK5.net] >>616 >3と5の剰余を求めたいんでしょ。3なら分割統治法で2ビット値を足し続ければいい。 >整数除算はモダンなCPUでも何十サイクルもかかるからビット演算+加減算に >展開したほうが速い場合は多々ある。 ねぇよ馬鹿か
631 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2014/08/09(土) 00:20:22.24 ID:nh0jgYrR.net] あるよ馬鹿か
632 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2014/08/09(土) 00:21:55.81 ID:nh0jgYrR.net] ちなみに多倍長整数の因数分解とかでしょっちゅうやる
633 名前:デフォルトの名無しさん mailto:sage [2014/08/09(土) 03:51:34.63 ID:pLOg/Mid.net] >>611 13の倍数、7の倍数をどうぞ
634 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2014/08/09(土) 09:01:38.99 ID:nh0jgYrR.net] [ビット縮約を利用したNの倍数判定法] 1. メルセンヌ数2^n - 1を素因数分解してNを約数として持つ任意のnを決める。 2. Nの倍数判定をしたい数に、 (2^n - 1)/Nを掛ける。 3. n(またはその倍数)ビット単位で切り出し、加算する。 また、最後のnビットに収束するまでこれを繰り返す。 4. nビットに収束時、2^n - 1になっていればその数はNの倍数 (応用例として更に1足して2^n(あるいは1)への収束判定でもおk) ちなみに5は端折ったけど3倍して4ビットに縮約 7はそのまま3ビット、13の場合は315倍して12ビット RSAとか自前で実装したことあるなら思いつくだろこんなん
635 名前:デフォルトの名無しさん mailto:sage [2014/08/09(土) 10:36:35.37 ID:7qP+m4C1.net] 自分基準で物事を考える人って…
636 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2014/08/09(土) 11:00:39.66 ID:nh0jgYrR.net] 法と剰余なんて大学では基礎科目の範疇のはずだけどね。まともな学校行ってるの? ja.wikipedia.org/wiki/%E5%89%B0%E4%BD%99%E9%A1%9E%E7%92%B0 コンピュータで2のべき乗-1の倍数判定をやるのは 人間が10進数でやる9の倍数判定なみには簡単であるということ。 自分基準で考えなくていいからコンピュータ基準で考えなよ 固定長整数の範疇なら収束にかかる回数上限がわかるから 条件分岐は最終判定までは不要。 となれば少なくともdiv命令よりは速いだろうね。 https://gmplib.org/~tege/x86-timing.pdf まあ、コンパイラがやってるみたいに a - [a / b] * b で判定してもいいんだけど 多倍長を扱いたい場合とか、乗算が遅い場合にはシフト+加算やるでしょ。
637 名前:デフォルトの名無しさん mailto:sage [2014/08/09(土) 12:09:51.44 ID:mIy/oKca.net] >>621 >RSAとか自前で実装したことあるなら思いつくだろこんなん 思い付かなかった。 何倍まで判定していた?
638 名前:デフォルトの名無しさん mailto:sage [2014/08/09(土) 13:02:24.85 ID:cMAC0zr6.net] 7の倍数が簡単そうなのは判るけど 13とか19とかはどうなのかな
639 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2014/08/09(土) 13:42:24.91 ID:nh0jgYrR.net] メルセンヌ数自体の剰余なんてコストはタダみたいなもんだからいくらでも。 ワークメモリ消費量は計算が進むほど減っていくので非常に経済的。 しかしメルセンヌ数じゃない数までこの方法を使うのは必ずしも最適ではないと思う。 複数の方法を複合的に使うのがベストなのでは。
640 名前:デフォルトの名無しさん mailto:sage [2014/08/10(日) 04:44:06.43 ID:wq8KfUB9.net] このスレで具体的なコードを示せてない時点でお察し
641 名前:デフォルトの名無しさん mailto:sage [2014/08/11(月) 05:50:32.13 ID:fF79KhY2.net] ここまで親切丁寧に教えてくれてるのにコードまで要求したら罰あたるよ つうか、具体性って>622で十分すぎるような……
642 名前:デフォルトの名無しさん mailto:sage [2014/08/11(月) 09:30:41.11 ID:k0jUGvDo.net] スレ違いの投稿繰り返してるのに罰当たりってw
643 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 22:31:03.64 ID:WypK+3ii.net] >>616 >除算・剰余命令が使えないCPUで同じこといえるの? 何言ってんのこのバカ
644 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2014/08/14(木) 09:00:17.90 ID:/1YXqPS/.net] 何度もいうがx86のモダンなCPUでもdivは使えても禁止的に遅いぞ。 クロック数計測してみればいい。 コンパイラの吐いたコードと比べてみ? 別に書いてもいいけどつまらんぞ? たとえば128bit整数のmod 3を求めるコード pxor xmm0, xmm0 movdqa xmm1, [src] psadbw xmm1, xmm0 ;; 11bit * 2 movdqa xmm2, xmm1 psrlq xmm2, xmm1, 8 paddd xmm1, xmm2 ;; 12bit movd eax, xmm1 mov edx, eax shr eax, 6 and edx, 63 add eax, edx ;; 7bit mov eax, [table+eax] ;; 計算済みLUTから引っ張ってくる
645 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 10:36:27.82 ID:KxZWNeXr.net] シフトと加算で剰余が求められる理由は理系学部レベルの代数学の知識があれば直感的にはわかるが アセンブラの構文を齧っただけの人間に説明するのは難しい。 使い方だけなら教えれば中学生でも使いこなせるレベルのテクニックだが。
646 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 12:01:41.69 ID:jDhN7lgE.net] 剰余系、というか数論初歩(平方剰余の相互法則くらいまで)なんか数学科以外ではやらないと思うよ 教養課程の選択講座、くらいならわかるが
647 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 12:17:59.46 ID:KxZWNeXr.net] まともな大学の情報系•通信工学系ならやるよ。 m=16*a+bとおくと m mod 15 == (a+b) mod 15 難しい数式ほっといても簡単な理屈さえわかれば演算のショートカットは可能。
648 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 12:18:18.13 ID:p8QfSufV.net] そうか?工学科でもやるよ。情報学科は知らん
649 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 14:35:21.60 ID:31aNAkg3.net] m=16*a+bとおくと m mod 15 == (a+b) mod 15 中学生でも理解可能
650 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 15:21:45.62 ID:jDhN7lgE.net] >>634 >>636 うんうん、それ九去法の16進バージョンだね m = 16*a + b =(15 + 1)a + b =15a + (a + b) ∴ m ≡ a + b (mod. 15) ふつうこういう表記なんだけれどもね
651 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2014/08/14(木) 19:42:23.76 ID:YggMfJMP.net] mod 19のやり方いろいろ考えたけど被除数を32bit→18bitに削るくらいなら MMX/SSE使えば1命令だけでできるね
652 名前:デフォルトの名無しさん mailto:sage [2014/08/30(土) 20:23:40.25 ID:xeSHuuAg.net] わしがなじんだアッセンブリー言語は Z80と8086や LDにmovやで どや!すごいやろ nopまであるさかいな
653 名前:デフォルトの名無しさん mailto:sage [2014/08/30(土) 20:24:52.35 ID:xeSHuuAg.net] もうすごすぎてチンポたちっぱなしやで どや!羨ましいか よし、おまえ等もチンポ鍛えなや
654 名前:デフォルトの名無しさん mailto:sage [2014/08/30(土) 20:39:53.08 ID:2qescp2g.net] 気色悪い
655 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 15:23:11.41 ID:pkVJB2ul.net] >>639-641 わらた
656 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 19:24:50.07 ID:ZrKt/3Ec.net] mov, in, push, push, push, push, mov, out
657 名前:デフォルトの名無しさん [2014/09/29(月) 00:56:30.26 ID:RKEDgsOw.net] いまどきこんなの出ましたけど 熱血! アセンブラ入門 www.shuwasystem.co.jp/products/7980html/4180.html
658 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 02:16:32.88 ID:NJr46rSn.net] GCCの吐いたコード見てアセンブラがわかった気になる本みたいだけど、あんま意味はないと思う。 実行環境が身近にないPowerPCとかその他アーキテクチャとか数がたくさんあっても無意味。 いまどきだったら VC++ Express のインラインアセンブラとか使うのがお手軽かつ効果も身近に感じれて いい気がするが。
659 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 02:29:34.31 ID:NJr46rSn.net] ツイッターでは大人気だなw https://twitter.com/search?f=realtime&q=http%3A%2F%2Fwww.shuwasystem.co.jp%2Fproducts%2F7980html%2F4180.html
660 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 08:16:03.37 ID:wd4qvqdb.net] はじめてi486 のかまち氏ご推薦だって
661 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 08:26:09.14 ID:xSX/Gj/Z.net] かわいそうに、集団いじめにあってるね
662 名前:デフォルトの名無しさん mailto:sage [2014/09/29(月) 08:31:28.14 ID:NJr46rSn.net] >>647 目次しか見てないで推薦もないと思うが。 https://twitter.com/tkmc/status/516132413710163969 > 『熱血! アセンブラ入門』www.shuwasystem.co.jp/products/7980html/4180.html … > この目次を見たら買わないわけにいかない。 https://twitter.com/tkmc/status/516148086553321472 > 3日前に注文して昨日が発売日らしいのにまだ来ないなぁ。と思ったらAmazonは発売日が9/30って > 書いてある。
663 名前:デフォルトの名無しさん [2014/09/29(月) 09:36:48.07 ID:NL6Qfls1.net] この本の著者は初心者や初学者を対象に微妙にずらしてくる 12ステップで作る組込みOS自作入門 www.amazon.co.jp/dp/4877832394/ 対象マシンがH8/3069F 開発ツールを使って学ぶ! C言語プログラミング www.amazon.co.jp/dp/4839951497/ 初心者の方でも気軽に学習可能なように、必要開発ツールが インストールされたLinux(CentOS)の仮想マシン(VM:Virtual Machine) イメージをサポートサイトで無償配布します。「Oracle VM VirtualBox」 や「VMware Player」上に読み込めばすぐ学習をスタートできます。 - amazon紹介より -
664 名前:デフォルトの名無しさん mailto:sage [2014/10/01(水) 03:50:57.56 ID:PMHBFBS+.net] ツイッターで騒いでるヤツラ見てるとほんとニワカが多いなと実感
665 名前:キる。 コンパイラの出力見てコードの評価するのなんて業務でコンパイラ言語使ってりゃ日常の行為だろうに。 [] [ここ壊れてます]
666 名前:デフォルトの名無しさん mailto:sage [2014/10/01(水) 21:40:35.62 ID:RRxwqEFU.net] ↑ 2chも同じだということを自分で証明しているw
667 名前:デフォルトの名無しさん mailto:sage [2014/10/01(水) 23:25:07.36 ID:XzaO0iHc.net] 大手系の投稿記事よりはましなこと書いてたような
668 名前:デフォルトの名無しさん mailto:sage [2014/10/02(木) 08:07:44.77 ID:vok4PHmT.net] vs2013でyasmのソースコードデバッグできないのはどうしたらいいんだろう? 以前は-g cv8でできた気がしたけど、2012でもだめで、2008だったからかな
669 名前:655 mailto:sage [2014/10/10(金) 00:03:18.91 ID:EfaI1XmC.net] vs2008を引っ張り出しきてインストールしたら、yasmのソースコードデバッグも可能で ちゃんとブレークポイントも設定できた 2013でもローカルシンボルのアドレスは読み込んでるんだけどなぁ
670 名前:デフォルトの名無しさん [2014/10/10(金) 12:27:08.25 ID:553xVF6m.net] VCは64-bitインラインアセンブラできないんでしょ?
671 名前:デフォルトの名無しさん mailto:sage [2014/10/10(金) 12:43:13.70 ID:aGA3C1dn.net] インラインアセンブラにこだわる理由もない
672 名前:デフォルトの名無しさん mailto:sage [2014/10/11(土) 00:20:30.24 ID:JSe/b624.net] デバッグ情報が変わったのか、asmファイルでブレークポイントを設定しても 無効になっちゃうんだよ これは使いにくい masmなら大丈夫なんだけどね
673 名前:デフォルトの名無しさん [2014/11/04(火) 17:11:16.93 ID:8a1BiHkJ.net] 8086はデータ転送命令はmoveとexchangeしかないと思うのですが、 80486になるとload effective addressという命令が加わっています。 今までmove命令で書けていたものに、load effective address命令を加える必要はあるのでしょうか。 moveとload effective addressは別物でしょうか
674 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 17:43:18.58 ID:4tbMiHmM.net] >>659 8086の頃からLEA命令あったでしょ。 www.ece.cmu.edu/~ece740/f11/lib/exe/fetch.php?media=wiki:8086-datasheet.pdf
675 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 17:56:50.54 ID:99dxtSJ/.net] 8086の頃からあるわけだけど、利点としては ・普通のアドレッシング表現から、そのアドレスにアクセスするのでなく そのアドレスそのものが得られるので便利 ・P5以降とかだと、可能な限りどんな命令でも1クロックで実行できるよう 頑張ってるので、アドレス計算用にたくさん乗ってる加算器を有用に 使って、数個の数の足し算と4倍、みたいな計算が高速にできる とか。
676 名前:デフォルトの名無しさん [2014/11/04(火) 17:59:26.43 ID:obX3t5pP.net] 等価じゃないのに
677 名前:デフォルトの名無しさん [2014/11/04(火) 18:34:18.92 ID:8a1BiHkJ.net] ありがとうございます。マニュアルを読むようにします
678 名前:デフォルトの名無しさん mailto:sage [2014/11/09(日) 14:24:01.21 ID:bui++2v4.net] CASLUのRPUSH,RPOPがわからないのですが、メインルーチンでRPUSH、RPOPする理由を教えてください。 サブルーチン呼び出しでレジスタの値を退避し、その処理から抜けるときに復帰するのはわかるのですが、 メインルーチンが呼ばれてプログラムが始まるときにレジスタの値をスタックに退避し、抜けるときに復帰するのはスタートアップルーチンと何か関係があるのでしょうか
679 名前:デフォルトの名無しさん mailto:sage [2014/11/09(日) 14:41:08.70 ID:6OcI07Hk.net] RETで終了するならそのプログラムもサブルーチンてことだから、レジスタを 退避/復帰する理由は他のサブルーチンと同じ。
680 名前:デフォルトの名無しさん mailto:sage [2014/11/14(金) 21:44:40.20 ID:Q09MuRKV.net] オススメのアセンブラ入門サイト教えてくださいお願いします
681 名前:デフォルトの名無しさん mailto:sage [2014/11/14(金) 21:45:49.11 ID:Q09MuRKV.net] あ、x86です
682 名前:デフォルトの名無しさん mailto:sage [2014/11/14(金) 21:57:13.86 ID:ssh0hRKq.net] >>666 www.intel.co.jp/content/www/jp/ja/processors/architectures-software-developer-manuals.html
683 名前:デフォルトの名無しさん mailto:sage [2014/11/14(金) 22:31:57.52 ID:Q09MuRKV.net] >>668 やはり最終的にはintelのサイトに行き着くんですね、
684 名前:ありがとうございます [] [ここ壊れてます]
685 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 09:37:48.59 ID:nFEuZMwr.net] <main+0> push rbp <main+1> mov rbp,rsp <main+4> mov eax,0x0 <main+9> mov DWORD PTR [rbp-0x4],0x0 <main+16> pop rbp <main+17> ret もとのプログラムはint main(){return 0;}をディスアセンブルしたものなのですが、 eaxにはリターン値0がロードされるのはわかるのですが、 mov DWORD PTR[rbp-0x4],0x0が何の処理なのかわかりません
686 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 14:21:10.02 ID:yIj5KxcO.net] 使ってるコンパイラとコンパイルオプションは?
687 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 14:52:03.23 ID:nFEuZMwr.net] clangです コンパイルオプションは-gのみです
688 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 15:53:32.81 ID:yIj5KxcO.net] Cygwin64上のclang version 3.4.2 (tags/RELEASE_34/dot2-final)で hoge.c: int main() { return 0; } を $ clang -S hoge.c したら main: pushq %rbp movq %rsp, %rbp pushq %rax callq __main movl $0, -4(%rbp) xorl %eax, %eax addq $8, %rsp popq %rbp ret になったから結果が違うな。movl $0,-4(%rbp) はされるが。
689 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 15:56:22.72 ID:yIj5KxcO.net] $ clang -O2 -S hoge.c 最適化ありでコンパイルすると main: pushq %rbp movq %rsp, %rbp callq __main xorl %eax, %eax popq %rbp ret になったから movl $0,-4(%rbp) が意味ないことは確か。
690 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 16:01:50.53 ID:yIj5KxcO.net] ちなみにmain()でない関数なら最適化なしでも結果変わらんかった。 int hoge() { return 0; } $ clang -S hoge.c hoge: pushq %rbp movq %rsp, %rbp xorl %eax, %eax popq %rbp ret $ clang -O2 -S hoge.c hoge: pushq %rbp movq %rsp, %rbp xorl %eax, %eax popq %rbp ret $ clang -O2 -fomit-frame-pointer -S hoge.c hoge: xorl %eax, %eax ret
691 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 19:20:54.59 ID:nFEuZMwr.net] >>674 ありがとうございます 意味がないということがわかりました
692 名前:片山博文MZ ◆T6xkBnTXz7B0 [2014/12/25(木) 22:21:21.82 ID:gEw73of1.net] IEEE754-2008の浮動小数点数をx86アセンブラで実装出来る人、此処に居ますか?
693 名前:デフォルトの名無しさん mailto:age [2014/12/25(木) 22:33:47.28 ID:gEw73of1.net] あげ
694 名前:デフォルトの名無しさん mailto:sage [2014/12/25(木) 22:35:18.35 ID:P9hgzX+u.net] そんなの金次第
695 名前:デフォルトの名無しさん mailto:sage [2014/12/25(木) 22:37:17.19 ID:P9hgzX+u.net] 片山博文MZ で検索 https://www.google.co.jp/search?q=%E7%89%87%E5%B1%B1%E5%8D%9A%E6%96%87MZ&ie=UTF-8
696 名前:デフォルトの名無しさん [2014/12/27(土) 22:56:25.54 ID:u+dBZrZs.net] 仮に、A1111,B1101 として精度4桁とすると、 和差は、指数部の大きい方へ合わせる 1111 00001101 → 0 指数の差が4桁以上あると、下は0と同じになる 仮に指数を、A50,B20とすると、 積は両指数の和 → 50 + 20 = 70 除は両指数の差 → 50 - 20 = 30
697 名前:682 mailto:sage [2014/12/28(日) 10:12:28.37 ID:/YZxn3dB.net] これらをシフト・マスク演算などを使って、 Cで書いて、アセンブラで出力すれば? でも、ちゃんとステータスレジスタのフラグが立つかな?
698 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2014/12/28(日) 11:45:17.05 ID:0W4dp9Sf.net] >>681-682 よく考えたら、x86で作るのは意味なかった。ごめんね。
699 名前: ◆hL51veKlRE mailto:sage [2015/02/01(日) 18:55:41.71 ID:JsXnXzTS.net] aaa/daaとかの命令は結局どういう用途で存在しているんだ...? 調べてもよくわからん(多分それだけ使われないんだろうが)
700 名前:デフォルトの名無しさん mailto:sage [2015/02/01(日) 19:01:49.03 ID:rGGapq8A.net] >>684 お前がBCD演算を理解してないだけ
701 名前:デフォルトの名無しさん [2015/02/01(日) 19:33:48.31 ID:+Sv3xZC2.net] fpuが外付けな大昔 Z80のフローティングライッブラリをx86に移植して 三角関数もテー
702 名前:uルを使って近似値を求める方法で実装したことあるけど 今の時代、知的好奇心を満たす以外になにか意味ある? 三角関数の精度はFPUの付いたPCで計算した結果と摺り合わせて確認した [] [ここ壊れてます]
703 名前:デフォルトの名無しさん mailto:sage [2015/02/01(日) 20:06:24.91 ID:s/hXDQXD.net] どっちが速かった?
704 名前:デフォルトの名無しさん [2015/02/01(日) 20:53:10.36 ID:+Sv3xZC2.net] なにと比較するのかと言う意味なら比較対象がない 当時のN88BASIC(86)との比較ではインタープリタ対マシン語(アセンブラ)なので オーバーヘッドが少ない分自分で移植したライブラリの方が早かった(FPU無しの倍精度) 内部は80ビットフローティングの精度に対応する為に化数部を128ビット指数部を16ビットで計算後 80ビットフォーマットに丸めた x64って天国だよなx86と比較すると 紙に印刷したプログラム探せば出てくると思うw
705 名前:デフォルトの名無しさん mailto:sage [2015/02/01(日) 22:17:09.61 ID:e1RPi5xm.net] >>686 0度〜45度をテーブル実装するの?それとももっと狭くていいの?
706 名前:デフォルトの名無しさん [2015/02/02(月) 04:57:44.05 ID:j5MISSAc.net] >>689 忘れたけどたぶんそれくらい もしかすると90度分かもしれなけど テーブルの形式は計算精度が必要だったので 近似値に収束する形だったと思う(もう覚えていない) 三角関数の比率が必要な場面は今はFPUに依存できる あらかじめ化数128指数16ビットの浮動小数点ライブラリで精度の高めな 近似値導出用テーブルを作ってそれを使ってtan-1(うろ覚え)を求めた後で三角関数を計算してた 利用目的で必要な計算精度も異なるので工夫しようぜ 三角関数の粗い比率だけなら64ビット整数で簡単に導出可能
707 名前:デフォルトの名無しさん mailto:sage [2015/03/08(日) 10:52:34.09 ID:/s2hhMUc.net] とりあえず「仮数部」を単語登録した
708 名前:デフォルトの名無しさん [2015/03/10(火) 01:21:00.65 ID:HHYC72Cw.net] PICでのC言語プログラム(上側)をアセンブラ言語(下側)へと書き直したのですが上手く動いてくれません codepad.org/STGr8jeE codepad.org/p74NS78p プログラムの内容は8つのLEDのうち一つが光っており、 RB0のスイッチを押すたびに光る場所がひとつずつシフトしていくというものです そして、このプログラム内でチャタリング対策を行っています。 Cの方は上手く動いてくれましたが、アセンブラの方は56行目でどうしてもスキップが有効になりCount_Loopから抜け出せない状況に陥ってしまいます ステップオーバーで調べてみたところWregや物理スイッチの反応には問題なさそうだったので Switch_Countが怪しいと睨んでいます(原因は分かりませんが) どなたか原因の究明をお願いします
709 名前:デフォルトの名無しさん mailto:sage [2015/03/11(水) 10:42:49.84 ID:3uN2N73I.net] 誘導 wc2014.2ch.net/test/read.cgi/denki/1422683846/
710 名前:デフォルトの名無しさん mailto:sage [2015/03/12(木) 15:48:05.20 ID:5fkTWTro.net] >>693 ありがとう
711 名前:デフォルトの名無しさん mailto:sage [2015/03/17(火) 21:14:19.50 ID:aVnPeaqI.net] CNT1 EQU 2 にするだけで直ったら笑うしかない
712 名前:デフォルトの名無しさん [2015/04/30(木) 22:48:02.55 ID:0+PJlfoo.net] GASアセンブリについて質問です。 ubuntu14.10をインストールして現在標準でついてるgccを使ってアセンブリを勉強しています。 サンプルのプログラムを入力したのですが、エラーの原因が分かりません サンプルコード .set EXIT, 1 .set READ, 3 .set WRITE, 4 .data PROMPT: .string "inp
713 名前:ut string >> " .bss var: .skip 16, 0x00 .text .global main main: pushl $PROMPT call print call scan pushl $var call print call exit print: movl 4(%esp) ,%ecx movl $1, %ebx # 標準出力へ movl $1, %edx # 1文字出力 続く [] [ここ壊れてます]
714 名前:デフォルトの名無しさん [2015/04/30(木) 22:50:24.85 ID:0+PJlfoo.net] 続き write: cmpb $0x00, (%ecx) # null文字かどうか je write_end movl $WRITE, %eax # write int $0x80 incl %ecx # 次の文字 jmp write write_end: ret scan: movl $READ, %eax # readシステムコール xorl %ebx, %ebx # 標準入力から movl $var, %ecx # バッファを指定 movl $16, %edx # 16バイト読み込み int $0x80 ret exit: movl $EXIT, %eax # exit movl $0, %ebx # 終了コード0 int $0x80
715 名前:デフォルトの名無しさん [2015/04/30(木) 22:50:58.40 ID:0+PJlfoo.net] 続き すると、 invalid instruction suffix for `push' という、アセンブラのエラーが出ます。 これはアセンブラ側に問題があるのでしょうか? プログラムの問題?ハード側? 解らないヽ(´o`; 色々試してみましたが、pushlの「l」のことを指しているのかとも思いましたが、解決策が見つかりません。 <スペック> PC:レグザPC Windows7(64bit) USBHDD:ubuntu14.10 CPU:インテル Core i7 2670QM メモリ:8GB どうかよろしくお願いします。
716 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 00:16:48.19 ID:WNUsFIxq.net] ヤマカン CRLFとか
717 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 03:46:47.42 ID:TPwiwWUO.net] >>696 なんかそのものズバリの質問してる外人がいる。 "Invalid instruction suffix for push when assembling with gas" stackoverflow.com/questions/6268745/invalid-instruction-suffix-for-push-when-assembling-with-gas ざっとしか読んでないけど 32bitアセンブラ用のコードを64bitアセンブラで動かそうとすると、レジスタが増えた分、それに対応させる プリフィクス命令REPを追加しないといけないらしい。 64bitアセンブラの場合、push命令にREPプリフィクスを付けないとエラーになるみたい。 もっと言うと、64bitアセンブラではpush/popは事実上使われなくなるので違う書き方に変えろということもあるらしい。 codezine.jp/article/detail/457?p=2 自分で試してないのでほんとかどうかは知らん。
718 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 08:29:12.81 ID:wFPW/Xoy.net] 今朝見た夢に"LSL ROL LSL ROL"ってのが呪文みたいに出てきたわ そういや64bitになったら使った試しがない 128bit以上の所をShiftするならSSE3か何かにそういう命令あったような
719 名前:デフォルトの名無しさん [2015/05/01(金) 13:44:13.88 ID:ZRNg35S/.net] >>700 >64bitアセンブラではpush/popは事実上使われなくなるので違う書き方に変えろということもあるらしい。 リンク先読みました、目からウロコだった。ww
720 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 16:05:20.76 ID:tFZiwDeL.net] ま、VC64bitでインラインアセンブラが使えなくなったと行っても、ASMファイルをプロジェクトに 入れると普通に使えるから問題感じた事ないな
721 名前:デフォルトの名無しさん [2015/05/01(金) 21:18:43.53 ID:Efwc/Emn.net] >>700 リンク貼って頂いてありがとうございます! 世界には同じように悩んでた人がいたんですね^^; 単純にHello,Woldを表示するCコードを逆アセンブルしてみると、 pushはpushqで出てました。 .cfi_startproc〜.endprocで囲まれており、pushqの前後に .cfi_def_cfa_offset 16 .cfi_offset 6 , -16 と、あります。 クワッドを使用する上で必要なのでしょうか? ただ、>>696 の質問のコードで同じような書き方をすると Segmentation fault (コアダンプ)となりました (--; むちゃくちゃだと思いますが、ホントに解りません(>_<) ただ、64bitでは入門しょっぱなから記述が変わってくるという ことはなんとなく分かりました(T.T) 64bitでのpushの問題をなんとか解決したいです。 ハードル高いんでしょうか? 因みにパソコンすら初心者です。下手な質問、ご容赦下さい。 頑張ります(-o-)b
722 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/05/02(土) 01:21:24.36 ID:BIc+ZG3h.net] >>704 アセンブラをやりたかったら、MenuetOSと付属のFASM(flat assembler)を使うといいよw システムコールがレジスタ渡しで簡単w
723 名前:デフォルトの名無しさん mailto:sage [2015/05/02(土) 23:53:25.09 ID:N2i4dBWj.net] 64bitのMASMで動く一番簡単なHelloプログラムの作り方が書いてあります。 やってみたら動きました。Windows7-64で、たった2.5kバイトでHelloが出ます。ml64.exeが必要です。 dabun.kmycode.net/1_winmachine/index.html
724 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 09:48:07.36 ID:uz86ZVQL.net] push/pop使わねえの見て、学生時代に68Kでこんな風に書いてたの思い出した LINK A6, #-56 MOVEM.L D2-D7/A0-A5,-48(A6) MOVE.L D0,-52(A6) MOVE.L D1,-56(A6) 〜処理〜 MOVEM.L -48(A6),D2-D7/A0-A5 UNLK A6
725 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 12:35:44.27 ID:bwdzUvDw.net] casl で書いとくれ
726 名前:デフォルトの名無しさん [2015/05/19(火) 19:25:09.28 ID:zxHYER8T.net] >>704 64bitでは基本push ,pop系統の命令は使わない >>700 のリンク先にもあるけど あらかじめpush popで利用する分の格納領域を手続きの初めにスタックフレーム上に確保する で、mov命令でspの値+オフセット、こんな感じに扱う mov qword ptr[rsp+offset],rax mov rax,qword ptr[rsp+offset] 昔流のpush popでお手軽手抜きは難しいんだろうね いや、出来るかも知れないけど アセンブラ+スタックフレームの確保を自動で計算、命令も出力してくれる cみたいに拡張したアセンブラが必要になるね
727 名前:名無しさん [2015/06/14(日) 09:50:14.92 ID:bOUig4Hv.net] 基本情報処理技術者試験H22春のCASLUの問題のプログラムを 作成したんですが。うまく動きません。どうしてですか? 実際のデータは1+2=3にしたいんです。 DATA1 DC #0080,#0000;1 DATA2 DC #0081,#0000;2 おそらく、データの値が間違っていると思うんですが・・・
728 名前:名無しさん [2015/06/14(日) 14:50:42.91 ID:bOUig4Hv.net] 711の件は解決しました。 お騒がせしました。
729 名前:デフォルトの名無しさん [2015/06/28(日) 11:43:30.99 ID:C8acUGCg.net] shの#ってどうゆう意味? mov.lでレジスタに送るときに付けてないとアドレスの内容が送られるのに、 データ定義するときはつけないみたいなんだ。 有り無しの違い教えてください!
730 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 23:40:08.78 ID:u+WDKBAd.net] 定数の時につけれ マニュアルに書いてないっけ?
731 名前:デフォルトの名無しさん [2015/06/29(月) 18:27:44.03 ID:U/nUfeSW.net] >>713 初心者すぎてマニュアルの見方すら分かってませんでした。 定数と考えればいいんですね。 スッキリしました。 ありがとう。
732 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 08:05:57.40 ID:d0PzGiLf.net] 即値アドレッシングって用語を覚えておいて欲しい
733 名前:デフォルトの名無しさん [2015/06/30(火) 21:12:30.13 ID:XopmavOU.net] >>715 覚えておきます!
734 名前:! [] [ここ壊れてます]
735 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 06:23:33.54 ID:B+1kKjNv.net] CALLやPUSH/POPなどはMOVやJMP、INCといった別の命令の組み合わせで動いていると何処かで読んだんですが、 そうするとCALLを使わず自分で好きなレジスタを使ってスタックを管理しても有意差は無いと考えていいんでしょうか? それともCALLやPUSH等の専用の命令を使うと1Hzに収まるとかそういう違いがあるのでしょうか?
736 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 12:07:19.12 ID:DcDmvdDl.net] その何処かで読んだものが、複合命令とか疑似命令とか言われる アセンブラで他命令にマッピングされるもののことならば有意差はないでいい マイクロコードのことならば、そもそも出来ない
737 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 14:58:03.97 ID:ldC6ltUq.net] >>717 CALLは1命令で済むから割り込みのことを考える必要はないけど、複数命令の組み合わせにした場合、 途中で割り込みが入っても大丈夫かどうか検討してみたほうがいいですよ。 それと、両方の場合でトータルのクロック数を比較して、少ない方を使うのがいいですよ。
738 名前:,,・´∀`・,,)っ-○○○ [2015/07/07(火) 15:34:31.62 ID:U1BWXrcA.net] CALL命令使わずに戻り先の命令ポインタをどうやってスタックにセットするつもりだ? 少なくとも32ビットまでのx86命令セットにはEIPレジスタを読み出す命令は存在しない
739 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 16:38:53.47 ID:6QdGJYSy.net] >>720 おじいちゃん頭が固いね。 アセンブラがアドレスを計算して入れればいいじゃん。 分岐先やデータ参照のアドレスはそうやってるんだし戻り番地が計算できないとかない。
740 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 18:58:46.93 ID:Wm4YwPII.net] 団子の言うとおりx86 32bitではプログラムカウンタ(EIPレジスタ)の値を取得するという操作自体が call以外じゃ不可能なのよ だからPICでPC相対アドレス計算する時に次の命令の番地にcallしてpopしてとか面倒なことやってるわけでしょ? x86-64ならleaでRIP相対アドレッシングできるからまあcallは必須ではないか
741 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 19:56:39.94 ID:B+1kKjNv.net] >>718-719 ありがとうございます。書き忘れてましたが64bit用のオペコード使って色々書こうと思っていた所で、 一部の命令を覚えないで済むと慣れるまでは楽出来るかなと思ってたのですが、やはり最初から全ての命令を含めて組み立てるべきなんですね。 あと追加で申し訳ないんですが、ES,SS,CS,DS等へのPUSH、POPが64bit modeだと無効となっているんですが、 これはリアルモードの時は使用できて、64bit modeの時に無効になるという解釈でいいんでしょうか? それとも64bitCPUには、それらのセグメントレジスタ自体が乗ってないんでしょうか?
742 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 20:50:44.79 ID:B3f4PYYu.net] >>721 __asm { push target jmp proc1 target: } で出来るな。 引数は普通にスタックに積んで返り値はeaxだしな。
743 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 21:04:09.84 ID:B3f4PYYu.net] >>723 セグメントについては hp.vector.co.jp/authors/VA003988/asm2.htm の2.1にあるテーブルのセグメントなんたらの項目を参照してね。
744 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 21:27:05.58 ID:Xbklf+Ix.net] >>717 callやretはリターンアドレスの予測機構があってサブルーチンコールのペナルティが少なくなってるはず。 だから他のレジスタを使って間接ジャンプした時の方が遅くなると思うよ。 フレームポインタを省略してスタックポインタの相対アクセスでローカル変数を 管理するというのはよくあるが、無理してスタックを使わないというのはまずない。
745 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 22:24:16.63 ID:B+1kKjNv.net] >>725 ありがとうございます。 なんとなく「乗ってないという事はなさそうだな」という程度にしかまだ理解できませんが、 これから勉強してはっきりと理解できるように頑張ります。 >>726 jmp命令だとパイプラインの中身がflushされるそうですが、callだとそれを防げるという理解でよろしいでしょうか。 早くテスト出来る環境を整えて色々な方法で比べてみたいと思います。
746 名前:,,・´∀`・,,)っ-○○○ [2015/07/07(火) 22:49:15.22 ID:Jp2Iokv0.net] >>721 それじゃリロケータブルなコードは書けないぞ
747 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 23:17:56.50 ID:Xbklf+Ix.net] >>727 >jmp命令だとパイプラインの中身がflushされるそうですが、callだとそれを防げるという理解でよろしいでしょうか。 callというよりretね。パイプラインのフラッシュというのは一個所から複数のアドレスに分岐するようなケースで発生しやすい。 条件分岐や間接ジャンプ、リターン命令など。 だからレジスタの内容で間接的にジャンプ先が指定される疑似retはペナルティが発生しやすい。 そのためスタックポインタには特別な監視機構がついてる。
748 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 02:16:34.27 ID:u/EIUunr.net] ほとんどのret命令は直前に実行したcall命令の次の命令に分岐するから非常に高い精度の分岐予測ができるのは大きいな。
749 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 02:20:24.53 ID:u/EIUunr.net] >>728 それじゃx86ではリロケータブルなコードは書けないぞw exeをロードした後セグメントの値をゴリゴリ書き直したり MMUでロードする論理アドレスを固定したりと いくらでもリロケータブルにする方法はあるのに無知って怖いな
750 名前:,,・´∀`・,,)っ-○○○ [2015/07/08(水) 03:10:34.57 ID:88H8yWBh.net] > exeをロードした後セグメントの値をゴリゴリ書き直したり そんなん知ってるが?てかJITのコード書いてましたが? ユーザーモードでコードセグメントの書き換えを行うには特別なAPIを呼び出す必要がある上 キャッシュのinvalidationを都度やる必要があるからペナルティを伴う その時点のEIP値をとった方が遥かに柔軟だしそもそもそんなコードの書き換えしてまで call命令をわざわざ回避する理由がねーぢゃん
751 名前:,,・´∀`・,,)っ-○○○w [2015/07/08(水) 03:25:16.20 ID:88H8yWBh.net] んで、自己書き換えでオフセットの整合をとるために結局EIPを取る必要があって 特に32ビットではCALL命令を使う必要がある、と。 本末転倒だな
752 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 03:54:52.00 ID:u/EIUunr.net] 別にcall命令を使わないってことじゃないよ。 使わなくてもリロケータブルなコードは書けるってだけ。 68Kとかだとリロケータブルにするためにそういうテクニックを使うが 86はセグメントと内蔵MMUがあるからそこまでしなくてもリロケータブルになる。別に1バイト単位でリロケータブルにしても意味ないからね。 ところでおじいちゃん明日から大丈夫なの。
753 名前:デフォルトの名無しさん [2015/07/08(水) 05:15:05.60 ID:Y+kE74C9.net] ぽんこつはよしね
754 名前:,,・´∀`・,,)っ-○○○w [2015/07/08(水) 06:24:13.84 ID:88H8yWBh.net] > 86はセグメントと内蔵MMUがあるからそこまでしなくてもリロケータブルになる。 > 別に1バイト単位でリロケータブルにしても意味ないからね。 うわークソ老害が姿を表したぞ おま絶対50歳超えてるだろ > 86はセグメントと内蔵MMUがあるからそこまでしなくてもリロケータブルになる。 > 別に1バイト単位でリロケータブルにしても意味ないからね。 このおじいちゃん再配置可能の意味をものすごい古い意味でしか知らないようだけどVista以降のOSは触ったことがなさそうだな 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
755 名前:,,・´∀`・,,)っ-○○○w mailto:sage [2015/07/08(水) 06:30:07.39 ID:88H8yWBh.net] まあとりあえず今のWindows(DEP+ASLR前提)環境で通用する知識を頼むはwww
756 名前:,,・´∀`・,,)っ-○○○w mailto:sage [2015/07/08(水) 07:54:58.71 ID:88H8yWBh.net] WindowsというよりMacのほうが先か それでなくとも*NIXでforkとかやるのにEIP/RIPの取得は必須なんだが (子プロセスで完全なコピーをとるからね) 結果的にスレッドが割り当てられるアドレスをバイナリ生成時に決め打ちすることができないんだよ おじいちゃんは所詮DOSとかの時代のシングルタスク知識止まり
757 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 09:01:04.05 ID:u/EIUunr.net] うわー こいつリエントラントとリロケータブル混同してるよ
758 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 09:47:32.45 ID:7ROcSmAH.net] >>717 の質問意図がちょっと理解できないんだけど、 命令デコード後に複数μOPに展開されて処理される命令と単純な命令を並べた場合の比較なら 新しいCPUほどデコーダーの制限の影響が小さくなってるから、どちらでも速度的なメリットはほぼ関係なくなった。 ただしサブルーチンコールは専用の命令を使うべき。 core以前のPentium 3とかだとメモリオペランドが複数μOPに分解されるため デコーダーの制約に引っかかりやすかったが、今のCPUでは1μOPに変換されるから関係なくなってるし。 日本語版の最適化マニュアルは古すぎて今の最適化マニュアルでは非推奨のコーディング法になってるのも多いから注意してね。
759 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 10:16:23.88 ID:8utIjUev.net] 見苦しい老害がいるな https://ja.m.wikipedia.org/wiki/リエントラント
760 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 10:31:10.51 ID:8utIjUev.net] setjmp/longjmpすらcallでeipとって保存してることも知らないゴミか
761 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 10:41:45.36 ID:u/EIUunr.net] >>742 setjmp/longjmpはスタックポインタを保存してることも知らないゴミか
762 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 22:01:58.21 ID:7ROcSmAH.net] >>740 のメモリオペランドが1μOPになるのはソースオペランドの場合のことね。 デスティネーションオペランドは最新coreでも2μOPになるので、昔のCPUと変わってないよ。
763 名前:デフォルトの名無しさん [2015/07/08(水) 22:03:18.41 ID:Y+kE74C9.net] アスペですね 判ります
764 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 06:27:13.33 ID:l6l+0TT5.net] >>736 DOSの時代なら30代後半にさしかかったばかりの若造でも余裕で使ってる気がするんだが……
765 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 09:52:43.32 ID:qia5kD2O.net] リロケータブルじゃなくてOSの作りの問題だな。 プログラムを構成するコード、リテラル、データ、これらを任意の物理アドレスに配置できるのがリロケータブル。 マルチプロセス、マルチスレッド、 リエントラントで同一バイナリが同時に複数の箇所からコールされても動くかどうかは別問題。 データはコンテキスト毎に別物を用意しなければならないから、通常はコンテキスト毎に別のメモリを割り当ててそのポインタを渡すかスタックで利用できる範囲内で使う。 コードはPC相対分岐が可能なのでロードされたアドレスとは関係なく動かすことができる。 問題はリテラルでリテラルはデータと違って原則として一つだけあれば良いがそのアドレス指定をどうするか。さらにリテラルに分岐先アドレスを書いてのテーブル参照分岐をどうするか。 x86の場合はセグメント/LDTを使った論理/物理アドレス変換機能があるためそれを使えば簡単に解決する。しかしx86以外のCPUにはその機能が無い。RISCを含めた多様なCPUに対応したOSを実現しようとした時それはまずい。 またLDTを使うとセグメントの切り替えが頻繁に発生して性能が上がりにくい。それはCPUのマイクロアーキテクチャの改良で何とでもなるがそこまでして使わなければならないものでもない。 x86を含む多くのCPUにはPC相対アドレッシングモードの利用条件に制限があるが全てのCPUでcall命令を実行すればそのリターンアドレス=call命令の次の命令のアドレスが取得可能なのでそこを基準にした疑似PC相対アドレッシングモードが実現可能である。 リテラルの参照や分岐先アドレステーブルにこれを使うとCPUに依存しないOS、コンパイラが実現できて具合が良い。 なおリテラルの参照にPC相対アドレッシングモードが利用可能な場合はそれを使うと命令数を節約できるのでx64ではその機能が追加されている。
766 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 11:05:05.35 ID:+XrxSP+3.net] 三行で頼む
767 名前:,,・´∀`・,,)っ-○○○w mailto:sage [2015/07/16(木) 20:02:18.69 ID:zs3wJnLw.net] 今のOSはDLLの関数の配置すら固定アドレスではない 関数がどこのアドレスにマッピングされるか実行時まで不定なん
768 名前:トのはJITではよくあることですし EIPを取るためにCALLは事実上必須の技術要素 化石には理解できんでしょうよ [] [ここ壊れてます]
769 名前:デフォルトの名無しさん mailto:sage [2015/07/16(木) 22:33:05.29 ID:qia5kD2O.net] >>749 おまいさんがx86を理解していないことはよく分かったよ
770 名前:デフォルトの名無しさん mailto:sage [2015/07/17(金) 06:17:34.00 ID:LRu5x31a.net] バイナリがリロケータブルじゃなくてもローダがリロケートしてるんだからEIPなんて必要ないべ JITだってコードジェネレータが確保したメモリに命令を埋めてくんだから callでEIP取らんでもコードジェネレータが把握してるものだよな
771 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/17(金) 11:57:49.98 ID:jB6b4zL7.net] > JITだってコードジェネレータが確保したメモリに命令を埋めてくんだから そうやってJIT開発経験ないこと暴露しなくていいよ それじゃ例外処理を実装できない
772 名前:デフォルトの名無しさん mailto:sage [2015/07/17(金) 13:16:26.01 ID:KpkroeLG.net] >>752 整数主体の簡単なJITなら別に例外なんて必須じゃないけどな 例外処理まで含んだJIT環境を実装したと言うのなら 具体的にどんな環境でどんな手順でコードを生成するのか具体例を示してもらえません?
773 名前:デフォルトの名無しさん mailto:sage [2015/07/17(金) 13:21:27.49 ID:KpkroeLG.net] ×具体的にどんな環境でどんな手順でコードを生成するのか具体例を示してもらえません? ○具体的にどんな環境でどんな手順で例外部分コードを生成するのか具体例を示してもらえません?
774 名前:デフォルトの名無しさん mailto:sage [2015/07/17(金) 18:02:27.98 ID:rsdGdSBA.net] xbyakも例外なんて実装されてないからtry文使ってるよ 例外処理で必要なのはスタック上のコンテキストであってEIPじゃないよね EIPは例外発生したことによってその位置が渡されるんだから カーネルとユーザプログラムの処理がごっちゃになってないか setjump/longjmpも例外処理自体には直接関係してないし
775 名前:デフォルトの名無しさん mailto:sage [2015/07/17(金) 18:07:59.31 ID:z7xtLFhW.net] 例外処理にcall/popでeipを取得する必要があるとは初耳だな。 例外が発生したらスタックフレームにeipを含む例外内容が積まれるから それを処理するというのなら普通だが。
776 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/17(金) 18:51:13.61 ID:jB6b4zL7.net] > 例外が発生したらスタックフレームにeipを含む例外内容が積まれるから x86の例外だけはな ~~~~~
777 名前:デフォルトの名無しさん mailto:sage [2015/07/17(金) 19:48:00.37 ID:XnN0+6K+.net] callでeip取らなきゃならないJIT例外処理の具体的なコード例はよ
778 名前:デフォルトの名無しさん mailto:sage [2015/07/17(金) 19:56:00.34 ID:XnN0+6K+.net] >>720 ,,・´∀`・,,)っ-○○○ >CALL命令使わずに戻り先の命令ポインタをどうやってスタックにセットするつもりだ? >>721 >アセンブラがアドレスを計算して入れればいいじゃん。 >分岐先やデータ参照のアドレスはそうやってるんだし戻り番地が計算できないとかない。 >>728 ,,・´∀`・,,)っ-○○○ >それじゃリロケータブルなコードは書けないぞ >>738 ,,・´∀`・,,)っ-○○○ >結果的にスレッドが割り当てられるアドレスをバイナリ生成時に決め打ちすることができないんだよ >>739 >うわー >こいつリエントラントとリロケータブル混同してるよ
779 名前:デフォルトの名無しさん mailto:sage [2015/07/17(金) 19:59:37.86 ID:XnN0+6K+.net] >>749 :,,・´∀`・,,)っ-○○○w >関数がどこのアドレスにマッピングされるか実行時まで不定なんてのはJITではよくあることですし >EIPを取るためにCALLは事実上必須の技術要素 >>751 JITだってコードジェネレータが確保したメモリに命令を埋めてくんだから callでEIP取らんでもコードジェネレータが把握してるものだよな >>752 :,,・´∀`・,,)っ-○○○ >そうやってJIT開発経験ないこと暴露しなくていいよ >それじゃ例外処理を実装できない >>755 >例外処理で必要なのはスタック上のコンテキストであってEIPじゃないよね >EIPは例外発生したことによってその位置が渡されるんだから >カーネルとユーザプログラムの処理がごっちゃになってないか >>756 >例外処理にcall/popでeipを取得する必要があるとは初耳だな。
780 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/17(金) 20:26:33.34 ID:NuSdomfx.net] うわー低知能が発狂してるな https://github.com/v8/v8/tree/master/src/ia32
781 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/17(金) 20:39:02.64 ID:NuSdomfx.net] void SignalHandler::HandleProfilerSignal
782 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 01:24:55.86 ID:eOz3ARns.net] OSの作りに依存した例は無意味だから
783 名前:デフォルトの名無しさん mailto:sage [2015/07/18(土) 01:44:15.75 ID:Tl20d9v9.net] 苦しい言い訳だなw
784 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/18(土) 02:17:36.36 ID:x5VfUT5S.net] DOSどまりの腐った知識こそ要らねーわ
785 名前:デフォルトの名無しさん mailto:sage [2015/07/19(日) 10:45:12.87 ID:7NCgP6LA.net] 組み込み系の知識が無いみたいね。
786 名前:デフォルトの名無しさん mailto:sage [2015/07/19(日) 20:39:31.05 ID:RGrGlHay.net] >>762 で、これのどこが「CALLは事実上必須の技術要素」と関係してんの? >関数がどこのアドレスにマッピングされるか実行時まで不定なんてのはJITではよくあることですし >EIPを取るためにCALLは事実上必須の技術要素 これの説明になってないと思うけど 例外のカーネルに対する割り込みまで混同してるのか? それこそDOSの処理との違いを理解してないじゃないか
787 名前:デフォルトの名無しさん mailto:sage [2015/07/19(日) 20:49:10.66 ID:RGrGlHay.net] 739 :,,・´∀`・,,)っ-○○○w:2015/07/08(水) 07:54:58.71 ID:88H8yWBh それでなくとも*NIXでforkとかやるのにEIP/RIPの取得は必須なんだが (子プロセスで完全なコピーをとるからね) 結果的にスレッドが割り当てられるアドレスをバイナリ生成時に決め打ちすることができないんだよ forkでコピーとかいつの時代の話してるのかというのに加えて 単一のポインタで「メモリ空間」をどうやって表現するのかねぇ なんか色々と支離滅裂なんだよな
788 名前:デフォルトの名無しさん mailto:sage [2015/07/19(日) 21:28:40.28 ID:pmXYRPLP.net] えぇ・・・
789 名前:デフォルトの名無しさん [2015/07/19(日) 22:48:15.71 ID:RGrGlHay.net] >>738 では行ごとに関係のないことを並べてるのに気付かず、それぞれが関連してるかのように書いてるんだよな forkで実行中の命令ポインタが必要になるのは実装がそうなってるんだから当然としても 子プロセスで親プロセスのメモリ空間を再現するのにはipだけじゃ不足だし、ipがなくてもできることし 次で突然リロケータブルの話題に戻ったうえに、普通はスレッドの開始アドレス指定するようになってるのに決め打ちできないとか言ってる スケジューラのことを指すとしても、こっちはバイナリの生成アドレスは関係してこないよね 以上のことを合わせると、プロセスとスレッドの解釈までなんかおかしい >>761 はhttps://github.com/v8/v8-git-mirror/blob/master/src/sampler.ccの339行の関数だとすると 単にコンテキストから各ポインタを取り出してるだけだよね 「CPUが例外を実装するのにCALLは事実上必須の技術要素」というのなら理解できるけど
790 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 00:13:23.48 ID:wJb+2lr3.net] まるで理解していない アセンブラのスレでなんだが、C++コードの読解力から身に着けようか
791 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 00:20:33.85 ID:AMStoo45.net] 自分に都合の悪い所はスルーか それは置いといて、理解してないっていうなら聞くけど、この関数のどこに「EIPを取るためにCALLは事実上必須の技術要素」 のcallがあんの?
792 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 00:26:45.44 ID:wJb+2lr3.net] どのみちEIPとESPの保存はJITでの例外処理の実装に最低限必要なんだけどね アカデミックな論文とか読まないでしょ君、学がないから。そもそも大学を出ているかも怪しい。 ir.c.chuo-u.ac.jp/repository/search/binary/p/3402/s/1100/ EIP/ESPの保存にcallを使わなくてもいいってしつこく主張したくて駄々をこねてるみたいだけど そんな方法めんどくさいだけだろ?
793 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 00:35:43.31 ID:wJb+2lr3.net] 静的コンパイルされたコードなら関数の頭から最後まで各命令の番地が一意に決まってるけど JITでそんなのいちいち計算してたら演算コストかかって仕方ねーから関数やループの先頭アドレスだけ把握して あとはcallで取れるEIP値で把握するのが当たり前なんだよ コードの最適化で書き換わったりするから全命令のアドレスなんて覚えてらんねーっての てか全命令のアドレスなんてランタイムが記憶してたらメモリ消費半端ないことになりますよ DOS時代の知識しかない老害にはそのあたりの感覚が理解できてないのね
794 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 00:38:26.64 ID:AMStoo45.net] >>770 で指摘した点には反論しないのねw >>738 ではやらかしたと思ったんでしょw
795 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 00:39:34.57 ID:wJb+2lr3.net] お前のレベル低すぎて反論する気もないわ
796 名前:デフォルトの名無しさん [2015/07/20(月) 00:43:13.27 ID:gdO7FQR/.net] まあまあ喧嘩はやめて90年代の曲でも聴こうぜ。
797 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 00:44:41.10 ID:wJb+2lr3.net] 今日T-BOLANのボーカルの話聞いてきたよ
798 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 00:49:32.24 ID:wJb+2lr3.net] UNIXのforkをWindowsで実装してみた例があるから読んでおくといいよ pf-j. さくら.ne.jp/program/tips/winfork.htm
799 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 00:54:38.35 ID:AMStoo45.net] >JITコンパイラ済みコードからCライブラリを呼び出す場合、Cライブラリ内で発生する例外に備えて、 >Cライブラリ呼び出しの前にsetjumpを行わなければならない。 これはRubyからCのライブラリの関数を呼び出せるようにしたための制限だろ Cとリンクして動かさなければ関係ないはずだし、そう書いてあると思うのだが これが「事実上」なの?
800 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 00:57:47.98 ID:SiY3idyo.net] そう意地になるなって。事実上といっても差し支えないだろ
801 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 00:59:44.11 ID:wJb+2lr3.net] Cで拡張ライブラリ書くのがMat
802 名前:zRubyの方針だもの [] [ここ壊れてます]
803 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 01:00:27.57 ID:AMStoo45.net] >>779 ネイティブでないforkを持ち出しても意味ないの Cygwin使ったことある? forkのエミュレーションが遅くて昔から問題視されてるよ レベルが低すぎるってんなら>>770 のプロセス/スレッドのとこ個別に反論してみてよ
804 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 01:01:29.77 ID:AMStoo45.net] あんた、いつも後出しで特定環境のこと持ち出したりするね
805 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 01:05:50.67 ID:AMStoo45.net] >>781 JIT開発経験が無いとか噛みついてきたからさ そして、団子は「それじゃ例外処理を実装できない」と言ったんだよ
806 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 01:05:56.20 ID:AMStoo45.net] >>781 JIT開発経験が無いとか噛みついてきたからさ そして、団子は「それじゃ例外処理を実装できない」と言ったんだよ
807 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 01:07:55.61 ID:wJb+2lr3.net] 頭悪い子の相手したくないからIDあぼーんしときますね 愚痴りたいならブログでもツイッターでもどうぞ
808 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 01:11:00.75 ID:AMStoo45.net] >>770 を否定できないと団子の立場が無いって言ってんのに
809 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 01:20:37.50 ID:FJ8eMmMt.net] warosu
810 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 01:25:16.35 ID:wJb+2lr3.net] つまらない自尊心の為にスレタイ読まずに連投を繰り返すやつが立場がどうとか まず手前のレベルの低さをなんとかしろよ ツッコミにすらなってない
811 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 01:28:10.38 ID:wJb+2lr3.net] RubyのライブラリがCで書かれてることも知らないようなDQNって自爆しちゃったしなぁ
812 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 01:46:20.78 ID:8dMvvLjx.net] すんません、一連の流れというか、具体的にどういうことを話してたのか 初心者にもわかるように解説してください ここ、初心者スレであって達人スレじゃないんで
813 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 01:55:13.34 ID:wJb+2lr3.net] call命令はjmp命令で代替できますか?って質問出てて 「call命令使わないとEIPとれないだろ?」って言ったら 最近の処理系の知識皆無なジジイが発狂 動的なコードでEIP値が必要なケースってのを理解してないようだ
814 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 02:12:40.06 ID:AMStoo45.net] >>721 で誰かがアセンブラが戻りアドレスを把握してるって指摘したら 団子がつまらない自尊心の為に関係ないプロセス/スレッドの話まで持ち出してきて それが相手を罵倒できるようなレベルの内容じゃなかったでしょ その後も誰かが何か書くたびに「化石には理解できんでしょうよ」とか絡みついて見苦しいことしてるくせにな JITはアセンブラも含むんだから、そこで例外を実現するにはOSの例外処理機構に マッチしてればいいだけなのに「それじゃ例外処理を実装できない」と絡んできたんだろうが こっちもrubyのような環境を想定してなかったのは確かだが、例外処理はハンドラによって変わるの理解してる? C++でCライブラリを呼び出したらsetjumpなんてしてると思ってんの?
815 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/20(月) 02:18:44.28 ID:wJb+2lr3.net] まあ「立場」の優位性が自分にあると主張なさるならその模範として スレ違いの話題から率先して身を引くことで優位性を示されてもよいかな
816 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 04:04:40.80 ID:ojcfcDra.net] 1日に12個も書いて一生懸命な人がいますね。ご苦労様です。
817 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 07:22:17.85 ID:25wPVHZj.net] ここっておじいちゃんが自分の知識を自慢するスレですか?
818 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 12:17:45.00 ID:AMStoo45.net] >しかしながら、CRubyインタプリタにおける例外処理の実装は、コンパイル済みコードで発生した >例外の受け渡しを前提に設計されたものではなく、CRubyインタプリタに合わせた単純な実装では、 >効率的な処理を行う実装することが難しい。 CRubyのライブラリがsignal使って例外処理を実装してるのがいけないってことだろ こいつのせいでJITの例外処理では完結できなくなったのが原因じゃないか JITのランタイム環境はフローの基本ブロックのアドレス程度は管理してるはずなので Rubyのような問題のある特定環境じゃなきゃsetjump(のコール)を使用しなくても動作させるのは可能なはずだよな >どのみちEIPとESPの保存はJITでの例外処理の実装に最低限必要なんだけどね 「例外が発生したアドレス」やレジスタの内容はOSがお膳立てして保存してあるだろ callは「呼び出した命令の次の命令のアドレス」を保存するんだぞ 例外ハンドラに処理が移った時点でJIT環境の管理するアドレス情報で処理するのは可能だろ 回復に必要な経路の情報は既にスタックフレームに入ってんの だから「CPUが例外を実装するのにCALLは事実上必須の技術要素」というのなら理解できると書いたんだけど 団子は例外処理に関する知識も微妙だな 本当に本人? 知識自慢ってよりね、>>717 のcall/retは内部で別の命令で処理されてるの?って疑問に対して 限定的に似た動作をさせることは不可能じゃないってことだったのに 団子が火病ってリロケータブルはまあいいとしても、JITだのDLLやスレッド/プロセスのことを持ち出して スレタイとは異なる話を展開をさせたんだよ その知識が変じゃないかってこと そして自分が言い負かされそうになるとスレタイのことを言い出したw
819 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 12:39:11.58 ID:UCOKR5Nt.net] 知識は老人、心は子供かな
820 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 12:39:54.23 ID:UCOKR5Nt.net] 悪い意味で
821 名前:デフォルトの名無しさん mailto:sage [2015/07/20(月) 14:20:45.53 ID:4/vs8FvF.net] 老害はもう引退しろよ
822 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 02:10:18.33 ID:KMhPcj8X.net] きちんと引き際わきまえてる分、団子の方が上だな
823 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 06:40:00.03 ID:lN6RffsE.net] 見苦しい老害が団子だろ
824 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 07:26:37.78 ID:O1iotFPu.net] なんども長文を書くのはこちらとしても嫌だったけれども、 逃げ道を塞ぐようにしないと後出しで特殊な例を持ち出して勝手に勝利宣言するし こっちの言ってることを「レベルが低い」と一蹴してごまかそうとするから だからRuby JITの論文は渡りに船だった VMの生成したコードだけなら表引きで例外を処理できるとはっきり書いてあるからね そして本当に例外の知識を持ってたのなら、この表にはVMの生成したすべてブロックの情報が入っていることは理解していたはず 団子がしきにり「JITの例外処理ではEIPの保存が必要」と言ってたから、てっきりネイティブの例外のことかと思ってたら、ESPの保存も必要だといった これでsetjump法のことを意味してるのが確定した setjumpが必要になるのは例外をいじるCライブラリのせいだというのは論文にも書いてあるし、自分も指摘した 自分の引っ張り出した論文の内容を正しく理解していなかったのはJITを含む例外処理を理解していないことになるからね 結局団子は自分の持ちだした論文で華麗に自爆したわけだが こういうのって、将棋だと上級者は勝ち目がなくなったら投了して終わるのに 詰まされないと負けを認めない奴だからいたずらに手数が長くなってしまったと表現したらいいのか 団子がここまで駄々っ子だとは思わなかったよ
825 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 07:36:55.01 ID:3jrxFxE1.net] なげぇw
826 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 07:42:32.41 ID:O1iotFPu.net] 念のためしっかり逃げ道を塞いどこうと思って 今まで長文を何度も書いて申し訳ない でも、これで余程のことが無ければこの話はここで終わりになると思うよ
827 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 17:27:19.91 ID:lN6RffsE.net] 勝てなくなると最後は誹謗中傷攻撃が待ってるからなあ。
828 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 21:25:52.91 ID:MZjkxTxw.net] あのさー 2chで勝利して何になるの? 将棋がしたいのならオンライン将棋すれば?
829 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 22:21:28.63 ID:m5rpz/Rt.net] 中途半端だとすぐに戻ってくるからだよ 学が無いとまで言った相手より理解が浅かったら恥ずかしいだろ
830 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 00:08:23.68 ID:F++zketJ.net] 団子はとっくに引いて、大人の対応してるのになあ。。。 ID:O1iotFPuがここまで駄々っ子だとは思わなかったよ
831 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 07:01:44.05 ID:ALVAbODL.net] CRISCに関する質問だったんだから、上級者なら、内部命令のすべてが 外部からは見えないことを指摘すればすむ話だった JITのような話が飛び出し
832 名前:トくるのは自分中心でしか考えていないからだよ だから雑談なら雑談として適当なところで切り上げることもできない [] [ここ壊れてます]
833 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 10:09:23.01 ID:bur23WMX.net] MacOSのELFは位置独立コードのためにEIP取得のために空のcall(64ビットの場合はlea rcx, [rip])発行してる Windowsみたいにメインルーチンのアドレス固定じゃないからね LinuxはオプションでPIC対応コード生成可能。 【参考】 7shi.hateblo.jp/entry/2012/04/09/235938 0xcc.net/blog/archives/000109.html これがJITに限らず静的コンパイルでも実行時の命令ポインタが要求される例だ。 これで約一名おとなしくなるかな?
834 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 10:27:24.37 ID:bur23WMX.net] >>722 じつはここに答え書いてあるのにスルーされてるのがすっげー違和感あったんだよね。 本当に知らなかったのかな
835 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 11:23:38.39 ID:PLCb4FbB.net] また実装依存の話をしてる。 x86はセグメントを使う前提で設計してあるから物理アドレスの如何に関わらずEIPは変わらないように想定されている。 同一EIPであってもセグメントが違うので複数のプログラムモジュールが共存できる。セグメントの値はOSが管理する。 そもそもEIPはコードセグメントの領域を指し示すものでありセキュリティーの観点からここをデータとしてアクセスさせないという設計思想だ。データは別のセグメントに配置する。 これは8080の絶対アドレスでコーディングされたプログラムを8086でセグメントを使ってリロケータブルにして動かすことに成功したことの延長線上で286の時点でそのように作られた。 386は286上位互換性を確保するためセグメントを継続して採用している。セグメントレジスタも増やされた。 x64はセグメントを使わないから物理アドレスによってRIPが変わる。だからデータアクセスに対するRIP相対アドレッシングモードを追加した。 この基本が分からないとお話にならない。 RISCでも動くOSはセグメントが使えないからトリッキーなことをしているがそれはたまたまそうやると複数CPUアーキテクチャで共通の処理が実現できるからであって本質的には不要な処理である。
836 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 12:19:54.31 ID:bur23WMX.net] 老害は知らなくて当然だよ。10年前くらいから使われだしたセキュリティの 広く使われていても自分の知識の範疇にないことを「実装依存」で片付けてるから 新しいことが覚えられないのだよ 更に言うとJITの場合は分岐のコンディションごとに関数の実体を複数生成することもあるから 1つの関数の実体が複数あるなんてこともざらにある。 MacOSのプログラムすら書いたことのない(そもそも仕事がもらえない) 残念な老害という現実だ。 まあ俺に攻撃することだけ執着してご自分の無様さをさらけ出すのは 何のマゾプレイなんですかね
837 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 12:21:51.19 ID:bur23WMX.net] 286ガーとか古い知識ばかりに頼って覚えられない人はほっといて 向上心のある人はgccで-mPICオプション使ってみるといいよ。Cygwinで使えたかは知らん
838 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 12:30:05.00 ID:bur23WMX.net] なお実行コードのアドレスをランダム化するバッファオーバーランからの任意のコード実行などのリスクを低減するための方策で 攻撃手段を一つ減らすだけでも運用上のメリットはあるから既にサーバサイドでもかなり使われてる 「実装依存」という言葉は自分の知らない概念を認められない負け犬のための言葉と認識した
839 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 13:13:02.17 ID:NclmcGF9.net] 実行ファイルに適切なリロケーション情報残してればローダが毎回.text書き換える前提で label: mov eax, label ... みたいなやりかたでPCとってきてかつASLRするのだって不可能ではないのでは? 現代のローダは.textは書きかえないのが主流だからこういう実装は多分存在しないけど、 call,ret 使わない縛りでもできなくはないと思う。(メリットが無いのはわかってる) > ...本質的には不要な処理である。 x86セグメント方式だと、CSの指す領域を一方向にしか増やせなくてASLR難しそうなので 現代ではセグメントによるリロケーションはもう使えない気がす。
840 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 13:14:18.63 ID:bur23WMX.net] x64はセグメントオーバーライドプリフィクスそのものが使えなくなった LESとかLDS潰してAVX命令作ったからね
841 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 13:20:15.23 ID:bur23WMX.net] >>818 スタートアップルーチンにリテラルを都度書き換えさせるとかアホくさすぎる そもそも起点となる命令ポインタの算出が必要だから結局startupルーチン自身は 動的な命令ポインタの動的な値を知ってないといけない。 それを本末転倒と言ってるのだが。
842 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 13:29:06.96 ID:NclmcGF9.net] ローダはモジュールの先頭アドレスだけわかれば良いのでは?PC必要無いと思うけど。
843 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 13:41:35.80 ID:T6YRRrU3.net] 老害は今日も元気で何よりだな
844 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 15:16:13.59 ID:rLOE8FZ/.net] 位置非依存コードは専用のバイナリフォーマットがあるわけじゃなくて既存のELFやらPEフォーマットのままで プログラム側から呼び出されるCランタイム側で解決するんだから結局自身で自分のアドレスを知らないとダメだぞ ローダはプログラムのエントリポイントに飛ばすものだがエントリポイントにプログラム自身の展開されたアドレスを渡してくれるわけではない
845 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 15:31:05.41 ID:PLCb4FbB.net] まさに実装依存だな
846 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 15:36:13.44 ID:rLOE8FZ/.net] 老害くんの恥の上塗り劇場
847 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 16:56:34.49 ID:k7Ula1IS.net] 問題はcallを使わずでjmpで完全に代替できるかだろ 結論としては不可能 DLLがマップされるアドレスは不定だしDLLから別のDLLを呼び出す、更に遅延ロードが絡むとローダでリテラルを絶対アドレスに書き換えて解決なんてことは出来ない
848 名前:822 mailto:sage [2015/07/22(水) 17:01:28.28 ID:+xtThSAH.net] えー?ELFローダって別に自身のアドレス必要だったことないけど? ELFロードするだけなら普通にCで書けるでしょ?そのあとジャンプするのだって、自分で決めたロードした位置にジャンプするだけでは?
849 名前:822 mailto:sage [2015/07/22(水) 17:06:17.78 ID:+xtThSAH.net] WindowsのPEのローダでできるかはわからんけど、自分でローダまで作る前提なら可能だと思うのだけどなぁ…
850 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 17:07:03.34 ID:k7Ula1IS.net] 違うよ老害くんの主張は call/retは絶対アドレスをスタックに積んでjmpで完全に代替できて、できないものは実装依存(キリッ)だよ おそらくDLLも存在しないワールド
851 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 17:14:23.14 ID:k7Ula1IS.net] WindowsはWinMainの第1引数のhInstがモジュールのアドレスになってるからオフセットとれば絶対アドレス変換できなくもないけどな。アプリ側でゴリゴリやる必要あるがそんなんアホくさくてやらんだろ。
852 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 18:34:32.58 ID:ALVAbODL.net] >>826 スタックはアドレスを取れるんだから、スタックに領域を確保して >>724 みたいにしてモジュールのアドレスを問い合わせて、その後ろに 処理継続先のオフセットとモジュールのアドレスを足してjmpするコードを生成する ジャンプ先でスタックを戻す モジュール名のリテラルはmovの連続で構成する DEPは後から搭載された機能だからDEPが使えるというのは環境依存だよな PICという制約を加えてもよければ、ローダによる再配置を禁止しても構わなくなるぞ 先に環境を指定して議論しなければだめだろ
853 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 19:11:08.69 ID:bur23WMX.net] はぁ? >>724 はエントリポイントが固定アドレスじゃねーと使えないよ -mPICオプションつけてコンパイルしてみ?callでEIPとってからオフセット差分を callを回避するために結局callを使うって本末転倒じゃねーか バカ杉
854 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 19:13:29.16 ID:bur23WMX.net] ああ、DLLのマッピングされるアドレスは固定じゃないですね 固定されてたら競合しちゃうからねー 複数のプログラムから呼び出されることを想定してプロセスローカルでないアドレスに動的にマッピングされます
855 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 19:18:08.19 ID:ALVAbODL.net] >>831 はJITとやり方がそっくりだろ JITはアプリ側でゴリゴリやる方式だし
856 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 19:26:58.09 ID:2paHa4MR.net] call不要はねーわ。 ちなみにXbyakはcallがeip/rip相対にすらならないからいろいろ他のJITとは勝手が違う
857 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 20:01:00.11 ID:iGjKi/Th.net] 機械語をハンド逆アセンブル?しようと思ってるんですが、そういうのに使える便利なツールとかってありませんか。 ソースコードの機械語と命令単位で切り分けた機械語とニーモニックにしたものを並べて見比べたいんですが、 逆アセンブルツールというと自動的に解析してくれる様なものしかないみたいなので、メモ帳を複数起動して解析してる状況です。 一つのツールで操作できて整った画面で見られたらいいなぁと思ってるんですが、そういうニッチなツールはないですか。
858 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 20:03:31.70 ID:2paHa4MR.net] EXEならVisualStudio付属ののDUMPBIN使えば?使い方はオプション見ればわかると思うけど
859 名前:デフォルトの名無しさん [2015/07/22(水) 20:34:53.88 ID:qru6k61f.net] 逆アセンブルできてたら、もとのバイナリ、16進は不要では? 実際に経験がないからわからないけど、アセンブラの命令と対応する16進を覚えておくか、メモ帳で逐次検索するか、 ルビふりとか英-和の翻訳で英語と日本語を文区切りで併記するように機械語とアセンブラでの似たものを自作するとか。
860 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 21:34:40.92 ID:iGjKi/Th.net] >>838 やっぱり自作しかないですかね。 x86-x64のオペコードはニーモニックと一対というわけではないので内部処理を確認する為に残しておきたいんですよね。 さすがに256命令+SSE命令 &MOD R/Mの組み合わせを暗記するというのは人間業ではないので今あるもので地道に頑張りたいと思います。
861 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 22:22:05.85 ID:ALVAbODL.net] >>832 >>831 のモジュールアドレスを register void *dop=dlopen; register void *dsym=dlsym h=(*dop)(NULL); cont=(*dsym)(h,"label_cont"); jmp(cont); こんな感じに変更すればいいんじゃないのか スタートアップルーチンでサンクを呼び出す部分までをこのやり方で置き換えるんだよ >>833 後から勝手に制約を追加できるんなら、自分だったら動的再配置を禁止するぞ そんなこと許したらcomファイル大勝利になるだろ だから先に環境を示さないとダメなんだよ 本末転倒なんていったらCRISCの話でこんなことやってる方がどうかしてるだろ 団子がどうしてもcall使ってEIP取らないとできないことがあるって言うから あえてcall封印してたんじゃなかったのかよ
862 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 22:30:16.31 ID:6QdmLHPN.net] DLLのアドレスは不定だろ? 前提からして間違ってるよ?
863 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 22:36:05.03 ID:6QdmLHPN.net] >>720 に対する反論はどんな実装でも例外なく通用する完璧な実装を用意することだけだよ >>840 のコードは外部DLL(*NIXでいうところのSO)から別のDLLを呼び出すときには通用しない
864 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 22:46:58.82 ID:6QdmLHPN.net] 位置非依存コードは既に実用化されてる技術だけど「実装依存だからノーカン」みたいなこと言うアホもたい
865 名前:ェいだけど callを使わなくてもいいようにABIやスタートアップルーチンを書き換えればいいなんてのはもっとありえない解決策だよ 現実みろよ てかCRISC(笑)なんて既に死語だと思うけどね。 既にIntelプロセッサの内部命令はPentium ProからPentium 4までのアーキテクチャの 「Load/Storeアーキテクチャ」ではなくなってるしAtomはOoOを実装したCISCだし [] [ここ壊れてます]
866 名前:デフォルトの名無しさん [2015/07/22(水) 23:06:10.53 ID:oW3pCj8R.net] Open office Org.
867 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 23:12:09.13 ID:ITYxsc4F.net] それはOOoじゃなかったっけ
868 名前:デフォルトの名無しさん [2015/07/22(水) 23:21:04.52 ID:oW3pCj8R.net] >>845 馬鹿野郎! 今は21世紀だぞ!
869 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/22(水) 23:22:46.86 ID:6QdmLHPN.net] 「CRISC」ってどっかの学者さんが言い出した言葉ではなくIntelの造語で 20年も前の言葉でPentiumで用いた高速化のアプローチのことを指してそういっただけで そういうアーキテクチャがあるわけではない。 「CISCをRISCライクな単純命令に分解して高速化しました」の方向を突き詰めたのがPentium4で とっくにそっちは死に筋だよ 今はどっちかというとCISC命令を内部で融合して命令数を減らして高速化するアプローチが高速化の中心なので 「CRISC」は実態を表していない。 どっちかというと今の方向性は2006年の「Wide Dynamic Execution」でしょう
870 名前:デフォルトの名無しさん mailto:sage [2015/07/23(木) 05:59:11.25 ID:fN1C2EA/.net] 今のCoreMAはCISCを別のCISC=uOPに変換して実行している所だな。 それは分解というより変換と言った方が正しい。 uOPはハードワイヤで実行可能な実行単位を基本としており、最初はRISC的なものであったが世代を追って高機能化して今は可変長のCISCになっている。 x64をそのまま使わないのはuOPが一部x64よりも高機能になったこともあるがベースはやはりx64の素性が悪いからでわざわざワンクッションおいてもuOPに変換した方が性能が出るからである。 一度変換した命令はキャッシュされ再利用されるので複雑なx64命令をデコードするのは最初の一回だけで良い。 命令がキャッシュにある間はデコーダは止まっていて電力を食わないようになっており、消費電力を気にすることなく大規模なx64デコーダを実装して性能を高めることができている。
871 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/23(木) 08:12:10.12 ID:tlVBnSRn.net] またどうしようもないおっさんがいる。たのむからブログやツイッターにでも引きこもってくれ。
872 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/23(木) 08:32:09.52 ID:tlVBnSRn.net] てかμOPsは可変長じゃねーよヴァカジャネーノ いやたとえ可変だったところでμOPs cacheの1エントリに2〜3μOPs書き込めるわけではないがな 1μOpsあたり何バイトだと思ってるの? まあ40バイト程度だがな。 4μOPsフェッチするだけで160バイト/clk。4命令をデコードするより電力効率が多少ましなだけで 別に省エネでもなんでもねーわ。格納効率は最悪。 Cortex-A57には同じ目的に近いloop buffer(SNB以降のそれよりNehalemのそれに近い)があるが 都度デコードしたほうがマシなくらいなのでA72では削除された。
873 名前:デフォルトの名無しさん [2015/07/28(火) 12:23:24.90 ID:ss5oXPlA.net] なんか初心者スレッドって感じじゃなくなってるような ここで完全初心者の俺が質問すると微妙だが アセンブラというかlinuxカーネルの質問なんだけど システムコールするとスタックとかプロセス空間が切り替わっちゃうらしいんだけど そこでレジスタに乗り切らない文字列とかってどうやって渡してるんでしょうか
874 名前:,,・´∀`・,,)っ-○○○ mailto:sage [2015/07/29(水) 00:57:18.39 ID:PIgMeuM3.net] ポインタ渡し
875 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 10:18:54.90 ID:7dNzVewM.net] 普通にポインタで渡してmemcpyみたいなことをしてる。ただカーネル内だとNULLに触れて死ぬのは許されないので、アドレスチェックしてmemcpyみたいなことをしている。 lxr.free-electrons.com/source/lib/strncpy_from_user.c#L23 プロセス空間変わるといってもユーザー空間はシステムコールを呼んだプロセスと同じアドレスが見えるようになってる。 カーネル空間全プロセス共有、ユーザー空間対象プロセスと共有みたいな配置になる。 (なのでカーネル空間用のアドレス必要で32bit OSだとユーザー空間は2GBとか3GBしか持てないとかになる)
876 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 23:57:28.65 ID:zpCxDSCd.net] そうか普通にポインタ渡しなのか >>852-853 >システムコールを呼んだプロセスと同じアドレスが見えるようになってる。 分かってない事が多すぎる・・・
877 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 00:27:18.11 ID:1ZSGrKWz.net] というかシステムコールではアドレス空間変わらなくて、ページごとにRing3(ユーザーモード)から読めるかどうかみたいなのが設定されてるとかだったはず。 Linuxだと、 - 0-3GB プロセスごとのユーザ空間のメモリがマップしてある。Ring3 でもアクセスできる - 3GB-4GB 全プロセスで共有のカーネル空間メモリがマップしてある。Ringからしかアクセスできない。 みたいになってたはず。 システムコールを呼ぶと、アドレス空間は変わらないけど、Ring0になるので、0-4GB全部アクセスできるようになる。 (Ring1,2の扱いはよく知らない)
878 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 01:05:18.46 ID:UjoOxrCo.net] >>855 聞いた話だけどほとんどのプロセッサがユーザーモードとシステムモードの2種類しか持たなくて、 x86/64のように4種類も持っている方が珍しいんだと そしてほとんど真ん中の2個は使われてないんだってさ
879 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 01:14:35.07 ID:HdXuYlDO.net] システムコールは、呼び出したスレッドとは違う、カーネルのスレッドで実行されるって認識でOKですか?
880 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 01:23:21.48 ID:unLWCujK.net] NG
881 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 01:27:27.60 ID:HdXuYlDO.net] システムコールは、呼び出したスレッドで実行されるのですか? それなら、自分のコードは特権になれなくて、カーネルのコードは特権になれるのは何故ですか?
882 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 01:31:28.62 ID:unLWCujK.net] 定められて手順を踏んで特権モードに切り替えてるから
883 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 01:36:35.97 ID:HdXuYlDO.net] 同じ手順を自分のコードではとれないのは何故ですか?
884 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 02:09:02.32 ID:1ZSGrKWz.net] syscall, sysenterとかでググるといくつか解説が見つかると思う www.marbacka.net/asm64/arkiv/int2e_sysenter_syscall.html 自分で書いたプログラムでもカーネルモードに切り替えられるが事前に決められたアドレスにしかジャンプできない。
885 名前:デフォルトの名無しさん [2015/08/01(土) 18:40:05.13 ID:+UL3i04M.net] SHのMOV.L命令@(disp,PC),Rnで@(H'0004:8,PC)の場合pcから8バイト先にあるって意味ですか?
886 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 17:35:32.18 ID:6eoHy3Qx.net] アセンブラで遊ぼうと思ったミジンコだが16bitリンカが手に入らないでござる lnk563.exe ってwin8じゃ使えないの?
887 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 18:57:14.49 ID:NJB3TdQy.net] 方法1.リンカ要らずのNASM等を選ぶ 方法2.どうしてもMASMでなきゃ嫌なら実行環境でリンカを使う
888 名前:デフォルトの名無しさん [2015/09/03(木) 19:49:38.34 ID:ACT9XNdq.net] alink.sourceforge.net/download.html www.agner.org/optimize
889 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:31:27.84 ID:6eoHy3Qx.net] 人がいた ありがとう NASMを使ってみるよ
890 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 08:21:51.96 ID:gC05hgZm.net] >>855-856 でもその多階層のおかげでハードウェア仮想化がやり易かったのも事実で Ring0でハイパーバイザを動かしてRing1でゲストOSのような使い方ができる
891 名前:デフォルトの名無しさん [2015/11/03(火) 09:18:31.95 ID:XRdoJJRy.net] 32ビットにアセンブルしかできないコンパイラがありこれを64ビット環境で実行したいんだけど どうすればいいですか? fib.sはそのコンパイラで作成 gcc -g -O2 -Wall fib.s -lm エラーを1つ抜き出すと fib.s :30: Error: invalid instruction suffix for push 30行目にはpushl %eax → pushq %raxと直すとエラーは消える
892 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 11:44:49.57 ID:Fliardzw.net] 普通に32ビット環境向けにコンパイルするんじゃダメなんですかね? gccのオプションに-m32を追加してやって
893 名前:デフォルトの名無しさん [2015/11/03(火) 14:30:53.52 ID:C0Kah9v/.net] できました ありがとう
894 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 12:01:39.79 ID:uJ085arg.net] 林晴比古さんのアセンブラ入門見ているんだけど COM形式で書かれたHelloworld とASM形式の違いって何?
895 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 15:07:27.87 ID:udrFqHkE.net] EXEフォーマット
896 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 19:37:15.05 ID:yluT1kPN.net] 俺が村田だ
897 名前:デフォルトの名無しさん mailto:sage [2016/01/08(金) 19:57:01.78 ID:9w8rhkkq.net] 俺は田村だ
898 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 19:49:30.00 ID:2tQBU5BA.net] 俺は田田になろう
899 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 18:34:18.73 ID:IMboGSkT.net] じゃあおれは村村
900 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 03:26:52.36 ID:byr4bFjT.net] ムラムラとな
901 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 15:01:07.24 ID:YerkhKe+.net] くだらねえこと書いてる暇があったらコード書け
902 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 15:53:45.03 ID:zSKdEvcq.net] C F G7 C
903 名前:デフォルトの名無しさん [2016/02/07(日) 18:06:15.79 ID:2wykn2ry.net] れいさん乙
904 名前:デフォルトの名無しさん mailto:sage [2016/03/26(土) 03:07:39.25 ID:djw8qeqA.net] ムッシュ
905 名前:デフォルトの名無しさん [2016/04/26(火) 21:52:15.84 ID:Sbprxlsu.net] アセンブラ学びたいんですがアセンブラやるならまずCASLやれと言われて CASLについて調べたんですけどもCASLとアセンブラって全くの別物ですよね。 CASLを理解出来ればアセンブラ習得に役に立つとかそういうものはあるんですか? PC周りについても全く詳しくないのでそういうのも兼ねて学習できる言語ならいいのですが
906 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 01:00:54.66 ID:vpv25bM3.net] アセンブラは、各CPUで異なるから、一々、個別のCPU命令を覚えていられない 一般的なアセンブラの記法である、CASL2, LLVM などの仮想アセンブラで、勉強する 実行時、 仮想アセンブラ → 各CPU個別の命令 へと、変換される
907 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 02:57:44.07 ID:/k94gDMl.net] >>883 まずは取っつきやすい32bit用でどうぞ www.masm32.com/
908 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 09:53:26.31 ID:EoTK5XPo.net] >>884 ->>885 回答ありがとうございます。 自分はollydbgでcrackmeを解くことが出来るスキルを付けることを目標にしてるのですが でもプログラミング経験がほぼ無いのでまずとっかかりにCASLやって...その後アセンブラを学ぼうと思ってるんですが 学習方法は間違えてないでしょうか?
909 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 13:29:56.10 ID:mkzH47Ig.net] それとアセンブラにも PIC,マイコン、Z80など色々種類があるみたいですが、どれが自分の目的にあってるか教えてほしいです 自分の環境はwin7,64bitです。この環境でも学習できるものを学びたいです
910 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 15:09:51.70 ID:+os+Vu+g.net] >>886 CASLやっても実践ではあまり役に立たないので、やりたいことが決まっているのであれば、 何もわからなくてもとにかく以下の例の通りにそのままいじってみる。 grayhat-3dmovie-programming.com/it/programming/77/ 最初はわからないことだらけでも、基本はIntel 386 CPUの命令の羅列なので、 ollydbgの画面で1ステップずつ実行しながら理解するのが一番早い。
911 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 23:45:35.49 ID:i86kqw6x.net] >>888 命令も何も理解してないまま、実戦に移って知識が付いていくものですか? アセンブラはかなり難しいイメージがあるので基本を押さえてないとデバッグは無理と 勝手に自分の中で思っていたのですが… 時間はたっぷりあるので確実に覚えたいです
912 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 01:03:20.60 ID:D/2kUBT7.net] メモリとレジスタだけ理解してりゃ、命令なんかその場で覚えりゃ十分 ビット演算とかその辺の動きは理解が必要かもしれないが、その程度 特権命令とかセグメントうんたらが必要になるなら、それはまたその時 ただ、x86のDOSでbios呼んで何かやる以外、初心者がアセンブラだけで簡単に出来ることなんて、なにもないけどな それなら、C/C++の一部をアセンブラコードを出させてそれを読むとか、一部をアセンブラで書いてみるとかの 主体がC/C++にある方がずっとやりやすい
913 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 01:04:41.95 ID:D/2kUBT7.net] メモリとレジスタだけじゃなく、フラグとスタックの仕組みくらいは最初に覚えといた方がいいか
914 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 02:42:09.05 ID:atZPORcr.net] >>889 基本から勉強しようとする気持ちはわかるけど、いいデバッガ・アセンブラがあるんだから 実行しながら覚えたほうが早い。CPUのマニュアルを横に置いて、1ステップ実行したら 状態フラグとレジスタの値がどう変わるか見れば動作はわかる。 ollydbgはアセンブルもできるらしいから、1〜数行のコードを書いて実行させることもできる。 とにかく毎日デバッガとアセンブラに触ること。動かして失敗しながら覚えること。 わからないことはその都度調べれば間に合う。
915 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 21:22:05.78 ID:sUt0Q0jr.net] よくわかりませんけどね、 CとかVBをアセンブラに変換するソフトを作れば、 なんかアレな感じじゃないですか。
916 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 21:53:31.21 ID:zOCFIMbn.net] VBなんか知らんが ほぼ全てのCコンパイラが、Cで書かれたコードをアセンブラに変換して出力する機能を持ってるよ それしかなく、実際に機械語に変換するのはアセンブラプログラムにまかせてしまっているコンパイラもある
917 名前:デフォルトの名無しさん [2016/05/01(日) 15:51:33.79 ID:tKi6j9CT.net] 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、 BitTorrentがオープンソースで開発されています 言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか? Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします https://twitter.com/Lyrise_al ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw The Covenant Project 概要 Covenantは、純粋P2Pのファイル共有ソフトです 目的 インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します 特徴 Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW) 接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です DHTにはKademlia + コネクションプールを使用します UPnPによってポート
918 名前:解放することができますが、Port0でも利用可能です(接続数は少なくなります) 検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません 。 [] [ここ壊れてます]
919 名前:デフォルトの名無しさん mailto:sage [2016/05/03(火) 21:31:55.58 ID:rzpxdG1A.net] 初心者がアセンブリ言語を覚えたいと言ったとき その8割は「Windowsで動くゲームを作りたい」「Windowsで動くゲームを改造してチートしたい」といったものであり 勉強すべきはWindows環境についてであってアセンブリ言語についてではなかったりする
920 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 18:17:05.69 ID:cRuVDbfJ.net] アセンブラの教科書よりやねうらお先生のぱんつの方がベスト
921 名前:デフォルトの名無しさん mailto:sage [2016/05/06(金) 21:38:41.15 ID:OWOfsawE.net] おすすめの書籍教えて
922 名前:デフォルトの名無しさん [2016/05/07(土) 10:45:20.57 ID:Kik6brAm.net] いまどきのLLVM
923 名前:デフォルトの名無しさん mailto:sage [2016/05/07(土) 13:09:41.32 ID:U+Yqq8Eg.net] チートなんて、まず無理 メモリの値を変えても、サーバーと通信したときに、 パリティなどをチェックして、改造されていないかどうかを確かめるから、ばれる ルーターの中には、伝送誤りが起こっても、パリティを変えて、正常と扱うものがあるので、 ドラクエXでは、そもそも通信されたデータを信用していない だから、常に独自にチェックしている
924 名前:デフォルトの名無しさん mailto:sage [2016/05/07(土) 15:50:50.22 ID:4GJcXDs9.net] 所謂チートバグみたいにオフゲーでも改造して挙動を楽しみたいとかあるのよ
925 名前:デフォルトの名無しさん mailto:sage [2016/05/07(土) 16:22:32.96 ID:3mhGs5Tp.net] >>900 オンラインゲーム前提で話してて草生える
926 名前:デフォルトの名無しさん mailto:sage [2016/05/08(日) 11:24:47.08 ID:NDoMe0zH.net] C++のプロローグを詳しく説明してるwwwか書籍はないですか? www漁るとCばっか
927 名前:デフォルトの名無しさん mailto:sage [2016/05/08(日) 11:45:33.85 ID:pwQcqOb7.net] 努力不足 やりなおし
928 名前:デフォルトの名無しさん mailto:sage [2016/05/09(月) 11:36:13.64 ID:noyNIse2.net] 904です 分かりやすく書いてあるのみつけて、解決しました。
929 名前:デフォルトの名無しさん mailto:sage [2016/05/10(火) 00:50:37.74 ID:1N2kVLqm.net] お疲れ様
930 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 19:54:30.30 ID:AfHNbOje.net] やる気のある者は去れ
931 名前:デフォルトの名無しさん [2016/06/12(日) 14:47:28.03 ID:nRDxQz3o.net] アセンブラの&はどういう意味? 結合? andと同じ?
932 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 18:20:14.59 ID:fuUaUmmT.net] 何のアセンブラだよ。
933 名前:デフォルトの名無しさん [2016/06/12(日) 18:58:05.37 ID:nRDxQz3o.net] >>909 ARM・・でいいのかな? そこもよくわからない・・・
934 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 21:02:59.04 ID:XGvNNTcY.net] 擬似命令だったり、&hとして16進数を意味したり、アセンブラによっていろいろあるけど ARMだとどうなんだろ gasだとまた違ったりするだろうし 意外にbytecode用の中間出力だったりする可能性もあるし (見たこと無いのでよく知らない)
935 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 21:07:59.02 ID:MHUKBP3O.net] 可能ならソース貼れば?
936 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 21:53:24.12 ID:nqTn+/vX.net] llvm IRはぱっと見だと&記号使ってないような intel記法、AT&T記法でも使ってないよね 独自のマクロとかだとソース無いと詰むな
937 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 19:49:26.85 ID:RQgSJKk0.net] 今の時代にアセンブラが必要って、 どういう分野のプログラマーなんだろ。 少し前に、非公式のファミコンソフトが出たけど、 そんなのしか思いつかん。
938 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 22:25:44.33 ID:yIJ2BCTZ.net] 安い1ボードPCが手に入るから、Cとかで書いたプログラムをOS無しで動かすとかしたいとき、 ブートローダからバトンもらってCに渡すような部分はアセンブラじゃないかな。
939 名前:デフォルトの名無しさん [2016/06/16(木) 23:23:22.10 ID:VLfFMudl.net] >>914 ファームウェア、OS、チップ周りのコードは全部アセンブラ。 アプリの人がくだまいてるのは知識を自慢したいだけ。あとはレトロ趣味。
940 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 00:47:33.75 ID:g/0le+GF.net] >>916 いつの時代からタイムスリップしてきたんだ?
941 名前:デフォルトの名無しさん [2016/06/17(金) 03:17:01.37 ID:PNM3xCxJ.net] >>917 俺がアセンブラで書いたことあるのは、ブートローダ、カーネルプリミティブとかスケジューラ、MMU周り、ファームウェアとかコントローラ周りくらい。アプリでアセンブラ書いたことは一度もない。逆アセとか解析とかはまあするけど。 ついこないだだと思ってるけどな。 ようはCが動く状態になったらアセンブラなんかで書く必要ないってことだけど、違うって言いたいの?
942 名前:デフォルトの名無しさん [2016/06/17(金) 08:09:43.93 ID:ecrIc0Au.net] あ、全部ってのは間違いで、ドライバとかファイルシステムとかCで書けるとこはもちろん Cで書く。 アセンブラが必要なのはCでかけないような処理か、Cコンパイラがないような環境かのどちらか。 ここで延々と話してる内容がそのどちらでもないような話が多いみたいなんで、詳しい人達が互いに、知識を競ってるようにしか見えないのが残念。
943 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 12:03:29.49 ID:WSjlHFjC.net] マ板でやれって話しかないからな
944 名前:デフォルトの名無しさん [2016/06/17(金) 23:36:40.98 ID:5J9spy9L.net] >>915 こんな本もある 12ステップで作る 組込みOS自作入門 kozos.jp/books/makeos/
945 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 18:13:15.88 ID:d8nab9By.net] アセンブラについてはノー知識だけど、os.phil-opp.com/multiboot-kernel.html で x86_64でgrubからバトン渡されてRustのコードにバトン渡すまでのアセンブラが説明してあって興味を持ちました アセンブラの命令自体は簡単だけどそれ以外の知識が沢山要るので大変なのだなあと感じています 今まで特に気にしてなかったリンカの意味とかnmで見える.textの意味とかが分かってきて楽しい
946 名前:デフォルトの名無しさん [2016/06/20(月) 22:36:43.19 ID:/Loo3J/M.net] OSの立ち上げ部分を勉強したいなら、Rustっていうので書かれたサンプルをCで書き直してみればいい練習になると思うよ。
947 名前:デフォルトの名無しさん mailto:sage [2016/06/24(金) 13:21:30.40 ID:/3QNO0r0.net] >>918 おまいさんが書いたと言ってるosはどこからダウンロードできるの?
948 名前:デフォルトの名無しさん [2016/06/25(土) 09:35:23.63 ID:+uLhlbXC.net] >>924 公開はしてない。Linuxならソース探せば上げれると出来ると思うよ。プロプライエタリな奴は上げれない
949 名前:デフォルトの名無しさん mailto:sage [2016/06/27(月) 18:39:49.55 ID:gm7Fhm/d.net] >>924 人のもの見る暇があるなら自分で書いてみればいいのに。
950 名前:デフォルトの名無しさん mailto:sage [2016/06/28(火) 02:56:54.16 ID:P6ezUFsS.net] >>922 これかなりいいよね
951 名前:デフォルトの名無しさん mailto:sage [2016/06/28(火) 15:47:26.63 ID:Xfds6bLp.net] 質問します LDR R1, =(aLimitfpsToD - 0x18C0FF8) ってのがあるんですがこのときR1レジスタに入るのは0x18C0FF8のメモリ番地が 入るだけでしょうか?数値は入らないですよね? 変な質問ですいません
952 名前:デフォルトの名無しさん mailto:sage [2016/06/28(火) 16:02:52.63 ID:5ckL0Bml.net] 数値が入る しかも全然違う
953 名前:デフォルトの名無しさん mailto:sage [2016/06/28(火) 18:21:05.37 ID:Xfds6bLp.net] >>929 回答ありがとうございます。 差し支えなければどんな数値が入るか教えてもらえませんか?
954 名前:デフォルトの名無しさん [2016/06/28(火) 18:45:43.76 ID:nfEKCddO.net] なんのアーキテクチャか分かんないけど、aLimitfpsToDってのがどこかのラベルで0x18C0FF8からのオフセットが入んじゃないのかな? (と=は知らんw
955 名前:デフォルトの名無しさん mailto:sage [2016/06/29(水) 14:40:17.96 ID:15yOy0V1.net] アセンブリ(言語)
956 名前:とアセンブラを混同している人がたまにいる、という話題は既出ですか? [] [ここ壊れてます]
957 名前:デフォルトの名無しさん mailto:sage [2016/06/29(水) 15:03:39.28 ID:A93JdvJw.net] なにアセンブリをアセンブラでアセンブルするだけの事だ 混同されても実害はない
958 名前:デフォルトの名無しさん mailto:sage [2016/06/29(水) 16:06:32.52 ID:+NpkjfxL.net] はやてのように アセンブル
959 名前:デフォルトの名無しさん [2016/06/29(水) 16:21:03.35 ID:I/2QdAFu.net] あまり気にしなかったけど、「アセンブラのコード書く」とかは間違いなの?普通に言ってたけど。アセンブリで書くとか違和感あるけどな。
960 名前:デフォルトの名無しさん mailto:sage [2016/06/29(水) 17:32:10.33 ID:V1IZrtk2.net] assembler 組み立て工、組み立てる人、アセンブラ assemble 〜を組み立てる assembly 組み立て assembly language 組み立て用言語、アセンブリ言語
961 名前:デフォルトの名無しさん mailto:sage [2016/06/29(水) 17:50:54.09 ID:C8/RLHPN.net] >>932 https://en.wikipedia.org/wiki/Assembly_language An assembly (or assembler) language,[1] often abbreviated asm, is a ... References 1. Assembler language, IBM Knowledge center www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.asma400/asmr102112.htm
962 名前:デフォルトの名無しさん [2016/06/29(水) 19:18:46.15 ID:QKmYa11M.net] >>932 assemble+er、義務教育レベルの英語も理解できていないという事。 mayonnaiseは、フランス語だから、英語の規則は当てはまらないけれど、それでもmayoreには、ならない。 無理矢理ならば、mayonnaiserか、mayonnaiseist。 そんな事も解らない人達なんだよ。
963 名前:デフォルトの名無しさん [2016/06/29(水) 19:20:04.12 ID:QKmYa11M.net] >>937 それは、アセンブラで使用する言語って意味ね。
964 名前:デフォルトの名無しさん [2016/06/29(水) 21:49:22.20 ID:u3VATEok.net] 言語のことをアセンブリって言うのは分かるけど、独習C、独習C++、独習アセンブリ? アセンブリとアセンブラは慣例的にはあまり区別されてないように思うけどな。
965 名前:デフォルトの名無しさん mailto:sage [2016/06/30(木) 15:33:47.45 ID:VmcBuUmn.net] アセンブラで言語そのものを指す人もいれば、アセンブリを機械語に翻訳するプログラムだけ、って人もいる 区別しないと意図が伝わらない場合がどんだけあるかを考えると、さして深刻な問題じゃないような
966 名前:デフォルトの名無しさん [2016/07/16(土) 23:38:52.13 ID:MXamywZj.net] アッセンブルEX10
967 名前:デフォルトの名無しさん mailto:sage [2016/07/17(日) 02:26:22.26 ID:u2dAluYM.net] 日本語としては、区別さえできればどちらでもいい 要は話者が寛容であるかどうかだ
968 名前:デフォルトの名無しさん mailto:sage [2016/08/11(木) 20:38:10.64 ID:CgUWJQKrz] CallWindowProcAにOllyDbgでログ付き条件ブレークポイントをかけて、ウィンドウで受け取るメッセージの詳細を出力する時にどうして式はEBP+8じゃないといけないのでしょうか EBP+8にはウィンドウのハンドルが入っていて、特にMSG構造体へのポインタとかではないように思うのですが…
969 名前:944 mailto:sage [2016/08/12(金) 17:12:44.32 ID:URvVD4gpm] CallWindowProcAぜんぜんウィンドウプロシージャじゃなかった 解決しました
970 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 10:48:09.91 ID:eBSmAB5D.net] PE フォーマットの解説を知らないか?
971 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 12:49:07.08 ID:Z8SQUEFb.net] 仕様書がMSDNにあるはずだけどそこに書かれてない話?
972 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/10/16(日) 14:46:56.15 ID:Ou+5Vobn.net] >>946 Resource Hackerのヘルプを参照
973 名前:デフォルトの名無しさん [2016/10/16(日) 14:48:03.15 ID:eOEStkDD.net] なんとか洋介山の本捨てたつもりだったがまだあった 来月捨てよう
974 名前:デフォルトの名無しさん [2016/10/18(火) 19:22:34.09 ID:Pul0IDVM.net] つBOOK・OFF
975 名前:デフォルトの名無しさん [2016/11/16(水) 23:15:55.17 ID:d7D9Ori4.net] 4bitアセンブラはどのスレで活動すればいいですか?
976 名前:デフォルトの名無しさん [2016/11/17(木) 00:05:52.27 ID:d/bxtnYG.net] >>951 75X?
977 名前:デフォルトの名無しさん mailto:sage [2016/12/16(金) 22:59:32.63 ID:sTWK9lm6.net] >>952 縦積み命令がわからない MOV A,#0 MOV A,#2 MOV A,#4 こういう書き方ってなんなの?
978 名前:デフォルトの名無しさん [2017/01/05(木) 19:44:04.66 ID:VylnptJy.net] 助けてください 仕事で使わなきゃいけないのですが職歴コンビニバイトのみの新人で何から何まで一切分かりません h8なんとかっていうpdfだけ渡されて、これで頑張ってと言われました
979 名前:デフォルトの名無しさん mailto:sage [2017/01/05(木) 20:15:49.65 ID:4pCGEQz7.net] そんなやつに仕事任すわけねーだろw
980 名前:デフォルトの名無しさん [2017/01/05(木) 20:54:33.92 ID:NEvicUSZ.net] >>953 たぶんMOVじゃないんじゃないかと。 縦積みが必要なのは、条件分岐が無いから。 ある条件が成立すると、次の命令がスキップ(実行されない)。 よって、この組み合わせ、すなわち、縦積みで条件分岐ができるようになるんだ。
981 名前:デフォルトの名無しさん mailto:sage [2017/01/05(木) 23:15:42.12 ID:xlHoBTkZ.net] >>954 年明けからジョークですか
982 名前:デフォルトの名無しさん [2017/01/06(金) 06:59:42.56 ID:KJDRn8ud.net] いや本当なんです 今まではそれの図みたいなやつを直すのをやらされてました とにかくでてくる命令ひとつひとつが分からないのですがやさしく解説してるサイトとかありませんか
983 名前:デフォルトの名無しさん mailto:sage [2017/01/06(金) 09:33:41.11 ID:aKJxE5Q6.net] H8 入門 でくぐれ
984 名前:デフォルトの名無しさん mailto:sage [2017/01/06(金) 15:26:03.02 ID:XtKi9eaG.net] >>954 h8ならこっちの板の方がやさしいお兄さんが大勢いる rio2016.2ch.net/denki/
985 名前:デフォルトの名無しさん mailto:sage [2017/01/06(金) 21:51:45.02 ID:oEH4w/58.net] >>958 コンピュータの基礎からやらなきゃわかるわけないのに、何から何までわからない人ができる仕事じゃない。 医学書渡されて、これ見ながら手術してと言われるようなもん。基礎知識と経験なしにできるわけがない。 他の仕事をお勧めします。
986 名前:デフォルトの名無しさん mailto:sage [2017/01/16(月) 12:53:22.13 ID:YsJi63qB.net] それが本当なら なにもわからん人にいきなりそんなことやらせる会社は早く辞めた方がいい 後でどんな難癖つけられるか分かったもんじゃない
987 名前:デフォルトの名無しさん mailto:sage [2017/01/25(水) 06:53:06.66 ID:UsTZ20bb.net] もらったPDFに全命令書いてあるというオチがありそうなんだが メーカ配布のやつでフラグ変化から消費クロックまでしっかり書いてあるやつ
988 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 04:01:17.79 ID:ha1UN0gn.net] アセンブラはじめるならLinuxでやるといいよ DOSと同じような感覚でアセンブラプログラミングができるから こんな感じ Linux でアセンブリプログラミング www.mztn.org/lxasm/asm00.html Linux で64bitアセンブリプログラミング www.mztn.org/lxasm64/amd00.html Linuxでのアセンブル方法はこんな感じ as -a=hogehoge.lst -o hogehoge.o hogehoge.s ld -o hogehoge hogehoge.s
989 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 04:03:45.58 ID:ha1UN0gn.net] UbuntuだとQEMUを入れるだけでQEMU+binfmtの設定が自動せされるから ライブラリへのリンクを貼るだけで他のCPUのバイナリをそのまま実行できるようになる UbuntuだとARM、MIPS、PowerPCができる 64bitARMならこんな感じ sudo apt-get install qemu sudo apt-get install g++-aarch64-linux-gnu sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib sudo ln -s /usr/aarch64-linux-gnu/lib /lib/aarch64-linux-gnu 32bitARMならこんな感じ sudo apt-get install qemu sudo apt-get install g++-arm-linux-gnueabihf sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib sudo ln -s /usr/arm-linux-gnueabihf/lib /lib/arm-linux-gnueabihf Cのコンパイル方法はこんな感じ aarch64-linux-gnu-gcc -O2 -o hogehoge hogehoge.c gcc-arm-linux-gnueabihf-gcc -O2 -o hogehoge hogehoge.c アセンブル方法はこんな感じ aarch64-linux-gnu-as -a=hogehoge.lst -o hogehoge.o hogehoge.s aarch64-linux-gnu-ld -o hogehoge hogehoge.s <
990 名前:br> gcc-arm-linux-gnueabihf-as -a=hogehoge.lst -o hogehoge.o hogehoge.s gcc-arm-linux-gnueabihf-ld -o hogehoge hogehoge.s できたバイナリは普通に実行できる ./hogehoge バイナリがどのアーキテクチャかはfileコマンドで確認できる file hogehoge [] [ここ壊れてます]
991 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 04:33:05.28 ID:ha1UN0gn.net] 修正 Linuxでのアセンブル方法はこんな感じ as -a=hogehoge.lst -o hogehoge.o hogehoge.s ld -o hogehoge hogehoge.o アセンブル方法はこんな感じ aarch64-linux-gnu-as -a=hogehoge.lst -o hogehoge.o hogehoge.s aarch64-linux-gnu-ld -o hogehoge hogehoge.o gcc-arm-linux-gnueabihf-as -a=hogehoge.lst -o hogehoge.o hogehoge.s gcc-arm-linux-gnueabihf-ld -o hogehoge hogehoge.o
992 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 05:30:13.84 ID:ha1UN0gn.net] ちなみにx86_64上のLinuxで32bitのバイナリを作成したい場合はこう x86_64のLinuxでのCの32bitのx86バイナリのコンパイル gcc -m32 -O2 -o hogehoge hogehoge.c x86_64のLinuxでの32bitのx86アセンブル as --32 -a=hogehoge.lst -o hogehoge.o hogehoge.s ld -melf_i386 -o hogehoge hogehoge.o
993 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 06:40:56.41 ID:ha1UN0gn.net] nasmでのx86_64のLinuxでの32bitアセンブル nasm -f elf hogehoge.s ld -melf_i386 -o hogehoge hogehoge.o nasmでのx86_64のLinuxでの64bitアセンブル nasm -f elf64 $1.s ld -o $1 $1.o Ubuntuでのnasmのインストール方法 sudo apt-get install nasm
994 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 06:53:32.55 ID:ha1UN0gn.net] nasmでリスティングファイルも一緒に出力したい場合は 32bit nasm -f elf -l hogehoge.lst hogehoge.s 64bit nasm -f elf64 -l hogehoge.lst hogehoge.s
995 名前:デフォルトの名無しさん mailto:sage [2017/02/08(水) 20:50:02.86 ID:Mk3WVo/H.net] intel表記じゃないから却下
996 名前:デフォルトの名無しさん mailto:sage [2017/02/09(木) 06:59:54.86 ID:z8fk+TnA.net] MASM互換でないだけで、ニモニック自体はIntel記法やで
997 名前:デフォルトの名無しさん mailto:sage [2017/02/22(水) 00:33:42.60 ID:+9W7kpIJ.net] nasmでの疑似命令equ,res*, defineの違いって何ですか? また gasでのそれらに相当するものは?
998 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 01:10:33.00 ID:OEoJPS/I.net] EQU 定数で置き換える RES*シリーズ 指定単位×サイズのメモリ領域を確保する %DEFINE 一行マクロ、関数みたいに引数取れる gasは手書きに使うような代物じゃないから忘れていい
999 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 19:30:51.76 ID:yLUryXxs.net] どうもです 色んな事が色々ごっちゃになって分けわからんくなってました すいません基本gasでやってるんです nasmの情報のが多いのでそっから変換したりしてやってます まぁ確かに無駄が多いですが趣味の範囲なんです なので無駄なんだけど無駄じゃないんです それにやってないけど多分エディタによっては設定すれば自動挿入は普通に出来るんじゃないかと思ってます
1000 名前:デフォルトの名無しさん [2017/02/23(木) 19:33:38.38 ID:eG9NqkD/.net] やりたければやればいい やってはいけないなんてことはまったくない
1001 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:12:05.71 ID:3gLAKAVZ.net] では頑張る若者にプレゼントをあげやう ttp://www.ibm.com/developerworks/jp/linux/library/l-gas-nasm.html IT界の巨神IBMさんが書いてくれたgasとnasmの比較記事だ
1002 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 19:12:19.30 ID:f3uHJh0R.net] intel構文だとソースとデスティネーションが逆なんだよね。紛らわしい
1003 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 20:40:37.72 ID:1tN3aNfb.net] 不通にあるあるなんだが
1004 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 07:00:33.75 ID:4RyJuYrh.net] 68系も普通にやってたから、そこら辺はすぐに頭を切り替えられた だがニモニック自体の変更は許せん……
1005 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 14:52:11.20 ID:OcBIGmL7.net] mov a,b がa←bじゃなくてb←aなの?
1006 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 18:57:27.30 ID:ZV5SMkF2.net] 馬鹿には無理
1007 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 13:31:26.32 ID:nBceVUOh.net] movならop1→op2 loadならop1←op2 っつー感覚
1008 名前:デフォルトの名無しさん [2017/03/03(金) 14:06:44.03 ID:IUFykjWp.net] leaは?
1009 名前:デフォルトの名無しさん mailto:sage [2017/03/06(月) 16:43:49.83 ID:7tw9lmnR.net] loadだから←かな
1010 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 21:11:56.27 ID:w2yLRFMN.net] >>982-984 jmp 980 以下無限ループ
1011 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 00:44:05.09 ID:9+K5Dr1K.net] >>985 jr FC
1012 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 23:15:09.01 ID:fJKFVkkF.net] ??? FC? 何それ?
1013 名前:竄チた事ない人かな? 弾かれない? [] [ここ壊れてます]
1014 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 10:32:39.89 ID:JsoExgwj.net] ラベルが定義されてたのかも知れないし どうせ $FC だったり #FC だったり 0xFC だったり FCh だったりするんだから どうでもいい >987 こそアスペなんだろ
1015 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 10:57:57.87 ID:wNy7VRXS.net] >>986 がダメなのは JRでの相対ジャンプの計算では、基準となるPCは命令実行後のアドレスから つまり、>>985 においてJRを実行する時は985からの基準してカウントする必要があり >>985 と同じく>>981 にジャンプするためには、JR 0FBhと計算しなければいけないとわかっていないこと
1016 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 11:25:17.84 ID:JsoExgwj.net] >>989 そもそも 1レス 1byte って誰が決めたん
1017 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 11:34:43.20 ID:pwo5j4El.net] オフセットが奇数ってのも8ビットっぽくていいね
1018 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 18:39:54.13 ID:lkugX1fn.net] ソフト組んでると、何で奇数番地にジャンプしたり奇数番値から実行するのが良くないのかよくわからないんだよね。
1019 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 15:42:23.11 ID:94U0uFA6.net] 回路が複雑化しそう
1020 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 03:52:31.48 ID:6tZXs6+Y.net] どのCPUの話なのか分からないけど、基本的にはアクセス単位が16bitや32bitだからかと。 x86の場合、外部仕様は可変長命令だけどマイクロコードはRISCっぽい処理なので 奇数アラインされると効率が悪くなる(場合がある)から
1021 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 19:44:57.04 ID:/2QbeuLQ.net] 奇数アドレスに16ビットアクセスしたら通常はバスサイクル二回に分割される PCIはxxx1、xxx2、xxx3番地から32ビットバースト転送してもオーバーヘッドは1サイクルだけだけど 変態だわ
1022 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 00:30:13.60 ID:qkqMClc4.net] 当方の環境はWindows7 SP1 x64でml64.exeを用いて これからアセンブラを勉強したいと思っています。 とりあえずまずは手始めにcの標準関数、 例えばprintfとかputsとかを呼び出して「hello,world」でも... と思っているんですが、 一体どのファイルを「includelib」して「call printf」等すれば良いのか わかりません。 今のところ「user32.lib」とか「kernel32.lib」とか「msvcrt.lib」とか 読み込んでいますが、「unresolved external symbol printf....」と エラーがでてしまいうまくいきません。 ml64の環境でcの標準関数を呼び出すには、 一体どのlibファイルをincludeすれば良いのでしょうか?
1023 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 02:32:35.73 ID:8XBnDqPS.net] libはリンクした?
1024 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 14:59:16.50 ID:6bOxPLAt.net] msvcrt.libで行けると思うけど環境変数lib設定してある?
1025 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 15:09:29.21 ID:m/ZfxtWH.net] Winでのアセンブラはあまりオススメしないなぁ。。。 結局Cの関数なWin32API呼び出しまくるんでCでええやん。。。ってなる。 アセンブラならDOSかPICとかのマイコンのがアセンブラ使ってる感があって面白いよ。
1026 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 17:04:04.99 ID:lsSSpfTO.net] 999
1027 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 17:36:16.85 ID:1WMn3pSz.net] アセンブラ初心者スレッド 2 echo.2ch.net/test/read.cgi/tech/1492072555/
1028 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています