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


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

アセンブラ初心者スレッド



1 名前:デフォルトの名無しさん [2011/08/28(日) 12:36:52.66 .net]
初心者OK!質問大歓迎!のアセンブラのスレッドです。
基本情報の勉強中の人、PICやH8を勉強中の学生などなど…



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 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






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

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

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