アセンブラ… (*´д`*)アハァ…
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG【過去ログ】
アセンブラ… (゚д゚)ウマー
http://pc2.2ch.net/test/read.cgi/tech/1060928704/
アセンブラヽ(`Д´)ノモルァ
http://pc2.2ch.net/tech/kako/1040/10402/1040297337.html
アセンブラヽ(`Д´)ノモルァ
http://pc3.2ch.net/tech/kako/1016/10169/1016991911.html
アセンブラ… (・∀・)イイ!
http://pc.2ch.net/tech/kako/1002/10022/1002267809.html
0002名無し@沢村
NGNG恐ろしすぎるぞ!!おまーら↓
http://hp.vector.co.jp/authors/VA015412/
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGアセンブラ… (゚д゚)ウマー
http://pc2.2ch.net/test/read.cgi/tech/1060928704/
アセンブラヽ(`Д´)ノモルァ
http://pc2.2ch.net/tech/kako/1040/10402/1040297337.html
アセンブラヽ(`Д´)ノモルァ
http://pc3.2ch.net/tech/kako/1016/10169/1016991911.html
アセンブラ… (・∀・)イイ!
http://pc.2ch.net/tech/kako/1002/10022/1002267809.html
0005デフォルトの名無しさん
NGNGComputer Organization and Design Second Edition : The Hardware/Software Interface
http://www.amazon.com/exec/obidos/tg/detail/-/1558604286/
Computer Architecture: A Quantitative Approach
http://www.amazon.com/exec/obidos/tg/detail/-/1558605967/
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGVAX Assembly Language なんて本が廃刊にならずに未だにあるのかよ。
ちょっとびびったぜ(藁
http://www.amazon.com/exec/obidos/tg/browse/-/3954/
0008デフォルトの名無しさん
NGNG書いてある本かウェブサイトを知っている方居ましたら、教えていただけないでしょうか。
0009デフォルトの名無しさん
NGNG昔のスレに情報があったように思う。
たしか
http://www.ddj.com/
の過去の記事で、サンプルコードが今でもダウンロード可能なはず。
・参考
http://www.gijyutu.com/g-soft/automa/nt/automa_nt.html
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNGhttp://black.sakura.ne.jp/~third/
http://sufami.hp.infoseek.co.jp/
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG↑のlarge fs:0がわからないのでどなたか教えてください。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG16:16と区別するための
0019デフォルトの名無しさん
NGNG「 アセンブラ… (;´Д`) ハァハァ 」
でお願いします
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG気がする。
0024デフォルトの名無しさん
NGNGマニュアルほとんど整備されてないし('A`)
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNGツマルさ!
0027デフォルトの名無しさん
NGNG0028名無し@沢村
NGNGhttp://hp.vector.co.jp/authors/VA015412/
0029デフォルトの名無しさん
NGNGいやもう何も言うことはないよ
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGえ!?もう、意識しなくていいの?
0032デフォルトの名無しさん
NGNGいいなぁ!PentiumXIIユーザーだね?
0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNGアッセンブララーだろ。
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG8086マクロアセンブラ入門という本を
使ってるんですが
NOWSMART ASSEMBLER
LASM Ver2.32体験版でやっても
.code;
mov ax,bx;
mov al,bh;
mov ah,bl;
mov cl,x;
mov ax,w;
mov ax,3;
mov x,5;
.date;
xdb?;
wdw?;
がコンパイルできないのですが
どうしてでしょうか!?
0038デフォルトの名無しさん
NGNGあとコンパイルじゃなくてアセンブルと普通はいう。
質問するときはエラーメッセージもきちんと書こう。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNGナイス
0042デフォルトの名無しさん
NGNGIntelの64bit拡張がAMD64完全互換で
レジスタ名やページテーブルの構成まで一緒となり、
将来もほぼ安泰。
masm系64bitアセンブラの登場が待たれるわけだが。
http://developer.intel.com/technology/64bitextensions/
http://developer.intel.com/technology/64bitextensions/faq.htm
0043鳥取砂丘&rlo;コッ゙タコッ゙タ&lro; ◆Dream/3P/.
NGNG0044デフォルトの名無しさん
NGNG少なくとも、NT系では使ってないですよね。
0045デフォルトの名無しさん
NGNGフラットモデルなら当然いらないよな
Win32は変態だからFSは使うけど
0046デフォルトの名無しさん
NGNG0047名無し@沢村
NGNGほんにおまいら〜♪
http://hp.vector.co.jp/authors/VA015412/
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNGおしえてください
fsにはセレクターとか入ってないんですか?
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGあと、PCR(GDT7番)のセレクタにもなっています。
でもFSに値を入れて16:32アドレスを使う理由が分からん。
0053デフォルトの名無しさん
NGNG文句言ってる香具師はただのヘタレ
0054デフォルトの名無しさん
NGNG仕組み上x86はディスクリプタとセレクタに値を埋めなければ
CPUは動かないので、仕方がなく使っている(と思う)
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGあんた周りからとんがり過ぎてるよ・・・角度とか
0057デフォルトの名無しさん
NGNGラベルと外部変数の関係がわからず悩んでいます。
例えば、
extern short data[];
void func(void)
{
register int t1, t2;
asm("data:;add %0, %1, %1":"=&r"(t1):"r"(t2));
}
のようなソースであったとして、参照指定された外部変数dataは
asm文中のdataラベルと関係があるようなのですが、文法的な相互関係が
よくわかりません。data変数はexternを外して実際にそこに定義すると
エラーとなります(変数の再定義エラー)。つまりasm文中のdataラベルが
変数(?)のように扱われているようなのです。gccのマニュアル等色々
調べたのですが結局わかりませんでした。
どなたかお分かりでしたら、ご教授ください。
0058デフォルトの名無しさん
NGNGラベルと外部変数の関係がわからず悩んでいます。
例えば、
extern short data[];
void func(void)
{
register int t1, t2;
asm("data:;add %0, %1, %1":"=&r"(t1):"r"(t2));
}
のようなソースであったとして、参照指定された外部変数dataは
asm文中のdataラベルと関係があるようなのですが、文法的な相互関係が
よくわかりません。data変数はexternを外して実際にそこに定義すると
エラーとなります(変数の再定義エラー)。つまりasm文中のdataラベルが
変数(?)のように扱われているようなのです。gccのマニュアル等色々
調べたのですが結局わかりませんでした。
どなたかお分かりでしたら、ご教授ください。
0059デフォルトの名無しさん
NGNGラベルと外部変数の関係がわからず悩んでいます。
例えば、
extern short data[];
void func(void)
{
register int t1, t2;
asm("data:;add %0, %1, %1":"=&r"(t1):"r"(t2));
}
のようなソースであったとして、参照指定された外部変数dataは
asm文中のdataラベルと関係があるようなのですが、文法的な相互関係が
よくわかりません。data変数はexternを外して実際にそこに定義すると
エラーとなります(変数の再定義エラー)。つまりasm文中のdataラベルが
変数(?)のように扱われているようなのです。gccのマニュアル等色々
調べたのですが結局わかりませんでした。
どなたかお分かりでしたら、ご教授ください。
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGリンカが云々とかは別として。
番地に名前を付けるという意味ではラベルも同じで、メモリー上の
コード列の内の特定の場所に名前を付けることだから。
インラインアセンブラを用いて定義されたdata:に続く機械語列
をshortの配列と見なしてそこを参照してるわけでしょう。
externを外したらそりゃあエラーが出るでしょう。
dataという名前のシンボルが2つあるんだから。
0062デフォルトの名無しさん
NGNGラベルと外部変数の関係がわからず悩んでいます。
例えば、
extern short data[];
void func(void)
{
register int t1, t2;
asm("data:;add %0, %1, %1":"=&r"(t1):"r"(t2));
}
のようなソースであったとして、参照指定された外部変数dataは
asm文中のdataラベルと関係があるようなのですが、文法的な相互関係が
よくわかりません。data変数はexternを外して実際にそこに定義すると
エラーとなります(変数の再定義エラー)。つまりasm文中のdataラベルが
変数(?)のように扱われているようなのです。gccのマニュアル等色々
調べたのですが結局わかりませんでした。
どなたかお分かりでしたら、ご教授ください。
0063デフォルトの名無しさん
NGNGラベルと外部変数の関係がわからず悩んでいます。
例えば、
extern short data[];
void func(void)
{
register int t1, t2;
asm("data:;add %0, %1, %1":"=&r"(t1):"r"(t2));
}
のようなソースであったとして、参照指定された外部変数dataは
asm文中のdataラベルと関係があるようなのですが、文法的な相互関係が
よくわかりません。data変数はexternを外して実際にそこに定義すると
エラーとなります(変数の再定義エラー)。つまりasm文中のdataラベルが
変数(?)のように扱われているようなのです。gccのマニュアル等色々
調べたのですが結局わかりませんでした。
どなたかお分かりでしたら、ご教授ください。
0064デフォルトの名無しさん
NGNGラベルと外部変数の関係がわからず悩んでいます。
例えば、
extern short data[];
void func(void)
{
register int t1, t2;
asm("data:;add %0, %1, %1":"=&r"(t1):"r"(t2));
}
のようなソースであったとして、参照指定された外部変数dataは
asm文中のdataラベルと関係があるようなのですが、文法的な相互関係が
よくわかりません。data変数はexternを外して実際にそこに定義すると
エラーとなります(変数の再定義エラー)。つまりasm文中のdataラベルが
変数(?)のように扱われているようなのです。gccのマニュアル等色々
調べたのですが結局わかりませんでした。
どなたかお分かりでしたら、ご教授ください。
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNGakusitunanoha unneiga handan suru.
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNG全くの素人ですが、とりあえず、gcc -S で勉強しようかと思います。PowerPC
アセンブラの資料は少ないので、一般的なアセンブラのテキストがあると嬉しいのですが、
良い資料はないでしょうか。
0070デフォルトの名無しさん
NGNGアセンブラはCPU固有の命令の集合体。なので一般的なテキストってのは
多分ないと思う。
0071デフォルトの名無しさん
NGNG分かりません。x86 なマシンは持っていません。SPARC ならあるのですが。
0072デフォルトの名無しさん
NGNGどのCPUも大体同じだと思うんだけど
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNGアセンブラ自体初めてならCASL IIは?
単純化されてる分だけ簡単だし、エミュレータも出回ってるし、
テキストも多い。
ただ、CASL自体は全く実用にはならないので少し慣れてきたあたりで
なんとかPowerPCの資料を探して頑張るしかない。
0075デフォルトの名無しさん
NGNG実は CASL II は少し取り組んだ事があります。実際の CPU で動かないので長続き
しませんでした。満足に取り組んだ訳ではないので、もう一度最初から勉強して
みようと思います。PowerPC の資料はある事はあるのですが、私にはまだ難しい
感じでした。読めるようになるまで CASL II で頑張ってみます。
0076デフォルトの名無しさん
NGNGレジスタ、アドレッシング、ビット演算、フラグ、分岐なんかの知識があれば
基本的な命令は難しくないと思うよ。大抵のCPUなら。
0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG「PowerPCアセンブラに関するスレ」にありました。
ttp://www.mot.co.jp/SPS/html/lit/pdf/MPCFPE32BJ_R0.pdf
同じスレのこれは読みました。
ttp://www-6.ibm.com/jp/developerworks/linux/021004/j_l-ppc.html
>>77
難関はそこかなと思っています。それとどのレジスタを何に使えば良いのか、
アドレッシングも怪しいです(全然ダメですね)。
0079デフォルトの名無しさん
NGNG・スタックフレーム(ローカル変数)へのアクセスに使用しているレジスタ
・レジスタ変数として使用するために予約しているレジスタ
は把握しておいてからの方が読みやすいかも。
あと、最適化の度合いによっては
全然別物に見えるコードになっちゃったりするから。
0080デフォルトの名無しさん
NGNGRISCに関する基本的なことは全部載ってる。
0081デフォルトの名無しさん
NGNG初心者にもいい勉強になるんでないでしょうか。
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNGコンパイラにアセンブラソースを吐かせりゃいいじゃん。
0084デフォルトの名無しさん
NGNG82はきっと機械語と照らし合わせてるんだよ。
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNGドキュメントを見つけました。スタックフレームやバイナリファイルフォーマット
も書いてあるので、これを参考にします。
http://developer.apple.com/documentation/DeveloperTools/Conceptual/MachORuntime/index.html
>>80
spim をダウンロードしてドキュメントを色々読んでみました。PowerPC は
mips にかなり似てる感じですね。SPARC も似ているのかなぁ。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNG以下のように
const char hello[] = { 'h','e','l','l','o' };
文字列を確保したとき、const配列なので、
読み取り専用セクションに配置されそうだ
と思いました。
読み取り専用セクションの名前は
.rdata でしょうか?
それから、このセクションは、
同じプログラムを複数起動したときに、
共有される(メモリ使用量が減る)のでしょうか?
0093デフォルトの名無しさん
NGNGじゃないの?
>共有される(メモリ使用量が減る)のでしょうか?
されないかと
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG0096鳥取恥丘 ◆Dream/3P/.
NGNG/〜ヽ
(。・-・) オレオレ
゚し-J゚
0097デフォルトの名無しさん
NGNGさっきゅんだけどなんか質問ある?
http://pc.2ch.net/test/read.cgi/os/1074144781/
なんかrubyとかの青木さんところでチョト紹介されてたぞ。
0098デフォルトの名無しさん
NGNGdumpbin.exeで確認できる
0099デフォルトの名無しさん
NGNGたとえば、256個づつのDWORD値を加算する場合、16バイトアライメントされていないとすると、
mov esi, srcadr
mov edi, destadr
mov ecx, 16
lp:
movdqu xmm0, [esi]
movdqu xmm4, [edi]
movdqu xmm1, [esi+16]
movdqu xmm5, [edi+16]
movdqu xmm2, [esi+32]
movdqu xmm6, [edi+32]
movdqu xmm3, [esi+48]
movdqu xmm7, [edi+48]
paddd xmm0, xmm4
paddd xmm1, xmm5
paddd xmm2, xmm6
paddd xmm3, xmm7
movdqu [edi], xmm0
movdqu [edi+16], xmm1
movdqu [edi+32], xmm2
movdqu [edi+48], xmm3
sub ecx, 1
jnz lp
とすると、FP_MOVポートと、MMX_ALUが別ポートなので、ループによってアウトオブオーダーで
処理が折り込まれて、レイテンシがある程度隠蔽されるので、高速化が出来るのですが、
movdqu のペナルティ遅延がひどくて、アライメントの合っている処理(MOVDQA)と比べて、
30%くらい遅くなってしまう場合があります。
(更に言うと、128ビットオペランドでアライメントが合っていれば、レジスタに入れなくても直接演算できる)
そこに、lddquをそのままmovdquと置換(ただし、ロード側のみ、ストアは代えられない)すると、15%位、スループットが改善するようです。
まあ、アライメントをうまく合わせられればそっちのほうが良いと思います。お手軽高速化用ですね。
0101デフォルトの名無しさん
NGNG0102鳥取恥丘 ◆Dream/3P/.
NGNG/〜ヽ
(。・-・) 10進数の計算とか
゚し-J゚
0103デフォルトの名無しさん
NGNGそれはそうなんですが、1バイトで10進数の一桁を
表現することの意味が分りません。具体的な使用例
見たいなのがあれば教えて下さい。
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNG電卓
0106デフォルトの名無しさん
NGNGアセンブリ言語でBCDをサポートすると実行を高速化できます。
COBOLは、銀行などの事務計算によく使われますが、
そういうアプリケーションでは小数を扱ったときの桁落ちが許されません。
そんなとき10進数で演算できると便利なのです。
1%の金利(=0.01)というのを2進数で表してみるとわかります。
0107デフォルトの名無しさん
NGNG分り易い解説ありがとうございます。
0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNG最適化命令」のレイテンシ一覧で
ADDPD レイテンシ7、スループット2、実行ユニット MMX_SHFT,FP_MISC
DIVPD レイテンシ4、スループット2、実行ユニット MMX_SHFT
ってありますが、これ間違いですよね?
0110デフォルトの名無しさん
NGNG最適化命令」のレイテンシ一覧で
ADDPD レイテンシ7、スループット2、実行ユニット MMX_SHFT,FP_MISC
DIVPD レイテンシ4、スループット2、実行ユニット MMX_SHFT
ってありますが、これ間違いですよね?
0111109
NGNG0112デフォルトの名無しさん
NGNGなにしろ、4ビットマイコンのくせに16桁のBCDの加減算を1命令で
できたりする(w
某社の16ビットポケコンは86じゃ遅いから、専用のBCD演算コプロを
積んでいたりする。さすが電卓屋。
0113デフォルトの名無しさん
NGNG"Intel Pentium 4 and Intel Xeon Processor Optimization"
http://www.math.grin.edu/~walker/courses/211.fa01/pentium-4-optimization.pdf
のTable C-2によると、
ADDPD xmm, xmm 4 2 FP_ADD
...
DIVPD xmm, xmm 62 62 FP_DIV
になっている。
0114デフォルトの名無しさん
NGNG日本語と英語のマニュアルでは、CVTxxx命令、割り算命令が違ってるね。
間違っているのは日本語のマニュアルの方みたいだけど。
0115デフォルトの名無しさん
NGNG日本語マニュアルは、急いで作ってるのかタイプミス多いし、
コピペして作ってあるところが多くて、
ひとつ間違ったら連続で間違っている場合が結構ある。
(だから逆に間違いが分かりやすいという話も有る・・・)
それと、Xeon込みで無い時の
「Intel Pentium4プロセッサ最適化リファレンスマニュアル」
だと、ADDPS,DIVPSのレイテンシ、スループットには、
正しい値が記述してあるので、版を更新する際にエンバグしたと思われ。
それでも、AMDと違ってちゃんと日本語マニュアル作ってるだけ全然良い。
ただ、
http://www.intel.com/technology/itj/q12001/pdf/art_2.pdf
みたいな周辺資料の日本語版が無いのはなんでだろう…。
突っ込んだ最適化をするときは結構重要なのだけど。
0116鳥取恥丘 ◆Dream/3P/.
NGNG/〜ヽ
(。・-・) 日本語のPDFにHTの使い方書いてないよね・・・
゚し-J゚
0117デフォルトの名無しさん
NGNGそれ(art_2)の日本語Web版は以前あったよね。
今はなくなってしまったみたいだけど。(こんな事もあろうかと、俺はHDDに保存しておいた)
日本スタッフはもっとしっかりしろ!ですな。
0118デフォルトの名無しさん
NGNG相性がいいだろうと思ってたんだけど、
bcc5.5.1では-6オプションを付けても
comvを使ったコードを吐きません
他のコンパイラではどうなのでしょうか?
そもそも相性が悪い?
0119デフォルトの名無しさん
NGNGそもそも bcc5.5.1 は cmov 系を使ったコードを吐くの?
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNGreturn a ? 100 : 300;
}
をgcc -O2にかけたら、
foo:
pushl %ebp
movl %esp, %ebp
xorl %eax, %eax
cmpl $0, 8(%ebp)
sete %al
decl %eax
andl $-200, %eax
addl $300, %eax
leave
ret
こんなの吐きました。
0122デフォルトの名無しさん
NGNGうちのgccではこうなるけど。
foo:
pushl %ebp
movl $100, %eax
movl %esp, %ebp
movl 8(%ebp), %edx
popl %ebp
testl %edx, %edx
movl $300, %edx
cmove %edx, %eax
ret
多分 -march を指定する必要があるんじゃない。
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG禁止しなきゃ問答無用で確保したような気がする。
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNG分かりやすいっちゃぁ分かりやすいけど、
面倒いっちゃぁ面倒いな。
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNGdoes not interfere with debugging.
って書いてあるのはどうなの?
0130デフォルトの名無しさん
NGNGmov edx, 100
mov eax, 300
cmp ecx, 0
cmovne eax, edx
ret
IntelC++7.1
0131デフォルトの名無しさん
NGNG@VC++7.1
mov eax, DWORD PTR _a$[esp-4]
neg eax
sbb eax, eax
and eax, -200 ; ffffff38H
add eax, 300 ; 0000012cH
ret 0
P4最適化すると4行目が
and al, 56
になる。
パーシャルレジスタストールがないからか。
0132デフォルトの名無しさん
NGNG0133NASM初心者
NGNGNASMはすばらしいですね。
使っている皆さんよろしくご指導下さい
0134デフォルトの名無しさん
NGNGtest eax,eax
je L$1
mov eax,100
ret
L$1:
mov eax,300
ret
かつての最適化伝説も今やダメポ
0136デフォルトの名無しさん
NGNGレジスタ呼び出しなので a = eax ね。
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNGfoo:
cmpl $1, 4(%esp)
sbbl %eax, %eax
andl $200, %eax
addl $100, %eax
ret
.size foo, .-foo
.ident "GCC: (GNU) 3.4.0 20040112 (experimental)"
3.4だとこんなんなりました。
0139デフォルトの名無しさん
NGNG多いけど、だったら自分らで少しは開発に貢献すればいいのにな。
カーネルのつまらないチューニングなんかより、これの方がよっぽど
価値がありそうなもんなのに。
0140デフォルトの名無しさん
NGNGそんなこと行ったらLinuxの一般ユーザーは、全員
羊のように大人しくしなくてはならなくなる
0141デフォルトの名無しさん
NGNGかわいそうに
0142デフォルトの名無しさん
NGNG餅は餅屋。って事で、
コンパイラの事はコンパイラ屋さんに任せておくのが
一番確実なのですよ。
0143デフォルトの名無しさん
NGNGそういう「嫌なら使うな」式の思考停止すんなって
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNGcmpl $0, 4(%esp)
movl $300, %edx
movl $100, %eax
cmove %edx, %eax
ret
gcc-3.3.3 -Os -fomit-frame-pointer -march=pentium4
オプションやバージョンで結構変わるみたい。
0146デフォルトの名無しさん
NGNGgccが16ビットコードはいてくれればマイ日曜PG的には最高
なんだよなー
0147デフォルトの名無しさん
NGNGつーかOpenWatcomが期待外れだったつーか。
じつはデバッグモードだったとかいう展開きぼん。
0148デフォルトの名無しさん
NGNGどのこんぱいらー?
0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNG_foo:
cmp dword ptr 4[esp],1
sbb eax,eax
and eax,0c8H
add eax,64H
ret
・Digital Mars 16bit (dmc -ms -2 -o+all -c foo.c)
_foo:
push bp
mov bp,sp
cmp word ptr 4[bp],1
sbb ax,ax
and ax,0c8H
add ax,64H
pop bp
ret
・Open Watcom 32bit (wcc386 -6r -ox foo.c)
>>134
・Open Watcom 16bit (wcc -2 -ox foo.c)
foo_:
test ax,ax
je L$1
mov ax,64H
ret
L$1:
mov ax,12cH
ret
0152鳥取砂丘 ◆Dream/3P/.
NGNG折れの脳内トランスレータじゃとてもそんなコード吐けない orz
0153デフォルトの名無しさん
NGNGに書いたらdmcのコードにする。
ここの常駐人もだいたいそうだと思うんだが
0154デフォルトの名無しさん
NGNG関数呼び出しを定義できるくらいしか、面白みないな
コードジェネレータのソース読んでみたけど全然
わからんし・・・
0155鳥取砂丘 ◆Dream/3P/.
NGNG0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG150のとおり、依存関係バリバリのコードは
賢くないよ。レジスタに使用に制限があるなら別だが。
0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGなぜ使ってよいのかと。
0167鳥取砂丘 ◆Dream/3P/.
NGNG0168デフォルトの名無しさん
NGNGじゃ使ってもいいよな。>>166も俺が悪かった
でも俺はcmovが使いたくないし、たぶんdmcのコードを
使うと思う
0169デフォルトの名無しさん
NGNGクロックを計測してみました。(引数ロードとret部分は削除)
lp1:
mov edx, 100
mov eax, 300
cmp ebx, 0
cmovne eax, edx
sub cx, 1
jne lp1
lp2:
neg eax
sbb eax, eax
and eax, -200 ; ffffff38H
add eax, 300 ; 0000012cH
sub cx, 1
jne lp2
Pentium4でlp1は真でも偽でも大体20万クロック、lp2が27万クロックでした。
0170デフォルトの名無しさん
NGNGL1が.codeにくる感じで
.code
mov eax, [esp+4]
cmp eax, 1
sbb eax, eax
mov eax, [L1 + 4 + eax*4]
ret
align 4
L1 dd 300, 100
0171デフォルトの名無しさん
NGNG_foo proc near
; int foo(int a){
@1:
push ebp
mov ebp,esp
; return a ? 100 : 300;
cmp dword ptr [ebp+8],0
je short @2
mov eax,100
jmp short @4
@2:
mov eax,300
; }
@5:
@4:
pop ebp
ret
_foo endp
OpenWatcomもBCCには何とか勝った模様。
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGlp1は入力ebxと出力eaxが別々で、入力ebxはずっと固定で出力eaxに依存していないのに、
なぜlp2は入力と出力が同じeaxで、入力が出力に依存しているのか。
なぜループカウンタcxで10万回回せるのか疑問におもた。
0174デフォルトの名無しさん
NGNGeaxだけになっちゃうよ。
cxはおかしいな。
0175デフォルトの名無しさん
NGNGアスロン 1GHz(サンダーバード)で lp1が30万、lp2が40万だった
;MASM32を使用
;ml /c /coff test.asm
;link /subsystem:console test.obj
.686
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
.data
format db "%010u",0dh,0ah,0
.code
0176デフォルトの名無しさん
NGNGstart proc uses ebx edi
LOCAL buf[16]:BYTE,readsize,stdout
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov stdout,eax
rdtsc
mov edi,eax
mov ecx,100000
lp1:
mov edx, 100
mov eax, 300
cmp ebx, 0
cmovne eax, edx
sub ecx, 1
jne lp1
rdtsc
sub eax,edi
invoke wsprintf,ADDR buf,ADDR format,eax
invoke WriteConsole,stdout,ADDR buf,12,addr readsize,NULL
0177デフォルトの名無しさん
NGNGrdtsc
mov edi,eax
mov ecx,100000
lp2:
neg eax
sbb eax, eax
and eax, -200 ; ffffff38H
add eax, 300 ; 0000012cH
sub ecx, 1
jne lp2
rdtsc
sub eax,edi
invoke wsprintf,ADDR buf,ADDR format,eax
invoke WriteConsole,stdout,ADDR buf,12,addr readsize,NULL
invoke ExitProcess,0
start endp
end start
0179デフォルトの名無しさん
NGNG終了
0180デフォルトの名無しさん
NGNGPentiumにあた?
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNG初心者でもわかる本教えて下さい
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG頑なに元祖386由来の命令に拘る理由って
なんなんでしょ>コンパイラ作ってる人
0185デフォルトの名無しさん
NGNGわざわざ本を買う必要はありません。
初心者が勉強する程度なら、ネット上の解説や資料で十分。
0186デフォルトの名無しさん
NGNGここにいる素人には永遠にわからんよプゲ
0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNG>>187=>>182だよね?
逆アセンブラということは、恐らくゲームの解析とかだろうから、
とりあえず、下のサイトへ。
色々な資料やツールへのリンクもあるし。
http://gamereverserz.cjb.net/
0190118
NGNG(cmovを使う使わないとか依存がどうこうとか)
のですが、cmov系の勝ちで終了ということだそうで
みなさんありがとうございます
>>119
bcc5.5.1 が cmov 系を使ったコードを吐くのは
私はみたことないです
cmovに限らずmmxやxmmレジスタを使うコードも
みたことがないです
他のコンパイラはきちんと使うんでしょうか…
>>171
bcc32のコードの例示わざわざありがとうございます
わたしがするべき苦労でした
ところで、ゼロがどうかをチェックするところで
test系 gcc, OpenWatcom
cmp系 gcc, IntelC++, DigitalMars32
とわかれているようですが、ここって何か
意味がありますか?たんなるコンパイラのクセ?
0191デフォルトの名無しさん
NGNG間違いですね。本当のことは行間にかかれているのに。
0192デフォルトの名無しさん
NGNG教えてください。Pen3,4と指定してコンパイルする分には
cmovを使うことになんの問題もないように思いますが。
0193デフォルトの名無しさん
NGNGcmpもtestもそれぞれ意味があって使いわけてる
ように見えるけど
0194デフォルトの名無しさん
NGNG0195190
NGNGcmp ecx, 0
とあるけど
test ecx,ecx
ではないのは何故なんでしょうか?
どんな使い分けの意味があるのかなと思いました
>>176 で
sub ecx, 1
とあって
dec ecx
にしないのはレジスタの影響が少ないので
subの方が推奨されるそうですが、
cmpとtestもそんな意味があるのでしょうか?
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNG>>195
ん。見落としてた。正直理由はわかりません
>>cmpl $0, 4(%esp)
こういうのはtestにできないって事ぐらいの意味
0198デフォルトの名無しさん
NGNGわざわざ上げんな。晒してるつもりか?
0199デフォルトの名無しさん
NGNGba-ka
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNG●やさしい煽り学
文字で何と書いてあるかではなく書いた人間が一体何を狙って
そこにその文章を書いたのかを考える。
文字自体はほとんど読む必要がない。
なぜなら彼の本当の狙いは文字としては書かれていない。
狙いが分かったら後はそれを失敗させる。
? 「狙い」の典型的なパターン
場の雰囲気を悪化させたい。
誰かのやる気を無くさせたい。
誰かと誰かの関係を悪化させたい。
煽りに反応させることで相手の人望を失わせたい。
それらを為すことで自己顕示したい。
煽る人間はその行為によって何かが変わって欲しいと考えている。
従って先方からしてみれば反論だろうと罵倒だろうと
とにかく誰かから何らかの反応を引き出せたら成功であるということに注意しなくてはならない。
最も多くのケースを効果的に解決できる手段は、安易ではあるが、「全員一致での無視」である。
もし不幸にも煽りに対して真面目に反応してしまう人間が身内にいるなら
何とかしてその人間を黙らせなくてはならない。
そういった中途半端な味方は煽り本人より厄介である。
また、煽りという手法をよく知る人間にとっては、
煽りに対して真面目に反応している人間というのは極めて無様に写ることにも注意すべきである。
もしあなたが既に人望を持つような立場の人間であるなら、
全ての煽りに対して常に冷酷に対処しなくてはならない。
0202デフォルトの名無しさん
NGNGヘタレ
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG他のスレも変なの増殖してるっぽいし。
0205173
NGNGlp1が計測しているのは三項演算子のスループット。
lp2ガ計測しているのは三項演算子のレイテンシ。
lp2と同じ意味(レイテンシ)でlp1を計測するのであれば、
次のように三項演算子の出力が次の三項演算子の入力になるようにしなければならない。
lp1:
cmp eax, 0
mov edx, 100
mov eax, 300
cmovne eax, edx
sub ecx, 1
jne lp1
0206153
NGNGマジで誤ったつもりなんで、まったり進攻にもどって下さいよ
まぁそれは別として、コンパイラの吐くコードの品評は
なかなか面白いな
0207153
NGNG0208デフォルトの名無しさん
NGNG上にあったICCの出力を参考にしてるんじゃない?
mov ecx, DWORD PTR [esp+4]
mov edx, 100
mov eax, 300
cmp ecx, 0
cmovne eax, edx
入力がecx(あれ?)で出力がeaxになってるよね。
0209デフォルトの名無しさん
NGNGPentium4の場合、cmpはポート0とポート1どちらでも発行できるが、
testはポート0でしか発行できないから。
0210195
NGNGむ、むずかしい…
ポート0とポート1のどちらでも、とか
ポート0のみ、とかって、つまり、
計算する部品はいくつかあるけど
それらの部品には対称性がないので
どの部品でも計算できるcmpの方が
特定の部品でしか計算できないtestよりも
都合がいいということでしょうか?
それから、もしよろしければ、ポートとかについて
参考サイトとか参考pdfとか教えてください
0211デフォルトの名無しさん
NGNGrdtsc
mov dword ptr t1, eax
mov dword ptr t1 + 4, edx
cmp eax, 0
mov edx, 100
mov eax, 300
cmovne eax, edx
rdtsc
mov dword ptr t2, eax
mov dword ptr t2 + 4, edx
b:
rdtsc
mov dword ptr t3, eax
mov dword ptr t4 + 4, edx
neg eax
sbb eax, eax
and eax, -200
add eax, 300
rdtsc
mov dword ptr t3, eax
mov dword ptr t4 + 4, edx
===================
a=88clock、b=92clock。a,bの順番を逆にしても同じ。
Xeon HT-OFF
0212211
NGNG×t3 + 4
0213デフォルトの名無しさん
NGNG速いと思うんだけど
ついでに言うとwinなりlinuxなりではかっても、参考値
ぐらいにしか思えない
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNGhttp://developer.intel.com/design/pentium4/manuals/248966.htm
これの1-18ページにPentium4のポートの説明図が書いてある。
cmpはADD/SUBに属する命令。testはLogicに属する命令。
このマニュアルを見ててマニュアルの間違いに気が付いた。
1-17ページにはポート1のALUでもlogic or branchが実行できるみたいに書いてあるけど、
これは間違い。
0217デフォルトの名無しさん
NGNGwordの整数演算のみで組んでみたのです。バタフライ演算とかいうやつですね。
100万回ループさせてタイムを計ると、mmxで真正直にDCTを計算させたものより
4割近く遅いし、コードもデカイ。いいことなしです。
さて問題です。どうすればPen4でDCTが速くなるでしょうか?
1. コードが増える整数演算は止め、固定小数点あるいは浮動小数点演算を行う。
2. 同様にコードが増えるバタフライ演算をやめ、真面目にDCTを実行する。
3. バタフライ演算かつ整数演算でも早くなる。精進しろ。
3案のうちどれが適切でしょうか。ただし、根拠のない3はお断りです。ソースコードがあれば参考にしたいですね。
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG4.ここにある「ストリーミング SIMD 拡張命令2 (SSE2) を使用した逆離散コサイン変換」を
参考にしてみる。
http://www.intel.com/jp/developer/download/index.htm
0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNG分岐予測が当たる場合は、cmovよりは速いから全ての代入のための分岐を
cmovで置き換えるのはいただけない
0222デフォルトの名無しさん
NGNGいまの話題になにも分岐予測に関する前提条件がないわ
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNG/ / }
_/ノ.. /、
/ < }
ry、 {k_ _/`;, ノノ パンパン
/ / } ;' `i、
_/ノ../、 _/ 入/ / `ヽ, ノノ
/ r;ァ }''i" ̄.  ̄r'_ノ"'ヽ.i ) ―☆
{k_ _/,,.' ;. :. l、 ノ
\ ` 、 ,i. .:, :, ' / / \
,;ゝr;,;_二∠r;,_ェ=-ー'" r,_,/ ☆
【ラッキーレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です
0225210
NGNGFigure 1-4
Execution Units and Ports int the Out-Of-Order Core
の図をみました
おっしゃっていたのはここのことだったんですね
ところでこの図では、Por1のFP_Executeのところに
MMXの記述がありますが、ここには
SSE/SSE2/SSE3も含まれているのでしょうか?
1-17に
port 1 can dispatch either one floating-point
execution (all floating-point operations except
moves, all SIMD operations) μop
とあります
0226デフォルトの名無しさん
NGNGSSEで、単に組んでも、MMXよりスループット、レイテンシ共に遅いので、高速化は出来ない。
>>216さんが書いている資料などを見て、アウトオブオーダーで効率よく
命令ユニットが平行動作するようなコードを書いて初めて、SSEなりの利点が出る。
また、DCT演算は、整数より、実数のほうが早く実行できる可能性が高い。
(有効制度が結構必要だからね)ので、実数演算がお勧め。
ちなみに、アウトオブオーダーを使った高速化を突き詰めてしまうと、
AMD64ではポートの構造が違うので、殆どの場合相当に遅くなるので注意。
0227デフォルトの名無しさん
NGNGnop4つでもかまわないんですが。
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG66 66 66 90 (NOPの前に66hプリフィックスを3つ重ねる)
これってどんなx86プロセッサでも問題なく動くの?
0230デフォルトの名無しさん
NGNGnop
nop
nop
より
lea eax,[eax+0]
とかが使われてるのは何でだろう?逆アセがすっきり
するので、見やすいけど。
>>229
8086、80286不可
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGそりゃ、デコーダの消費も実行ユニットの消費も少なくて済むからでしょう
0233デフォルトの名無しさん
NGNGこっちのP.85にはNOPの前に複数の66hプリフィックスを重ねろとか書いてあるのに、
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24592.pdf
こっちのP.86には同一グループのプリフィックスを複数指定した場合は、不定であると書いてある。
Pentiumのマニュアルにも同じ事が書いてあった。
0234デフォルトの名無しさん
NGNGプリフィックスについてはよくわからないので、
lea使ってみます。
0235鳥取砂丘 ◆Dream/3P/.
NGNG0236デフォルトの名無しさん
NGNGもしそうなら、パフォーマンスが落ちたりしないのかな
0237鳥取砂丘 ◆Dream/3P/.
NGNG0238名無し@沢村
NGNGDCT演算ならCASL�Uで業務用アプリを組んだときに、使ったことがあるよ。
0239236
NGNGここの「SP2でのメモリ保護」をみるとSP2で搭載される"実行保護"とやらはNXビットを使ったもののようです。
それでAMDのAthlon64の資料を見るとレガシーモードでは、NXビットはPAEモードのPage Table Entry(PTE)にしか無いんですよね。
(非PAEの4kページPTEには空きビットがないため?)
なのでPAEモードがデフォルトになるのかなと思ったのですが。
0240鳥取恥丘 ◆Dream/3P/.
NGNG0241デフォルトの名無しさん
NGNGレガシーモードのページング方式はK8からいくつか追加されたけど、
従来型の4kニ階層のやり方ではNXビットなど置くスペースはPTEにはないかと。
XPSP2での拡張は新しいページング方式と一緒に使わなくてはならない。
物理メモリ搭載量が例え4Gよりはるかに少なかったとしても。
0242デフォルトの名無しさん
NGNG置く置かないの問題ではないよね。
0243デフォルトの名無しさん
NGNGいやだからCPUのプログラムインタフェイスの設計の問題として
0244AMD命
NGNGK8でのみPAEをイネーブルにしてK8のパフォーマンスを落とすつもりだ。
0245デフォルトの名無しさん
NGNGどれぐらいパフォーマンス落ちるのかな。
自作板だと元麻布って人がPAEでパフォーマンスが落ちる
なんて書いてるから、そう思ってるひとも多いだろうけど。
メモリ空間が広大になったからといって、それらをランダムに
アクセスするわけじゃなくて、ある局所的な領域をなんども
参照するだけだろうからそんなに負担にもならないような。
まあ、こればっかりはカーネル弄ってるひとしか分らないか。
0246デフォルトの名無しさん
NGNGIA-32eの資料では、ページエントリの63bit目をReservedにしてあるよ。
多分将来NXビットが入ると思われ。
0247デフォルトの名無しさん
NGNGではディセーブルになるのかな。
0248デフォルトの名無しさん
NGNGWinXP sp2でいうAMD64のPAEは新しい64bit長のエントリを持つもの。
これまでのPAEとは違う。
0249デフォルトの名無しさん
NGNG上位ビットは大部分が使われていないけど
0250デフォルトの名無しさん
NGNG自作板では元麻布の記事は信用されていませんが。
【淫厨】妄想ライター元麻布春男を語るスレ【信者】
http://pc3.2ch.net/test/read.cgi/jisaku/1077161594/
0251デフォルトの名無しさん
NGNGあまり変わってないと思うが。
NXビットとの追加と物理アドレスが36bitから51bitになっただけだよね。
あとPAEじゃないけどPSE-36がPSE-40(?)になってる。
>>245
IA-32インテルデベロッパーズ・マニュアル下巻の3-29ページによるとPAEの
ページ・ディレクトリ・ポインタ・テーブル・エントリ(PDPE)はキャッシュされないみたい。
ひょっとしたらPDPE用のTLBも無いのかもしれない。
だとすると、かなり遅くなるような気がする。
0252デフォルトの名無しさん
NGNGもともとTLBって、最下層のエントリしか保持してないよね。
0253デフォルトの名無しさん
NGNG>プロセッサは、直前に使用されたページ・ディレクトリ・エントリとページ・テーブル・エン
>トリをトランスレーション・ルックアサイド・バッファ(TLB) というオンチップのキャッシュ
>に記憶する
って>>245の資料に書いてあるけどー
0254デフォルトの名無しさん
NGNGさっきのやつの3-33ペ−ジに
「プロセッサは、直前に使用されたページ・ディレクトリ・エントリとページ・テーブル・エン
トリをトランスレーション・ルックアサイド・バッファ(TLB) というオンチップのキャッシュ
に記憶する」
って書いてあるんだけど。
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG0257251&254
NGNG0258デフォルトの名無しさん
NGNGmov al, byte ptr[ecx]
と、
movsx eax, byte ptr[ecx]
ってどっちが速いんでしょうか
サイズは前者が4、後者が3ですけど
0259デフォルトの名無しさん
NGNGxor+movの方が速かったはず。
検証してくれる人よろしく。
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNGmovzxの間違いです…
え、
あーいや、なんか認識間違いっぽいです
符号拡張して欲しいし。
つーことはxorに変換するっての間違ってるわ、これ(w
movsxしかないじゃん
すんません終了〜
0262デフォルトの名無しさん
NGNGしかし禿げしく気になるので試してしまった。
Pen4 2.8G、XP ProSP1、BCC5.6.4
ループのアンロールは16回
movzx = 9619
xor = 9564
movzx = 9297
xor = 9615
movzx = 9680
xor = 9333
Pen4ではあまり差がない。Partial Register Stallがないせいか。
Pen3だと結構差が出る予感なんだが。
0263デフォルトの名無しさん
NGNGpentiumiiiあたりならmovzx推奨
0264デフォルトの名無しさん
NGNGxorやsubでクリアした後は、パーシャルレジスタストールは起こらないよ
0265デフォルトの名無しさん
NGNGそうでしたかスマソ。そしたらP3環境でも似たような結果?
0266デフォルトの名無しさん
NGNGマイクロアーキティクチャの違いによるものでしょう。
(P3のデコーダの性質上の物でもあるかな?)
MOVZX非対応のCPUの場合XORを使う手法が必須ですが、
それ以外では、原則MOVZXやMOVSXで良いでしょう。
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNGペンティアムはmovzxが遅いので、ターゲットのCPUがペンティアム2以降かどうかで、
どっちにするか決めればいいんじゃない。
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNG念のためPen3で測定してみたよ
@Win2K VC++7.1インラインアセンブラ RDTSC使用でクロックを計測 loop命令で1000万回ループ
movzxの方が1処理あたり0.3クロックくらい速い。いや、xorが遅いと言うべきか。
アンロール数を増やすとそれに反比例して差が減っていく。
20回で0.15クロックくらいになるよ。
P4でも試したけどほぼ同じだった。
0271デフォルトの名無しさん
NGNGWindows 2000 Advanced ServerでPAE on/offで比較してみました。
PAE on/offの確認の為、とあるツールで読み出したCR4の値も書いておきます。
SuperPI 104万桁, Pentium II
7分56秒 : PAE on (CR4=000000F1)
7分54秒 : PAE off (CR4=000000D1)
SuperPI 419万桁, Pentium 4
10分38秒 : PAE on (CR4=000006F1)
10分37秒 : PAE off (CR4=000006D1)
0272デフォルトの名無しさん
NGNGor eax,-1
mov al, byte ptr[ecx]
かな?
あ、これだとパーシャルレジスタストールが起きるか。
>>271
ほとんど変わらないってこと?
でもSuperパイってメモリ読み込み以外の部分が大きいから、あまり参考にならないかも。
0273デフォルトの名無しさん
NGNG>or eax,-1
>mov al, byte ptr[ecx]
alが0x00〜0x7fだと正しく符号が拡張されないヨカーン。
0274デフォルトの名無しさん
NGNGcbw
だと、パーシャルレジスタストール起きちゃうのかな?
0275271
NGNGSuperPIは多倍長乗算にFFTを使っており
ビット逆順アクセス処理にランダムメモリアクセスを伴います。
このため、メモリアクセスには敏感なソフトだと思います。
試しにEDO DRAMのメモリセッティングを変更した場合の結果を書いておきます。
SuperPI 104万桁, Pentium II, PAE off
7分54秒 : EDO DRAM 60nsセッティング
8分50秒 : EDO DRAM 70nsセッティング
0276271
NGNGTLBヒット時のメモリアクセスはPAE on/offで全く差はなし。
PAE onでもTLBはきちんと機能するようです。
TLBミス時のメモリアクセスは、PAE onの場合はPAE offより数クロック増えるようです。
>>251のPDPがキャッシュされないという件を確かめてみようといろいろと試してみましたが(
アドレス40000000hより前と後のアドレスを交互にアクセスして遅くなるかどうか等)、
結局、それらしい現象は確認できませんでした。
0277さっきゅん ◆GG1SfzBGbU
NGNG0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNGWindowsはこれは使わないのかな。これならディレクトリは2階層だけど。
だけどページサイズはいろんなところに影響及ぼしそうだ。
0280デフォルトの名無しさん
NGNGエントリのサイズが8byteになってることの影響って
あんまり関係なし?TLBのサイズが沢山必要に思えるのは
素人だからだろうか。
0281デフォルトの名無しさん
NGNG使っているうちに、メモリのいたるところで大きな穴が開く。
今の時代でも2MBは大きいんじゃないかな。
0282さっきゅん@まりーあんとわねっと ◆GG1SfzBGbU
NGNG/〜ヽ
(。・-・) 。oO( >>278 TLBが足りないならTLBを増やせばいいじゃない
゚し-J゚
0283デフォルトの名無しさん
NGNGURL教えてください!
0284デフォルトの名無しさん
NGNG/〜ヽ
(。・-・) 。oO( >>283 検索もできねーやつは書き込むなorz
゚し-J゚
0286デフォルトの名無しさん
NGNG/〜ヽ
(。・-・) 。oO( 誰が日本語でと言ったんだろうorz
゚し-J゚
0287さっきゅん ◆GG1SfzBGbU
NGNG/〜ヽ
(。・-・) 。oO( 日本語マニュアルほしいから聞いてるんじゃないの?
゚し-J゚
0288デフォルトの名無しさん
NGNG/〜ヽ
(。・-・) 。oO( 誰も日本語とか言ってねぇよ、えいご読めないのはお前なの!w >>287
゚し-J゚
0289さっきゅん ◆GG1SfzBGbU
NGNG/〜ヽ
(。・-・) 。oO( 喪前の事を少々見くびっていたようだ。スマンカッタ
゚し-J゚
0290デフォルトの名無しさん
NGNGhttp://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739_7044,00.html
IA32-e
http://www.intel.com/technology/64bitextensions/
IA32-eで追加された命令
CMPXCHG16B m128
MOVZX r64, r/m32
MOVZX r64, r/m32 についての疑問
32bit演算すると上位32bitはゼロ拡張されるはず。
MOV r32, r/m32 ではいけないのか。
MOVZX r64, r/m32 を使うメリットはあるのか。
0291デフォルトの名無しさん
NGNG素晴らしい!
サンクス
0293デフォルトの名無しさん
NGNG32bit演算なら上位は保存されるんじゃないの?
386移行のときは割りこみで上位16bit破壊されて難儀したな
0294デフォルトの名無しさん
NGNGlea r64. [r32]
0295デフォルトの名無しさん
NGNGいままでも、1つ目のオペランドは2つ目オペランドの
倍のサイズだったと思うが。
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNGマニュアルを見る限り、どうもIA-32eとAMD64で命令の食い違いがあるみたいだね。
REX.W + 0F B7 /r は
IA-32eでは MOVZX r64,r/m32
AMD64では MOVZX r64,r/m16
REX.W + 0F BF /r は
IA-32e,AMD64共に MOVSX r64,r/m16
おそらく、IA-32eのMOVZXの記述が間違い(マニュアルのミス)だと思う。
MOVZX r64,r/m32 という命令は存在しないと思う。
0298290
NGNGサンクス
結構マニュアルのミスあるみたいですね。
MOV r/m64, imm32 (32bit即値の符号拡張)も
IA-32eのマニュアルでは、32bit即値のゼロ拡張になってるし。
0299デフォルトの名無しさん
NGNG0クリアされるのがムカツク。余計なことを
0300デフォルトの名無しさん
NGNG多分
movd レジスタ, メモリ
の場合を言っているんだろうけど、
ゼロクリアされないと、レジスタの余計な依存関係が発生して、
スケジューラにかなりの負担が掛かるので却下。
(例えば、レジスタを部分的に残してしまう movhpd とかは、
使うタイミング間違うとかなり面倒な依存関係が起きて
パフォーマンスの低下を招く)
同じ理由で、中途半端にフラグの変化する
inc,dec も、P4以降では使わないほうがいい。
0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG同感。
Aviutlのデータ、ダブルワードにして欲しい。
0303デフォルトの名無しさん
NGNGttp://www.sra.co.jp/public/sra/product/wingnut/gcc/gcc-j.html
0304デフォルトの名無しさん
NGNGasm文のことならMinGWスレにも
http://pc2.2ch.net/test/read.cgi/tech/1042611308/501-600
movlとかがわからないのなら、
gcc -masm=intel -S -fverbose-asm -o test2.S test2.c
とすると、intel形式が使えます。%%eaxとかしなくてもいいです。
少し前のgccだと、
-mcpu=i386:intel
で使える場合もあるし、ダメな場合もある。
0305デフォルトの名無しさん
NGNG0306304
NGNG0307デフォルトの名無しさん
NGNGちょっと列挙してくれるとありがたいです。
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNGビットシフトでがんばればいいんだけどね。
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGもしCにローテートいれるとしたら演算子はどんなが
いいかな
0313デフォルトの名無しさん
NGNG左ローテート <>
他言語の否定と紛らわしいかな。
0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNG左 <<>
これでどうだ!
0316デフォルトの名無しさん
NGNG|>
シフトしてORをするという意味で
0317デフォルトの名無しさん
NGNG0318デフォルトの名無しさん
NGNG予約語が増えるよりは記号の方がいいんじゃないかと。
0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNGそういやC以外でも、ローテート演算子持ってる高級言語ってないね。
・・・いや、あるかもしれないけど俺は知らない。
0322デフォルトの名無しさん
NGNGなんかある?
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNG0325デフォルトの名無しさん
NGNGってかもう使わんか。
0326デフォルトの名無しさん
NGNG→⊃
⊂←
0327デフォルトの名無しさん
NGNG演算子はないね。
ttp://www1.jpn.hp.com/products/software/development/dvf/docs/vf-html/az/az06_47.htm
それほど使用頻度は高くなさそうなんで、Cなんかなら
必要なとこだけインライン・アセンブラで済ませれば
いいような気もするが。
0328デフォルトの名無しさん
NGNGシフトの桁数が多い時に、逆方向にローテートして余りをマスクする。
安物CPUには任意の桁数をシフトする命令がないのですよ。
>>327
最適化の邪魔になるのであんまし使いたくない。
0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG0332デフォルトの名無しさん
NGNG0333デフォルトの名無しさん
NGNG体と心の関係
0334デフォルトの名無しさん
NGNGOS の一部分はアセンブラ使って書かれると思うけど。
0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNG0337デフォルトの名無しさん
NGNG昔、Cなんてのはトロい代名詞だった…
(最近はCPUパワーにおんぶされてるというのもあるが)
0338デフォルトの名無しさん
NGNG今は顔もみたくない
関係でいえば嫁みたいなものかなぁ
見たくないけど一番の理解者
0339デフォルトの名無しさん
NGNG最近は全部.EXE。。。
0340デフォルトの名無しさん
NGNG0341デフォルトの名無しさん
NGNGつ|EGC|
0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNGEGCは98でもVX21以降でサポートだと思ったけど。。。
でも、なにげにVGAはEGCほどじゃないけど、結構いろんなことが
できるんだよなー。
0345デフォルトの名無しさん
NGNGLinuxとか最初からドライバがいくつかついてると思うけど
仕様をどこで調べたんだろう。
0346デフォルトの名無しさん
NGNGリバーsくぁwせdrftgyふじこlp;@:
0347デフォルトの名無しさん
NGNGPSのエミュなんてどうやって作るんだよ
0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNGプログラミング等の知識0でも分かりやすかった。
このくらいの初歩から教えてくれる本ないかなぁ・・・。
0352デフォルトの名無しさん
NGNG初めて読むMASM
おれはこの2冊から始めたんだが、今となっては内容が古すぎるかも。
いまさらセグメントなんか覚えても役に立たないだろうしなあ。
0353デフォルトの名無しさん
NGNG買うのはもったいないので図書課で借りるのがいいです。
0354デフォルトの名無しさん
NGNG図書課−>図書館です。
念のため。
0355デフォルトの名無しさん
NGNG今でもあまり変わらないんじゃないかな。
他に今だと「はじめて読む486」も要るか。
まあ猛者にはIntelのマニュアルだけで十分らしいけど。
0356デフォルトの名無しさん
NGNGアセンブリ
アセンブル
アセンブレ
アセンブロー
0357デフォルトの名無しさん
NGNGaddps xmm1,xmm3
より
pshufd xmm1,xmm2,11100100b
addps xmm1,xmm3
の方が速い?
0358デフォルトの名無しさん
NGNGシフト演算、MMX演算のユニットが空いていれば早い。
スループットが問題になる場合は微妙。
Pen4でアセンブラ高速化する際は、ポートの構造やパイプラインなど
CPUの全体を把握しないと駄目。
更に言うと、
pshufd xmm1, xmm2, 11100100b
addps xmm2, xmm3
とか、
pxor xmm1, xmm1
por xmm1, xmm2
addps xmm2, xmm3
の方が早い場合が多い。(依存性解決の必要が無いからね)
0359デフォルトの名無しさん
NGNGにあった日本語のマニュアル郡はいずこ?
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNGをこれでもかこれでもかという程使いまくったコードを吐くようになっ
たが、あまり早くなった気がしねー。
実数演算がメモリを経由せず夢のレジスターレジスタ間演算になる
のでかなり早くなると期待したんだがな。
0363デフォルトの名無しさん
NGNG劇的に速くなった。物にもよるが逆行列を求める場合1000×1000
の行列だと3〜5倍の速度が出るな。マジで。
0364デフォルトの名無しさん
NGNGそれはメモリアクセス・キャッシュの影響じゃなかろうか
0365デフォルトの名無しさん
NGNG北森P4=DDR400(Dual?)
実数演算自体は、確かクロック比程度のアップしかしないんじゃなかったかな。
P6自体がK6やP5と比較してかなり速かったし。
実際にはK7がもっと速くて、さらにメモリ速度の分K8が速いと思う。
0366デフォルトの名無しさん
NGNG#34de2090 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
WinXP sp2のページエントリテーブル。
NXビット確認
0367デフォルトの名無しさん
NGNGで、速度は?
0368デフォルトの名無しさん
NGNG↓でDEPに引っかかりまつ
char *p;
p= malloc(1);
*p = 0xc3;
_asm call p
0369デフォルトの名無しさん
NGNGchar *p;
DWORD old;
p=(char*)malloc(1);
*p=0xc3;
VirtualProtect(p,1,PAGE_EXECUTE_READWRITE,&old);
_asm call p;
0370デフォルトの名無しさん
NGNGモリアガラン
0371デフォルトの名無しさん
NGNGnasmでとりあえずhello, worldを表示させようと下記のHPにあるソースを
アセンブルしてみた所「hello.asm:1: fatal: unable to open include file `system.inc'」
というエラーが出ました。
http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/x86-first-program.html
findコマンドでsystem.incを調べても見つからないのですがこのファイルは何なのでしょうか?
---
OS:FreeBSD 4.8 RE
NASM version 0.98.38 compiled on Apr 3 2004
0372デフォルトの名無しさん
NGNG16.5.5 Using an Include File
If you are releasing your software as (or with) source code, you can use macros and place them in a separate file, which you include in your code.
Porters of your software will simply write a new include file. No library or external object file is necessary, yet your code is portable without any need to edit the code.
Note: This is the approach we will use throughout this chapter. We will name our include file system.inc, and add to it whenever we deal with a new system call.
We can start our system.inc by declaring the standard file descriptors:
%define stdin 0
%define stdout 1
%define stderr 2
0373デフォルトの名無しさん
NGNG上手く行きました。
ありがとうございました。m(_ _)m
0374名無し@沢村
NGNGプログラム言語の歴史が変わった歴史的瞬間だ。
http://hp.vector.co.jp/authors/VA015412/
0375デフォルトの名無しさん
NGNGもちろんそのプログラムはマシン語で開発したんだろうな?
0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNGなんだか面白そうだね。
でも、”Visal E++のダウンロード”ってなっているよ。
0378デフォルトの名無しさん
NGNGだから、E 言語は既に他にあるんだって。
http://erights.org/
0379さっきゅん ◆WAHAH0fe4c
NGNG0380デフォルトの名無しさん
NGNG0381さっきゅん ◆WAHAH0fe4c
NGNG0382デフォルトの名無しさん
NGNG0383名無し@沢村
NGNG馬鹿、それはまがいものだ。
おれのがホントのE言語だ!
0384デフォルトの名無しさん
NGNGマシン語ならMじゃないの?
0385デフォルトの名無しさん
NGNG名前:名無し@沢村 日付:4月8日(木) 22時24分
そのE言語はまがいものです(笑)
+-----------------------------------------------------------------+
383 :名無し@沢村 :04/04/08 20:40
>>378
馬鹿、それはまがいものだ。
おれのがホントのE言語だ!
+-----------------------------------------------------------------+
どっちが本人よ
0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNGこの世にBIOSがいくつあると思ってるんだ?
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNGエミュレーションしてしまうという手がある。
x86以外のハードで、ROMにx86のコードが載ってる
PCIデバイスとかを使うときはそうすることもあるし。
0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNGPowerPCとARM。どっちのアセンブラ(というかニモニックというかインストラクションセットというか)が
好きでつか?
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNGARMが好きな奴っているのか?
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNGつーか需要あると思う?
0399デフォルトの名無しさん
NGNG>>38
ロングパイプライン・キャッシュリロード・投機実行
これらのワーストで250000クロック分の処理が無駄に破棄されます。
Windowsでは、この破棄が秒間に100回以上起こる可能性があるそうです。
つまり、この回避しがたい100回以上の破棄をいかに軽微にこなすかが
CPUに求められているというわけです。
つまりもっさりの改善は、パイプラインストールの回避・分岐予測の精度向上・メモリ帯域の向上・キャッシュミスの回避と、
すべて理にかなった当然の結果として落ち着くわけであります。
秒間数十億個というのはあくまでもクロックから推定できる理論値。
今のPen4は、キャッシュ1ライン埋める程度の作業に10000クロックかかるんですよ?
0400デフォルトの名無しさん
NGNGキャッシュにロードされるのに10000クロックはかからないだろうに。
0401デフォルトの名無しさん
NGNGコピペか・・・・
WindowsXPのデフォルトのコンテクストスイッチ時間は50ms
間隔、Server2003は300msだ。前者はどう考えても20回/秒
しか切り替えが起きないように思えるが・・・・
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNGらしいよ。ちなみにXPでもバックグラウンドサービスを優先にする
にすると300msに切り替わるからやってみるといい。但しその時
同時にバックグラウンドプロセスに割り当てられる時間も長くな
るので、表で重い処理をしていると不都合が生じる事があるらしい。
ttp://homepage2.nifty.com/winfaq/c/ntperf.html#1292
0404デフォルトの名無しさん
NGNGで "perfmon" と入力して[OK]を押と、パフォーマンスモニタが立ち上がる。
╋ボタンを押して[カウンタの追加]ダイアログボックスを出す。
[パフォーマンスオブジェクト]に"System"を選択し、
[一覧からカウンタを選ぶ]から"Context Switches/sec"を選択して
[追加]ボタンを押す。
これで1秒間に何回コンテキストスイッチが起こっているか
リアルタイムで確認できます。
0405デフォルトの名無しさん
NGNG割り込みも含んでいるのでは?
でも・・・「キャッシュ1ライン埋める程度の作業に10000クロック」で
なんか説得力失くしてるような
0406デフォルトの名無しさん
NGNGだいたい百回くらいになったよ
0407デフォルトの名無しさん
NGNGintelのキャッシュはライン全てが埋まる前に順次アクセス可能になったような気がする
0408デフォルトの名無しさん
NGNGせいぜい数百クロックで埋まると思うんだが。
0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNG南無
0412デフォルトの名無しさん
NGNGもしやさほどいい本でもないと・・・・?
0413デフォルトの名無しさん
NGNG0414さっきゅん ◆WAHAH0fe4c
NGNG0415デフォルトの名無しさん
NGNGなんとか頑張ってみます。
0416デフォルトの名無しさん
NGNG>ゲームやソフトを実際に解析する具体例を以て行う実践解析ガイド
>ゲームで「キャラクターを無敵にしたい」とか、特定のソフトで機能制限を解除したい」などが
導入としてこの手の話題は悪くないと思いますが
肝心のアセンブラの解説にいくまでに息切れした感があります
ゲームラボの延長のような位置付けなんでしょうね
0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNGその本はゲーム解析者の間では「買う価値の無い本」として有名です。
ゲームの改造ネタは色々なゲーム解析サイトの解説を参考にしていますが、
ライターに知識がないのでこの本の解説では間違いだらけになっています。
それに、インテルのアーキテクチャマニュアル丸写しのページは、
索引がないのでとても使いにくく評判が悪いです。
ゲームの解析がやりたいのなら、下のサイトで勉強した方が良いでしょう。
「いまどきのアセンブラプログラミング」よりもはるかに役に立ちます。
アセンブリ言語のソースコードもありますし。
http://gamereverserz.cjb.net/
0419デフォルトの名無しさん
NGNGそうですか・・・・衝動買いはいけませんね、ありがとう。
0420デフォルトの名無しさん
NGNGアセンブリを真面目にやりたいならはじめて読む8086でも嫁。
ゲーム解析は知らん
0421デフォルトの名無しさん
NGNG評判いいみたいなんだが、実際どうなんでしょう?
0422デフォルトの名無しさん
NGNGコードを一行書くたびにうっとりしてる。
高級言語のゴテゴテした記述には吐き気がする。
0423デフォルトの名無しさん
NGNGそんなあなたにはWhitespaceがおすすめ
ttp://compsoc.dur.ac.uk/whitespace/
0424デフォルトの名無しさん
NGNG瀕死のコボラーみたいなこと言ってないで働けよ
0425デフォルトの名無しさん
NGNGCPU8086の組み込み機器用プログラムがあって、
組み込みLinux(!)に移植せねばならぬのだ・・・。
ソースコードは一部C言語+大部分アセンブラ。
アセンブラをC言語に逆アセンブル出来る?
出来たとしても、Linuxへの移植に役に立つCのソースが得られる????
すまん、アプリ屋なもので、判断できんのだ・・・。
できないならできないで、しょうがないので、流用はあきらめて作り直しなのだけど・・・・。
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNG???
0428デフォルトの名無しさん
NGNG一度解析して、仕様書を起こしたほうがいいと思う
0429デフォルトの名無しさん
NGNGCでVM作ってその上で元のプログラムを動かせばOK
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNGアセンブリ使える香具師には必要なし
Cをもっと理解したい香具師にはちょうどいい
0433デフォルトの名無しさん
NGNG>>427 さま
あまりのタコ質問で、反応するのがあほらしい感じですか?
自分はアプリ屋なので、恥ずかしながら、
私のアイディアが、どの観点でどのくらいトンチンカンなのかすら
わからないのですよ・・・。
できたら、私のアイディアのタコさ加減を教えてもらえるとありがたいです。
見極めついたら、とっととあきらめて、つくりなおします・・・
しょうがないので。
>>428 さま
やっぱりそうですかねぇ。仕様書はメモリマップぐらいしかないので、
結構気合がひつようだなぁ。(鬱)
0434デフォルトの名無しさん
NGNG逆コンパイラは皆無ではないが、技術的に困難で、
どんな場面でも実用的に使えるようなものはないと思う。
コンパイラのことをよくわかった人間が書いたアセンブリプログラムなら、
十分構造化されてて、手作業でも逆コンパイルができるかもしれないが、
スパゲティ状態だったら、あきらめるのが得策。
0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNG>>逆「コンパイル」
なるほど、用語が誤っていたということですね。
>>十分構造化されて
なるほど、たしかに、構造化を意識して、かつ、C言語のような構造化言語
をコンパイルしたようなアセンブラでないと、
構造化言語への変換は、意味的に不可能ですね。
親切なコメントありがとうございます。
>>435さま
IDA Pro http://www.datarescue.com/idabase/
なるツールを見つけましたが、これでしょうか?
上記と絡みますが、これはC言語をコンパイルしてできた機械語を逆コンパイルする
という位置付けなのでしょうかね・・・Webだけではちょっとわかりませんね・・・
0437デフォルトの名無しさん
NGNGhttp://boomerang.sourceforge.net/
も、IDA Proを意識した逆コンパイルツールだな。
どちらも、自動的にってことはたぶんあきらめてて、
「十分知識をもった」ユーザーが介入することを前提にしているはず。
8086に対応してるかは知らん。
機械語とこういったツールに習熟し、さらに手間をかけて使うコストと、
仕様から単純にソースを設計しなおすコストと、
どっちが安いかは規模によるだろうな。
0438デフォルトの名無しさん
NGNG0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNGは??
いったいどういうものを想定してるの?
0441デフォルトの名無しさん
NGNGwin32のやつ
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNGもしそうならOllyDbgなどがあるけど
0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNGもおぼつかないぞぉ
0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNGdebugとGUIに関する知識をつけてから来るように。
はい、次の人。
0449デフォルトの名無しさん
NGNG貴方は超能力者様ですか
0450デフォルトの名無しさん
NGNGヽ||´ ∀`||.。oO(知ってるがお前の態度が気に入らない にははーっ)
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNGC3
0455デフォルトの名無しさん
NGNG>debugでGUIできる?
debugとGUIの単語を入れ換えれば意味が分かる俺は天才ですか?
0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGOllyDbgは使えそうだが、Winか。
Linux環境のやつを探しているのだが。
0460デフォルトの名無しさん
NGNG>>439ではないよね?
kdbgとかgdbのGUIフロントエンドの類はいくつかあるみたいだが
0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNGこんな感じで高速サーキットをガンガン組むスレかと思ってました・・・・。
( ゚ρ゚ )b逝ってくれ
0463439
NGNG0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNG結局、基本方針は作り直しに限りなく近い移植
となりました。 アセンブラを参考にしつつ、作業をすすめるつもりですが・・・。
アドバイスありがとうございました・・・。
0466デフォルトの名無しさん
NGNG声に出して読みたいマシン語
0467デフォルトの名無しさん
NGNG1D?(6809)
0468デフォルトの名無しさん
NGNG14(6809)
0469デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNG00はNOPなのが当然だと思っていて
8086で呆然としたよ。
0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNGニーモニックに割り当てられていた。ソフトウェアインタラプト
の事かな?NOPは0xEAだっけか。
なにせ命令数が少ないのにいろんなコンシュマー機に乗って
それはそれは偉大なソフトウェア資産を残しましたよねえ、この石。
0473デフォルトの名無しさん
NGNG・この命令を実行したチップは物理的に破壊されシステムは二度と復旧できません。
・自己爆破プログラムなどの作成によく使用します。
0474デフォルトの名無しさん
NGNGしい仕様になっていたな。だから電源投入後ほんのしばらくだけ
暴走状態になり、未定義命令(すべてBRK命令になる)に遭遇して
インタラプトベクタ(ROM)の指すアドレスにジャンプしていた。
6502は電源投入かリセットによるものかをハード的に検出する機構
を持たず、どうやら電源投入時にはRAMの内容が不定なのを利用
して判別していたらしいが、その詳細は寡聞にして知らない。ある
特定のRAMを未使用にし、内容を$00にするなどして判別していた
のだろうか。
6502はDMA割り込みにも対応していず、強制的にCPUをHLT状態
にしてバス占有権をデバイスに譲り渡していたような記憶がある。
ソフトウェア的には面白いCPU(MPUというらしい)だが、ハードウェア
的にはまだまだ不備が多かった。
0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNG電源投入時のみPCが不定なんじゃなかった?
0477デフォルトの名無しさん
NGNG未定義命令は全てBRKになるのは大嘘。
電源投入かリセットかの判別をRAMが特定の値になって
いるかどうかで判別するのは普通に使われてると思うけど。
DMA割り込みがなくても特殊用途以外困らないな。
0478あっせんぶら
NGNGどうすればいいでしょうか?
char str[10]
__asm__("movl %ebx, ????");
????はなにを入れるんでしょうか?linux上のgccでコンパイルしたいのです。
0479あっせんぶら
NGNG0480デフォルトの名無しさん
NGNGそれができると何がうれしいの?
0481デフォルトの名無しさん
NGNG__asm ("movl %%ebx,%0" : "=m" (str[0]) );
かな。これ読んどけ
http://www.sra.co.jp/wingnut/gcc/gcc-j.html#Extended%20Asm
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNGchar c;
asm ("movb $0x41, %%al;\n\
movb %%al, %0;" :"=r" (c) );
putchar(c);
0484デフォルトの名無しさん
NGNG俺はedit.exeだが・・・
0485デフォルトの名無しさん
NGNGedlin.com
0486デフォルトの名無しさん
NGNGcat
0487デフォルトの名無しさん
NGNGネ申
0488デフォルトの名無しさん
NGNG即デリだろ
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGインテルのマユアルぐらいしかしかないか
0491デフォルトの名無しさん
NGNGまゆタン(*´Д`)ハァハァ
0492デフォルトの名無しさん
NGNG即デリだよ。直前に落としたけど。
0493デフォルトの名無しさん
NGNGこういう時だけは2chに張り付いてるキモい奴が裏山しくなるんだよな…。
0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNGまた復活した。多分最小限のWin32APIとかが入ってるのかな。
即デリされて即同じ垢取ったんだろうからまた即デリか?
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNG0499部外者
NGNGまだ493から2時間もたっとらん
0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNGホンマに一発で豆32できるね。Warningだらけだが。
ホンマにIntel C++使えるね。Warningだらけだが。
0502デフォルトの名無しさん
NGNGタダで使えるVisual C++
http://pc5.2ch.net/test/read.cgi/tech/1082177340/l50
0503488
NGNG0504デフォルトの名無しさん
NGNGmov ah,09h
int 21h
segment data
NIYA: db 'NIYA NIYA',0dh,0ah,'$'
0506デフォルトの名無しさん
NGNGint main(){ int i=123,j=456; printf("%d %d\n",i,j); }
以下のように出力されるが
何でAの箇所で"-16"を"andl"してるのか理解できない。
main:
pushl %ebp
movl %esp,%ebp
subl $24,%esp
andl $-16,%esp ← A
movl $456,8(%esp)
movl $123,4(%esp)
movl $.LC0,(%esp)
call printf
leave
ret
何故ですか?教えてエロイ人
0507デフォルトの名無しさん
NGNG0508デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNGそういう規則(calling conventionっていうんでしょうか?)はどこ見れば書いてありますか?
x86のLinuxでインラインアセンブラで遊んでいます。
0511デフォルトの名無しさん
NGNGttp://homepage2.nifty.com/yashiromann/memo/x86_proccall.html
0512510
NGNGサンクスコ
しかしなんつーかもっと公式っぽいのはないもんですかね・・
0513デフォルトの名無しさん
NGNG見てみたけどあんまぱっとしないね
VCの呼び出し規約だったらMSDNにあったはず
0514デフォルトの名無しさん
NGNGgcc/config/i386/i386.h
マクロの説明はinfoにある。
インラインアセンブラなら引き数ちゃんと指定すりゃ、
そんなん気にしなくてもいいはずだが。
0516デフォルトの名無しさん
NGNGLinuxでgdb-5.3です。xemacs -e gdb で使ってます。
0517デフォルトの名無しさん
NGNG漏れは泥臭いけどこうしてる。
.gdbinitに
define printflag
printf "flag = %s%s%s%s%s\n",\
$eflags & 1 ? "C":"-",\
$eflags & 4 ? "P":"-",\
$eflags & 16 ? "A":"-",\
$eflags & 64 ? "Z":"-",\
$eflags & 128 ? "S":"-"
end
もっとスマートな書き方あったら教えてくれ。
0518デフォルトの名無しさん
NGNG>>517
(゚д゚)ウマー
0519デフォルトの名無しさん
NGNGさんすこ!いい感じです。
0520519
NGNGdisas結果とにらめっこはつらいっす。
0521デフォルトの名無しさん
NGNGemacsはどうよ?
0522519
NGNGいや〜、emacsでM-x gdbしてるんすが、混合モードにできるんすか??!!
0524デフォルトの名無しさん
NGNGはじめて読むPentiumキタ━━━━━━(゚∀゚)━━━━━━ !!!!
0525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNGはじめて読む486の続編?
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNG今更pentium出されても486と大して変わってないし。。。
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGまぁあの人なら「いまどきの〜」みたいなのは絶対書かないから良いとして・・
0537デフォルトの名無しさん
NGNGいいかげん486じゃ売れないだろ、とか思って
改訂ついでに486→Pentiumに変更したものかとオモタ。
s/486/Pentium/ + 若干のお茶濁し程度のPentium固有説明と予想。
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNGFPUのバグか?
0540デフォルトの名無しさん
NGNGMMXとかSSEとかネーノ?
PSEとかPAEとかHyperThreadingとかも含まれればいいなと妄想。
0541デフォルトの名無しさん
NGNGIntel > Microsoft > Borland > gcc
0542デフォルトの名無しさん
NGNGIntel > Microsoft > Borland >>>>>>>>>>>> gcc
じゃないの?知らんけどどーせP4最適化の不具合残ってるんでしょ?gcc3.4
0543デフォルトの名無しさん
NGNG信用できないので inline を使えないです。。。
Intel & Borland の 配列処理のコードは賢いです。
Intel Compiler + VTune ってのが最強ですか!?
0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNGハンドアセンブルは間違わなければ誰がやっても同じ結果になるのでは。
0546デフォルトの名無しさん
NGNG大抵そのまま暴走する罠。
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNG勝手にミラー作った。
http://compiler.web-zz.com/
0550デフォルトの名無しさん
NGNGATLは割れ物?
0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNGCPU動作クロックカウントする奴とかありませんでしたっけ?
CPUID実行すると随分結果違いそう。
あっ、CPUIDがDX4以降だった(大和田爆)!
0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNGgcc >>>>>>>>>>>> Borland > Intel >|越えられない壁|> Microsoft
gccの最適化もそんなに悪くはないはず
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNGなにをどう移植する気だ
0558デフォルトの名無しさん
NGNG開発環境がWindowsに限定されるからやる人がいないだけで
リンカさえ用意すればx86環境はMicrosoftでも統一できないか?
0559デフォルトの名無しさん
NGNGできん
0560デフォルトの名無しさん
NGNG割れというよりフリーソフトの無断転載だがいけないと思うので通報した。
ちゃんと落とした後に確認してから。
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNGディスアセンブラ知らないですか?
今昔のソースのないライブラリ使いたくて困ってるんだけど
なかなか見つからなくて。
ないのかなぁ、そんなの。
0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNGLIBからOBJ引っ張り出してすべてのシンボルを参照する
プログラムとリンクすれば?
0566デフォルトの名無しさん
NGNGobjにすればリンカに食わせるだけでいい。
obj用の逆アセンブラってのもあったような気がするけど。
0567デフォルトの名無しさん
NGNGobj2asmで検索すればいくつか見つかるな。
32bitやCOFF対応のとなると少ないが。(Digital Marsのヤツが対応してたかな。)
0568デフォルトの名無しさん
NGNGDC++ じゃなくてその前身のSC++だけど、軽く試した感じだとCOFFにも対応してる気がす。
まぁ、対応して無くても coff2omf が付いてるのでなんとかなる。
0569デフォルトの名無しさん
NGNGってどういう意味ですか?
0570デフォルトの名無しさん
NGNGret後にespに8加算
これくらいインテルのマニュアル見たほうが速かろうに
0571デフォルトの名無しさん
NGNG0572デフォルトの名無しさん
NGNGdd0
dd1
;(省略)
dd9
?live1@0:;main関数の呼び出し
push ebp
mov ebp,esp
add esp,-40
push esi
push edi
@1:mov esi,offset $ilhlbaia
lea edi,dword ptr [ebp-40]
mov ecx,10
rep movsd
xor eax,eax;i=0
?live1@48: ; EAX = i
@2:
inc dword ptr [ebp+4*eax-40]
inc eax;i++
cmp eax,4;i<4となっているか?
jl short @2
;(省略)
0573572
NGNGCで
int main(){
int s[]={0,1,2,3,4,5,6,7,8,9};int i;
for(i=0;i<4;i++){
s[i]++;
}
return 0;
}
ってなるのを、bcc32 -Sでアセンブリ化したのですが、よく分かりません。
@1:の最初の方でesiがs[0]を参照しているみたいですけど、
何故[ebp+4*eax-40]がs[i]を表わす事になるかが良く分からないんです。
参照したのはesiなのに・・・
0574デフォルトの名無しさん
NGNGsiozef(int)は4
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG@1では、この定数を変数にコピーしてる(s[]={0,1,2,3,4,5,6,7,8,9})
sに対応するのがebp-40で、iに対応するのがeax
つまりs[i]に対応するのが[ebp-40 + eax*4]
こんな説明で分かるかな?
0577572
NGNGなんとなく分かりました
ありがとうございます
0578デフォルトの名無しさん
NGNGステップ実行することはできないでしょうか? gcc -S結果のファイルをあらかじめ
用意しておくなどの方法でもかまいません。
よろしくおねがいします。
...と。
0579デフォルトの名無しさん
NGNGdefine hogehoge
x/1i $pc
si
x/2i $pc
end
くらいでどうよ。
0580デフォルトの名無しさん
NGNGなるほど、ありがとうございました
0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG脳味噌
0585美留上位
NGNG0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNGそんな事よりきいとくれ。
俺が学生の時に60過ぎの教授、「アセンブラと言ってもこれでは有りません」
とか言って、プログラミング言語の講義中に麻宮騎亜の「アセンブラ0X」を出して来た
んだけどどう思う?
0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNGお勧めなサイトとか本とかあったら教えてください
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNG国内で有名どころと言えばここかな。
ttp://www.e-net.or.jp/user/missing-link/assembler/menu.html
過去ログ必読!!膨大な量のログがあります。
0595デフォルトの名無しさん
NGNG勉強する目的を書いた方が良いかと。
例えば、目的がアセンブリ言語でのプログラミングの場合と、
目的がゲームの解析の場合では、回答も違ってくるから。
いずれにせよ、「いまどきのアセンブラプログラミング」という書籍は買わないように。
絶対に後悔するから。
0596デフォルトの名無しさん
NGNGLDAA #8AH
CMPA FG
BCC SWCAL
などの命令が見られないのが寂しい。。
0597デフォルトの名無しさん
NGNGぐさりと刺す。
SEX
オニーチャンノエッチー(AA略。
0599デフォルトの名無しさん
NGNGゲームの解析なら、下のサイトとそのリンク先で勉強するのがお勧め。
わざわざ本を買う必要はありません。
http://gamereverserz.cjb.net/
0600デフォルトの名無しさん
NGNGhttp://www.visual-assembler.pt.vu/
NASM用IDE
0602デフォルトの名無しさん
NGNG>>599のサイトは、プロセスメモリエディタすら使いこなせない初心者には難しいが、
これからアセンブリ言語のゲーム解析への応用を学ぶ人には丁度いい難易度だと思う。
「Questions/Suggestions」のコーナーで、初心者はどう勉強すればいいか解説してあるし。
0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNG0605603
NGNG0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNG0608606
NGNG0609デフォルトの名無しさん
NGNGえ〜?「60過ぎの教授」なんだろ?
きっと一世一代のネタだったんだよ。
0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNGフロントホックブラなら付けています。
0613デフォルトの名無しさん
NGNGどおりで重いわけだ。
>>612
むしろTシャツブラのような気が。
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNGint 三国人
不正な割り込みが発生しました。
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNGSSEは1,2,3のどこまでじっこうできるんでしょうか?
0619デフォルトの名無しさん
NGNGモトローラだと半島→在日になっちまうんだが(w
0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNGmov ブラックホール, 半島
0622デフォルトの名無しさん
NGNGズタズタグチャグチャ
0623デフォルトの名無しさん
NGNGcmp 人,在日
je 刑務所
endm
0624デフォルトの名無しさん
NGNGhttp://rd.vector.co.jp/soft/dl/dos/util/se046783.html
このソフトはマウスの動きを方向キーに割り当てるものですが上下のみ。
左右も対応して欲しいのと、マウスのボタンを好きなキーに割り当てるように改造して欲しいです。
ノートパソコンではマウスの代用として
ジョイステックに似たステックやリブポイントがIBMや東芝などで使われてます。
これを方向キーのエミュレーションとして使いたいのです。
(逆のキーでマウスを動かすソフトは沢山あるんですけどね)
ステックでゲームができると大変操作性があがります。
作者に頼むにしても1997年で開発が止まってるようで、今更w
なんとか改造出来ないでしょうか?
僕はアセンブラもDOSもダメです。
0625デフォルトの名無しさん
NGNGアセンブラやDOSを知らなくてもバイナリエディタでキーコード書きかえるだけで済むじゃないか
0626デフォルトの名無しさん
NGNGMKY_UP_SBCS EQU 48E0H ;上方向入力時SBCSコード(↑)
MKY_DN_SBCS EQU 50E0H ;下方向入力時SBCSコード(↓)
MKY_LB_SBCS EQU 1C0DH ;左ボタン入力時SBCSコード(Return)
MKY_RB_SBCS EQU 011BH ;右ボタン入力時SBCSコード(ESC)
moukey.comファイル
$0030: 05B8 0D1C EB07 A802 7423 B81B 011E 53BB
$0032 にある $0D1C がマウス左ボタン用、リターンキーのコード
$003B にある $1B01 が右ボタン用のEscキーのコード
みたいです。
この部分を変更したいキーのコードに書き換えれば
マウスボタンのキーの割り当てが変更できると思います。
が、キーに対応するコードが分かりませんね。
$0D, $1B はリターンキーとEscキーのコードですが$1Cとか$01がくっついてるんで
何か資料がないと…
06278086使った事ない
NGNG(1) キーコードを調べて左右キーのコードを定義する。
MKY_UP_SBCSEQU48E0H;上方向入力時SBCSコード(↑)
MKY_DN_SBCSEQU50E0H;下方向入力時SBCSコード(↓)
MKY_LF_SBCSEQU****H;左方向入力時SBCSコード(←)
MKY_RG_SBCSEQU****H;右方向入力時SBCSコード(→)
(2) 元のコードの91〜94行目の
MKY_ME_LCHK:
CMPByte Ptr[BP+MOUSEINF.X],0;無意味なキー入力を避ける為
JNZMKY_ME_LAST
TESTAL,01H;左ボタン
を下のように書き換える。つーか資料がないので全然分かりませんが。
MKY_ME_LCHK:
CMPByte Ptr[BP+MOUSEINF.X],0;X方向動作チェック
JZMKY_ME_LCHK_0
TESTAL,**H;X方向の符号 ← これも資料をあたって調べないと。
JNZMKY_ME_MINUS_Right
DB0B8H;MOVAX,MKY_LF_SBCS
DWMKY_LF_SBCS
JMPMKY_ME_KWRT
MKY_ME_MINUS_Right:
DB0B8H;MOVAX,MKY_RG_SBCS
DWMKY_RG_SBCS
JMPMKY_ME_KWRT
MKY_ME_LCHK_0:
TESTAL,01H;左ボタン
0628627
NGNGつか、上下チェックでやってるコードを参考に
左右チェックのコードを書き加えれば動くんじゃないかなと。
ソースの75-90行あたりに上下チェックのコードが書かれてます。
0629デフォルトの名無しさん
NGNGhttp://www.asahi-net.or.jp/~bg3k-ysd/pocketlinux/src/keycode.txt
実際はDOSの内部バッファの2バイト形式なのでESCとRETがちょっと違うけど
左右はscancodeのままでよいので問題無し
0630デフォルトの名無しさん
NGNG>僕はアセンブラもDOSもダメです。
じゃあ諦めろよ。
それとも何か?「誰か改造して!」っていう依頼なのか?
0631デフォルトの名無しさん
NGNG非常に疑問だな。そもそもアセンブラとリンカはあるのかな?
0632デフォルトの名無しさん
NGNGワロタ
0633リブポイントゲーマー
NGNGありがとうございます。
これからアセンブラを始めてみます。
フリーのコンパイラとかあるんですかね?
ヤフオクで中古のコンパイラ捜すのもいいかな。
ターボーアセンブラのDOS/V版とかがいいのかなー
0634デフォルトの名無しさん
NGNG主要部分は50行程度だ。
0635デフォルトの名無しさん
NGNG>>578
display/i $pc
を試してみよう
0636デフォルトの名無しさん
NGNG例えば、
addw $1234,%ax ならCODE領域に格納する際に
6605 3412 です。6605がaddw、3412が1234を表す。
しかし、%axは、CODE領域に格納されていないように見えるのですが。
いったい、どういうふうに格納されているのでしょうか?
%axも数字にしないとどこに格納するかっていう情報がわからないと思うんですが。
0637デフォルトの名無しさん
NGNG8086?
8086は知らないけど6605に含まれてるんじゃないの?
addwを指定してるのは上位xビットで、
どこかの3ビットでレジスタを指定しているとか
そんな感じでオペコードは作られてるから。
addw $1234,%bx
とかしたら6605の方が変化するんでない?
0638デフォルトの名無しさん
NGNG66 はサイズオーバーライド プリフィックス。
05 が add eax,〜
まぁ、結果的には変わらないが、念のため。
で、問題のaxの情報は、05 (axに特化した命令コード)の中に含まれる。
他の16Bitレジスタだと、05のところが 81 ?? になるんで、試して見るよろし。
ちなみに、例示されてるコードはこの81 ?? を使って 66 81 c0 34 12 とも表せるが、
長いのでメリット無し
0639デフォルトの名無しさん
NGNG>>638さん
どうも、レスありがとうございます。05にaxの情報が入るんですね。
最近、アセンブラを勉強し始めて最初につまったところです。
ほかの16ビットレジスタでも確認をしてみようと思います。
0640デフォルトの名無しさん
NGNGいくつかの計算命令で専用のコードが用意されてることがあるのです。
0641デフォルトの名無しさん
NGNG>display/i $pc
>を試してみよう
なんてCooooooooooooooooooLなんだ!!
私は今感動している!!
ありがとう!>>635
PS.ちなみに私は>>578ではないのであしからず。
0642デフォルトの名無しさん
NGNGめでたいな
0643デフォルトの名無しさん
NGNG斡旋ブラ
好評発売中!
0644デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNG汗ブルマ
0646デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNGそれなのにどうしてウインドウズのAPI呼び出したり
ウインドウやアイコンを表示したりできるのさ?
CPUの世界にはAPIもGUIも無いはずなのに
0648デフォルトの名無しさん
NGNG0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNGCR EQU 0DH
LF EQU 0AH
EOS EQU 00
ORG 100H
LD HL,MESG
LOOP:
LD A,(HL)
OR A
RET Z
PUSH HL
CALL CHROUT
POP HL
INC HL
JP LOOP
0651デフォルトの名無しさん
NGNGLD C,2
LD E,A
CALL BDOS
RET
MESG:
DB CR,LF,'あぼーん',CR,LF,EOS
END
0652デフォルトの名無しさん
NGNGウ
コン
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG>>643のPCはwindowsとCPUがバラバラに動いてるから
0657デフォルトの名無しさん
NGNGそれはマシン語からOSのAPIを呼び出せる理由の説明にはならない
0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNG>>643は馬鹿などでは無いと言いたげだな
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNG世間でもアセンブラでWin32は無理とか言われてるし
0662デフォルトの名無しさん
NGNG0663デフォルトの名無しさん
NGNG655 名前:デフォルトの名無しさん[sage] 投稿日:04/05/17(月) 21:07
>>643はCが何を吐いてるのか知らない馬鹿
656 名前:デフォルトの名無しさん[sage] 投稿日:04/05/17(月) 21:08
>>655
>>643のPCはwindowsとCPUがバラバラに動いてるから
の自作自演がバレてるよねw
0664デフォルトの名無しさん
NGNGでもってAPIはDLLファイルに入っている関数でアルファベットの名前も付いてる
どうして01010101みたいな数列でファイルの中のプログラムを呼び出せるのさ?
0665デフォルトの名無しさん
NGNGO S
0666デフォルトの名無しさん
NGNGRECT rect;
__asm {
push hWnd
lea eax, rect
push eax
call dword ptr GetClientRect
}
_RPT4(_CRT_WARN, "(%d,%d)-(%d,%d)\n", rect.left, rect.top, rect.right, rect.bottom);
}
めっちゃ呼べるけどね...。
0667デフォルトの名無しさん
NGNG>世間でもアセンブラでWin32は無理とか言われてるし
無理ではないと思うよ。無茶かもしれないが。
http://www.vector.co.jp/soft/win95/hardware/se254476.html
0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNG>でもってAPIはDLLファイルに入っている関数でアルファベットの名前も付いてる
それもマシン語なんだが
0670デフォルトの名無しさん
NGNG>>664
一度、アセンブリコード付きのコンパイルリストを出してみろ。
0671デフォルトの名無しさん
NGNG俺は知らんけど。
文字列をOSに渡してOSは指定されたものをメモリ上にロードして
よろしく実行してくれるんじゃないの?
0672デフォルトの名無しさん
NGNGで、アセンブラコード吐けるんじゃなかった?
APIを使ったプログラムをCで書いてアセンブラではいたら、出て来るんじゃない?
0673デフォルトの名無しさん
NGNG正 bcc32
0674デフォルトの名無しさん
NGNG扱いがちょい違うよね。
0675デフォルトの名無しさん
NGNGできるけどめちゃくちゃ面倒なんで無理って言われているだけでできないわけじゃない。
http://www7.plala.or.jp/keny01/masm/103-05.html
プログラム(アセンブリ、Cその他何でも)からAPI呼び出せるのは、
リンクした後のEXEファイル内にDLLを呼び出すコードが埋め込まれるから。
そしてプログラムではそのコードを呼び出す形になっている
(ただしGetProcAddressの場合は別)
0676デフォルトの名無しさん
NGNGそっとしとけよ。
0677デフォルトの名無しさん
NGNGCのスタートアップを自力で書いたりしてくれないと、
アセンブラできるとは言って欲しくない。
0678デフォルトの名無しさん
NGNG全部Cでできるな
0679デフォルトの名無しさん
NGNGお前なんかPICに引き篭ってろ
0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG値を、0,1,2,3・・・255の値で埋めるというプログラムを教えてください
最初はORG8000Hってかんじです。お願いします。
0682デフォルトの名無しさん
NGNGそんな難問ここにいる香具師に解かるわけないじゃん。
自分で考えたほうが早いって、絶対。
0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG0685682 != 661
NGNGたぶん俺にだよな?
681 に対して助言半分、厭味半分のつもりだったんだが。
0686デフォルトの名無しさん
NGNG0687682
NGNGお子ちゃまはもう寝なさい(大笑い
0688デフォルトの名無しさん
NGNGORG $8000
LDX #$9000
CLRA
LOOP STA ,X+
INCA
BNZ LOOP
RTS
0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG○ BNE LOOP
だったか。
>689
久しぶりに書いてみてぇ、とか思ったんで。
0691デフォルトの名無しさん
NGNGもう少しだけ論理のお勉強をしなさい
0693デフォルトの名無しさん
NGNGORG8000H
LD HL.9000H
LOOP:
LD (HL),L
INC L
JR NZ,LOOP
RET
0694デフォルトの名無しさん
NGNGということで、正しいかどうかわからないけど勘で
LD HL,9000H
LD B,0
LOOP1:
LD A,R
CP 122
NOP
JR NZ,LOOP1
LOOP2:
LD A,R
OR B
LD (HL),A
INC A
AND 80H
LD B,A
INC L
NOPを126個
JP NZ,LOOP2
RET
0695デフォルトの名無しさん
NGNGINC L
LD A,L
OR A,A
JR NZ,LOOP
としないといけない。 INC L ではPSWのZフラグは変化しないから。
>>694はなんか勘違いっぽい。
0696デフォルトの名無しさん
NGNG682 != 661→true(1) or false(0)、そしてレス番0はありえないから1と。
0697デフォルトの名無しさん
NGNGストアする場所がchar[256]であるようなもう少し一般性のある問題にも通用するような
コードの書き方をするなら、>>688みたいにストアする内容はAを使うほうがよい。
ORG8000H
LD HL.#変数<----char array[256]だとしたら#array
SUB A,A
LOOP:
LD (HL),A
INX HL
INC A
OR A,A <----INC A でフラグが変化するかしないか未確認なので入れておく
JR NZ,LOOP
RET は「8000H番地から始まるサブルーチンを書け」とは言ってないから必須ではない
0698デフォルトの名無しさん
NGNGORG 8000H
LD HL,TBL
LD DE,9000H
LD BC,0100H
LDIR
JR *
TBL:
DEFB 00H,01H,02H,.....FFH
0699デフォルトの名無しさん
NGNGORG 8000H
LD HL,9000H
LD (HL),L
INC L
…(上の2行を合計255回繰り返し)
LD (HL),L
0700デフォルトの名無しさん
NGNGORG 8000H
LD SP,9100H
LD HL,FFFEH
LD DE,FDFEH
PUSH HL
ADD HL,DE
…(上の2行を合計127回繰り返し)
PUSH HL
0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNG・INC r (8bit) ではCは変化しない
・INC ss (16bit) ではどのフラグも変化しない
0703デフォルトの名無しさん
NGNGORG9000H
DATA 00H,01H,02H,...
ロードした瞬間にできあがってる。
0704デフォルトの名無しさん
NGNGかのコンパイラー入れてるけどどうやら関係なさそうなうえに
日本語なんでDosの標準装備だと思われる。9ってコマンドがあって
?を入力するとアセンブリっつうコマンドがあったけどあれで
アセンブリ言語アセンブリできるの?
asm初心者なんで意味不明だったらスマソ。
0705デフォルトの名無しさん
NGNG、-‐一ァ '' ´  ̄ ``ヽ 、
< / /,.ィ ,.. \
L,r'/,rT,フメ/ { ,ィ ヽ─-- 、.._
/ 7/,r',r- ヽ lフTト、 ! l \ー-
{ (/ { {::::::::::} ,r ,ニヽレメ ! } \
. Y ヽニニン { {:::::::::} } | / ,' r-
/{ ゝヽ::ソノ !ニYヽiヽ}
∠ ヽ ,. 、.. ``"" /ノ ノ
└┐/\ ゝ、...) ,.、../
´ /( ー ..... ィ'´ l
,r':::::::::ヽ、_ ,ノ::ヽ Vヽ、ヘ}
/:::::::::/` ー-‐´}::::l
. /:::::::::::| l::::::|
0706デフォルトの名無しさん
NGNG意味不明なのは、asm初心者だからでは無いような気がする。
試しに、日本語に翻訳してみた。
>うちのWin9x系PCのDosプロンプトにdebugというコマンドがあります。
>日本語でメッセージが表示されるので、C/C++やJavaとは関係ない
>Dos標準のコマンドだと思います。
> debugを起動してから、? を入力するとコマンド一覧が表示されますが
>その中にアセンブルというコマンドがありました。このdebugを使って
>アセンブリ言語をアセンブルすることが出来るのでしょうか?
0707デフォルトの名無しさん
NGNG大抵のPCには入ってるでしょうね。<debug
16bit 命令しか受け付けない上に
ワンステップアセンブラなのでラベルは使えません。
DOS 時代のデバッガですからねえ。
0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG…あ、9はとじ括弧なのか。
よく解読できたな。
0711デフォルトの名無しさん
NGNGあんたも、すごいよw
0712デフォルトの名無しさん
NGNG元は「多少冗長だけど、普通に意図は理解できる文章」なのに、
")"を"9"に変えただけで、これほど
「何いってんだか全然わけわかんねえ文章」になるなんて。
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG>>703 ワラタ そのすぐ後に704が来たから目立たなくなったが。
0717デフォルトの名無しさん
NGNGマジレス
http://www79.sakura.ne.jp/~third/programming/asm/assembly.html
0718デフォルトの名無しさん
NGNGOS がどんなキーボード(101 106 109 等)だと思っているかって話ですよね?
少なくとも『刻印』は関係ないんじゃないかと……(^^;
0719デフォルトの名無しさん
NGNGvoid f();
int g(int a, int b)
{
if ( (a -= b) > 0 ) f();
return a;
}
これについて、Borland C++ 5.5.1 で bcc32 -S -O2 -6 test.cpp の場合
push ebp
mov ebp,esp
push ebx
mov ebx,dword ptr [ebp+8]
;
;{
; if ( (a -= b) > 0 ) f();
;
sub ebx,dword ptr [ebp+12]
test ebx,ebx
jle short @2
call @@f$qv
; return a;
@2:
mov eax,ebx
;}
sub の時点でのフラグを使えば test をするまでもないと
疑問に思ったのですが、どうなんでしょうか?
0720デフォルトの名無しさん
NGNGgcc -S -O2 test.c
(gcc 3.3.2 AT&T形式)
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $4, %esp
movl 8(%ebp), %ebx
subl 12(%ebp), %ebx
testl %ebx, %ebx
jle .L2
call f
.L2:
movl %ebx, %eax
確かにtestなくてもいいよな。
試しにtestを削除してやっても、まったく問題なく動作する。
う〜む。
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNGvectorで「Z80CPU Assembler & Simulator」ってのを見かけたので
落として使ってみてるんですけど、解像度が低くて美味しくありません。
何か他に便利なフリーソフトはないでしょうか?
0723722
NGNG当方の解像度がSVGAでソフトの方がSXGA推奨なので orz
0724デフォルトの名無しさん
NGNG真のアセンブラマスターになるのに環境にこだわってはいけない。
未踏のジャングルを突き進む探検家や未知の洞窟を探索する冒険家のように
その場にあわせた環境に適応して生きていかねばならない。
0726名無し@沢村
NGNGいまDLしてるところで、まだ開けて見てないんだが、Webでの説明を見た限りじゃなんか良さげだった。
つーか、GUIに関しては、Visual C++よりもちゃんとしたGUIアプリが簡単につくれるとのことだ。
ただ計算的な処理には不向きということだが、そこは何かC言語で書いて追加できるとのことだ。
おれはちょっとこのtcl/tkを調べてみるが、ホントにGUIに関して良さげだったら、いま開発中の「Vicual E++」は、
このtcl/tkで書き直してもいいな。Visual C++じゃエディタの予約語の色づけとかチョー面倒だしな…
そして内部のメインの処理だけをC言語で書くようにすればいいからな…
それができそうかどうかをまず調べてみようと思う。
次に調べたいことは、おれが次につくりたい高級言語に、tcl/tkはオープンソースらしいから、パクレる部分があるかどうかということだ。
ともあれ、おれのコンパイラの開発は飛躍的に前進しそうだな。
おまいらよ、おれはtcl/tkいま知ったぞ。おまいらは、tcl/tk知らなかっただろう?
0727デフォルトの名無しさん
NGNG0728デフォルトの名無しさん
NGNGtcl/tkはインタープリタですが
●●●●TCL/TKなら俺に聞け●●●●
http://pc5.2ch.net/test/read.cgi/tech/1033628416/
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNG何となく検索してみた。
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=compile+a+gui+application+with+tcl%2Ftk+compiler+under+open+source+license&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
0731デフォルトの名無しさん
NGNGhttp://www.google.com/search?q=%22tcl%2ftk+interpreter%22
http://www.google.com/search?q=%22tcl%2ftk+compiler%22
0732デフォルトの名無しさん
NGNGtestがある時とない時ではオーバーフローしたときの結果が違うヨ
a = 0x7FFFFFFF, b = -2
なんてのは試してみた?
0733732
NGNG>0のかわりに>=0を使った場合はtestを削れるような
コンディションコードがある
0734デフォルトの名無しさん
NGNGCの場合、intとintの演算結果はintになるからややこしい。
0736デフォルトの名無しさん
NGNGえっ、以下になるので結果はあってるんでは?
2147483647(0x7FFFFFFF) - 4294967294(-2) = -2147483647(0x80000001)
結果、f()は呼ばれない。
0738デフォルトの名無しさん
NGNGtestあるなしで、>>732の場合結果は変わる。
デバッガで確認してみればいい。
0739デフォルトの名無しさん
NGNGwinasmなどがありますね・・・(windows apprication を作るIDE)
リソースもマウスでできるし、invoke命令も簡単に(invoke はMasm32
のApiCall命令)利用できるようになっていますし、簡単に自分好みの
IDEに作り変えることができますし・・・
ほかのIDEについてはここを参照するといいでしょう
ttp://board.win32asmcommunity.net/
ここのIDE(ただし全文英語)という欄を見ればたくさん面白いものが
のってますよ。
0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGまぁ、説明を読んでください。全部ではないですが、APIの自動検索
もできますしね。
しかし、浮動小数点を実数で(つまりopenglなどの関数で、
invoke glcolor3f,0.1f,0.1f,0.1f
というように小数点をそのまま使うとエラーになり、.dataセグメント内でほかの代数で
たとえば
.data
3dvector real4 <1.0,0.0,0.0,0.1,0.1,0.1,1.0>
などとして<>内は<vectx,vecty,vectz,x,y,z,α,>
など、vectx,y,z=は単位ベクトルの方向、x,y,zはベクトルの原点
などとして、 マクロを使って
coinvoke MACRO pInterface:REQ, Interface:REQ, Function:REQ, args:VARARG
LOCAL istatement, arg
FOR arg, <args> ;; run thru args to see if edx is lurking in there
IFIDNI <&arg>, <edx>
.ERR <edx is not allowed as a coinvoke parameter>
ENDIF
ENDM
IFIDNI <&pInterface>, <edx>
.ERR <edx is not allowed as a coinvoke parameter>
ENDIF
istatement CATSTR <invoke (Interface PTR[edx]).&Interface>,<_>,<&Function, pInterface>
IFNB <args> ;; add the list of parameter arguments if any
istatement CATSTR istatement, <, >, <&args>
ENDIF
mov edx, pInterface
mov edx, [edx]
istatement
ENDM
などとしているみたいですね。
0742デフォルトの名無しさん
NGNG追記(自己レス)
使い方は、たとえば、
coinvoke glvertex3i,addr 3dvector
などとしているようです。意味不明、&スレ汚しすいませんでした
0743MS
NGNGそこんとこヨロシク。
0744デフォルトの名無しさん
NGNG自分でリンカやコンパイラ作ったところを見ると、(商標違反っぽいが)
違法なのかどうかあいまい(MSがあるのは訴訟国家アメリカなのに)
微妙っぽいですね。
0745デフォルトの名無しさん
NGNG与えられないものなんでしょうか?(そこのところ良くわからないです)
デルフィをだしているボーランド社もまた別のライセンス契約しているんでしょうか?
まぁスレッドが荒れるならこれ以上言及しませんが、とても疑問に感じました。
0746デフォルトの名無しさん
NGNGmasmって商標じゃないって事かなー?
0747デフォルトの名無しさん
NGNG下の関数をアセンブラにしたいのですが、うまくいきません。
voidblendbmp( LPDWORD bmp )
{
intx, y; LPBYTEwork, work2; BYTEa, b;
work2 = (LPBYTE)bmp; work = (LPBYTE)lpScreen;
for( y=0 ; y<480 ; y++ ){
for( x=0 ; x<640*4 ; x++ ){
a = *work; b = *work2; a = a/2; b = b/2;
*work = a + b;
}}}
アセンブラ化
_asm{
mov ebx,bmp mov edx,lpScreen mov ecx,480 mov ah,2
LY:
push ecx mov ecx,640*4
LX:
mov eax,[edx] div ah mov bl,al mov ah,2 mov eax,[ebx]
div ah
mov cl,al
add bl,cl
mov [edx],bl
LOOP LX pop ecx LOOP LY }
0748デフォルトの名無しさん
NGNG改行していないところだとおもうんですが、
mov eax,[edx]
mov edx,lpScreen
という風にしないと認識しなかったはずでは?(ほかの箇所も同様)
0750719
NGNG>a = 0x7FFFFFFF, b = -2
subのラインにブレイクポイントをしかけて、
testのラインをハイライトにしてポップアップメニューから
Binary -> Fill with NOPs
をやったり
(そのNOP置換を)UNDO
をやったりしました。
Jump is taken もしくは Jump is NOT taken となって
挙動が変化するようでした。
変化することは確認できたのですが、なぜこうなるのかわかりません。
どこらへんにブレイクポイントをしかけて、レジスタやスタックのどこを
注目すればいいのでしょうか?
それから、キャリーフラグとオーバーフローフラグは何が違うのでしょうか?
0751デフォルトの名無しさん
NGNGようやくきづいた
div命令の使い方をまちがってる,
div命令はaxを対象としているので除算エラーが出る
よってshift命令を使うのが正解。
shr eax =eax/2と同じ(実際にやってみるといい)
>>749さまへ
しまった・・・Lanケーブルで首つってきます…はづかしい
0752デフォルトの名無しさん
NGNGtest ebx,ebx
jle short @2
って
sub ebx,dword ptr [ebp+12]
js short @2
でもいい感じがするけど。
0753752
NGNG忘れてくれ
0754デフォルトの名無しさん
NGNG今更理解したYo…。
0755デフォルトの名無しさん
NGNGなるほど。単純にSFが1かZFが1の時にジャンプが目的なのね。
でした。。
0756デフォルトの名無しさん
NGNG気にせずにどうぞ。
0757デフォルトの名無しさん
NGNG(a-b)>0 と a>b の違いを知らないのはやばいだろ。
0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNG↓アセンブラ板のスレッド一覧よろ。
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しつぁん
NGNG0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNGNASM>>>>>>>MASN=糞w 0x02
CASLって頭悪すぎ(激藁
0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNG0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNGそれ見て学んでください。(シフト、ローテート命令など見てください)
ActiveX?そんなことよりもっと楽しい事ができますよ。
(考えない人にはわかりませんが)
敗北者?C言語がコンパイラによってアセンブラに翻訳されて、ようやくコンパイルするのに?
ハードウェア作る人にとってはC言語だけでは何もできんよ!(大きくて重くて)
何でそんなことがわからんとですか!
うーん貴官はよっぽど懲罰大隊がお似合いのようだ!それともシベリア送りか?
0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNGお前ら Motorola 56kのアセンブラ助けて(;´Д`)
0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNG0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNG0784デフォルトの名無しさん
NGNG話すこともないな。
0785デフォルトの名無しさん
NGNG次スレどこ〜?
0786デフォルトの名無しさん
NGNGもちつけ
0787デフォルトの名無しさん
NGNG0788名無し@沢村
NGNG実はおみゃーらよ、今度のバージョンから密かに裏機能をつけているのだ。
どんな裏機能だと思う?ふふふ…教えん!自分じ探せ、おみゃーらよ!
http://hp.vector.co.jp/authors/VA015412/
0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNG股間
0791デフォルトの名無しさん
NGNGそれが問題だ。
0792デフォルトの名無しさん
NGNG0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNGそれなのにどうしてcall MessageBox〜とか中に書いて動くの?
0796デフォルトの名無しさん
NGNG読んだ方いますか?どうでしょう?
ttp://www.amazon.co.jp/exec/obidos/ASIN/4062606194/qid=1086178123/sr=1-7/ref=sr_1_10_7/250-3639103-1268207
0797デフォルトの名無しさん
NGNG実際にはもうちょっと複雑だったりする。
いや、とんでもなく複雑だが。
いま話題がネタスレのスレタイ以外なさげなので
厨房質問大いにOK
だとおもわれ
0798名無し@沢村
NGNG「Visual E++」に裏機能をつけたってな…わかるかな?
おみゃーらよ、それはマシン語とアセンブリ言語のハイブリッド化だったのよ。
まあ、アセンブリ言語のほうは、まだcall、ret、jmp、intの4つにしか対応してないけどな…
これから日々少しずつハイブリッド化を進行させる予定よ。
おみゃーらよ、このプロジェクトが完成した暁には、マシン語だけでも書け、アセンブリ言語だけでも書け、
またマシン語とアセンブリ言語をどんなふうに組み合わせても書ける、前代未聞の恐るべきプログラミングソフトができあがるぞ!!
自分じダウンロードしちみれ?おみゃーらよ?
http://hp.vector.co.jp/authors/VA015412/
0799デフォルトの名無しさん
NGNGハイブリット化よりアイコン書換れ。
08008086使った事ない
NGNG6809のBSRかJSR相当だとするなら
「現在のインストラクションポインタの値をスタックに退避してから
指定されたアドレスにジャンプする」という命令だと思う。
どこにジャンプするかの指定がcallの後に書かれる訳だが、例えば
call 0x1000
とすれば0x1000番地にジャンプするのだろう。
で、問題のcall MessageBox〜だが、この場合はその飛び先の指定に
ラベルが使われているだけで、ラベルの値はどこか別な所で
定義されているんだろうと思ふ。
MessageBox〜の値が0x1000と定義されていれば
0x1000番地に、MessageBox〜を処理するサブルーチンが
置かれているのだろう。
0801デフォルトの名無しさん
NGNGこいつはタダのバカですね。(^^V
(アセンブラやマシン語の前に日本語勉強しれ)。
0802デフォルトの名無しさん
NGNG人工知能作ろうと思ってあ〜る読むよりは役に・・・立たないな。
0803デフォルトの名無しさん
NGNGアセンブラ自体をCPUが読んでるわけじゃなし、結局吐かれるバイナリはCと同じ扱い
0804デフォルトの名無しさん
NGNG言いたい事はわかったからまずソース出せ。
話はそれからだ。
0805デフォルトの名無しさん
NGNG凄いものを欲しがりますね
0806デフォルトの名無しさん
NGNGハイブリッド化が何を意味するのか分からん。
0807デフォルトの名無しさん
NGNGMessageBoxを実際のアドレスに直すのはリンカとローダの仕事。
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNG>call 0x1000
>とすれば0x1000番地にジャンプするのだろう。
正確には、インストラクションポインタ+1000h。つまり相対アドレスだけどね。
0810800
NGNGじゃあBSRの方か。サンキュ。
0811デフォルトの名無しさん
NGNG動き等がわかりやすい実行環境ってどうすればいいですか?
0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNGレジスタとかの動きがわかりにくいかどうかは君の理解力の問題だ。
CPUの状態をいちいち確認しながら動かしたいならデバッガ使え。
0814デフォルトの名無しさん
NGNGでも、フリーでお願いしたいんですけど、ありますか?
0815デフォルトの名無しさん
NGNG8086なら debug.exe でレジスタの値を見ながらステップ実行出来るが。
0816デフォルトの名無しさん
NGNGレジスタから転送してる様子とか
0817デフォルトの名無しさん
NGNGつ│.. GNU Visual Debugger..│
.└──────────┘
0818デフォルトの名無しさん
NGNGdebug.exeがあれば問題ないのですが…
どうしたら手に入るのですか?
0819デフォルトの名無しさん
NGNGOSが2000かXPならコマンドプロンプト開いてdebugと入力してみな。
0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNG漢ならカーネルデバッガ。
物理アドレスで暴れろ
0822デフォルトの名無しさん
NGNG0823デフォルトの名無しさん
NGNG「'debug'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
となります。 (OSはXPです)
>>821
よくわからんです(´・ω・`)
0824デフォルトの名無しさん
NGNG例えばブートローダとかOSそのものみたいなものなんだけど
普通にVCとかでコンパイルしてもOSの上でしか動かないし
0825デフォルトの名無しさん
NGNGPC起動した時にフロッピーの内容読み込むとか言う意味?
0826デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=7c00&hl=ja&lr=lang_ja
machineにもよるがな...
0827デフォルトの名無しさん
NGNG%SystemRoot%\system32\debug.exe
で起動できたらPATHが通ってない。
それでも起動できなかったら、これを使え。
ExDEB
http://www.vector.co.jp/soft/dos/prog/se008450.html
0828デフォルトの名無しさん
NGNGできました、ありがとうございます
普通の状態だとPATHは通ってるものなんですかね
こういうの始めようとしても最初で躓く人多いんじゃないかなぁ〜?
0829デフォルトの名無しさん
NGNG>ExDEB
よく使ったなぁ。しみじみ...
それ結構使えるよね。
0830デフォルトの名無しさん
NGNG普通、C:\windowsとかC:\windows\system32は初めからPATHに登録されてるはずだが…
0831デフォルトの名無しさん
NGNGそうなんですか…
昔、PATHを追加したときうっかり消してしまってたかもしれません。orz
0832デフォルトの名無しさん
NGNG日立のSH2ってCPUでのアセンブラを学びたいです。
コンパイラもないしどうすれば…
0833デフォルトの名無しさん
NGNGGCC
0834デフォルトの名無しさん
NGNGttp://home.t-online.de/home/Ollydbg/
おいておきます。
0835SH2ではないが
NGNGベクトル関係がすごい。面白い。
0836デフォルトの名無しさん
NGNGそれはDC専用だべ。(専用でもないか・・・)
いまならシェーダープログラミングでもっと楽しめますよ?
0837デフォルトの名無しさん
NGNGドングルを苦楽したいのですがヒントとかありますか?
callをnopにするとかdllファイルまでのたどり方とか
ぜひプロの方アドバイスをお願いします
0838デフォルトの名無しさん
NGNGプロから言わせて貰うと、ソフト買ってプロに金流れるようにしてください。
0839デフォルトの名無しさん
NGNGプロじゃないが、スレ違いだ
0840デフォルトの名無しさん
NGNGスレ違いですか・・・すいません
0841デフォルトの名無しさん
NGNG>ドングルを苦楽したいのですがヒントとかありますか?
本当のプロならこんな事ですらヌルすぎてやろうとも思わないはず。
こんな事に時間を使わずにもっと他の事やるよ。
0842デフォルトの名無しさん
NGNGhttp://www.renesas.com/jpn/products/mpumcu/32bit/sh/architecture/index.html#2
から、アプリケーションノートに行って、
CPU編アプリケーションマニュアルを隅々まで読むのが確実。
無償コンパイラとかの開発環境もダウンロードできる。
0843デフォルトの名無しさん
NGNGOSなしでCDやディスクの音楽再生できるのを作りたいのですが
どうやってアセンブルすればいいの?
0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG既存コードを短縮する定石は?
084619
NGNGアセンブラ… (;´Д`) ハァハァ
0847デフォルトの名無しさん
NGNG>>21
0848デフォルトの名無しさん
NGNG次世代のBIOSがそんな感じだね
0849デフォルトの名無しさん
NGNGメインメモリが1MBの環境でもVRAMが32ぐらいあればいけそうだ
0850デフォルトの名無しさん
NGNGこんなのをBIOSに頼らずに使いたいんでしょ。
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNGROMくらい焼けますが何か?
0853デフォルトの名無しさん
NGNG作ってくもらえないか?
またはそういう掲示板を教えてくれてもよし
0854デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1085867636/509
http://pc5.2ch.net/test/read.cgi/tech/1084544243/802
http://pc5.2ch.net/test/read.cgi/tech/1086612317/99
http://pc5.2ch.net/test/read.cgi/tech/1076157613/853
0855デフォルトの名無しさん
NGNG0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNGROMライタがあれば、プログラミングの知識がなくても焼けますなぁ。
お前程度じゃ、BIOS抜きには作れないだろう。
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNGそれなら汎用レジスタは8本のままで、ある命令は特定の
レジスタでないとダメとかいう制限もそのままなんですか?
0860デフォルトの名無しさん
NGNGいままでとおりです。
mul命令なら、被乗数がRAXで結果はRDX:RAXにはいる。
0861デフォルトの名無しさん
NGNGアムドへ逝ってデータシート拾って濃いと
ちうかぐぐればその手の資料は出て来ないか?
レジスタ(GPR)は64ビットが16本(SP含む)に拡張された。
XMM(SSEレジスタ)は16本に拡張された。
MULとかの制限は興味がないので覚えていないが
アドレシング、たいていのALUは対称的に使えたかと。
FP/MMXレジスタは64ビット8本のままだ( ・∀・ )
もちろんふつーの32ビットWindowsをインストールしている限りは縁のない話。
0862さっきゅん
NGNG命令によって使えるレジスタの制限は386とほとんど同じです。
AH〜DHレジスタと追加されたBPL,SPL,SIL,DIL/R8〜R15レジスタをひとつの命令で同時に
指定できないという新しい制限もありますが、xHレジスタ自体あまり使わないと思うので
こちらはほとんど問題にならないと思います。
# 覚えてないと稀にハマることがありますが・・・
また、拡張されたレジスタは従来のレジスタを使うより命令長が1バイト長くなることが多いので
スペース優先最適化をしたりパディング合わせをする場合は注意が必要です。
それらを踏まえ、SIL/DIL等の下位バイトレジスタが使えるようになった事でレジスタの価値は
ほぼ同列になり、汎用レジスタが2倍になった事でIA32よりも変数を多く使うプログラムが書きやすい
アーキテクチャになったと思います。
0863デフォルトの名無しさん
NGNGグラフィックが使えません。
0864さっきゅん
NGNG正確には64ビットOSでも32ビットアプリからは拡張されたレジスタは使えません。
この辺は386で拡張されたレジスタとまったく事情が違います。
しばらくは、286や386がそうだったように、Athlon64も高速i386としてしか使われないでしょう。
さいごに拙作ですが64ビットのDOSっぽいOSを作ってるので宣伝しておきますね
http://sakyu.s39.xrea.com/
0865デフォルトの名無しさん
NGNG0866デフォルトの名無しさん
NGNG( ゚д゚)ハッ!この書き込みにデジャビュ
0867さっきゅん
NGNG/ ̄ ̄\
/xxx (,,゚Д゚) <呼んだ?
lxxx (ノ l)
ヾxx xメ
U"U
0868デフォルトの名無しさん
NGNG高速i386では無くて、
「内部ポート構造とパイプライン構造の違うPentium4として」、
でしょう。MMX/SSE/SSE2命令は取り敢えず使えますから。
ただし、内部ポートの構造が違うことを認識していないと、
高速化しようと思って、逆にIPC詰まりを起こすことになるので注意。
…内部ポートの構造といえば、
Dothanのアーキテクチャの資料が見つからないなぁ。
PentiumM自体は、Baniasのときにチラッと見た覚えが有るんだけど。
0869さっきゅん
NGNGたしかにMMXとかSSEとかわ386じゃないですね
0870デフォルトの名無しさん
NGNG0871さっきゅん
NGNG0872デフォルトの名無しさん
NGNG0873デフォルトの名無しさん
NGNG本当に必要なソフトのために開けとくってのは手かも
0874デフォルトの名無しさん
NGNGそういえば裏レジスタを割込み専用にしてクロック稼いだな
0875デフォルトの名無しさん
NGNG>AH〜DHレジスタと追加されたBPL,SPL,SIL,DIL/R8〜R15レジスタをひとつの命令で同時に
って、「movsx R15,ah」のような使い方ができないってこと?
0876デフォルトの名無しさん
NGNGOSのカーネルごときがバンバン使ったら死ねるんですけど
0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNGそうらしい。今AMD64のPDF見ていたが、REXプリフィックス(0x40〜0x4f)というのが
新設され、これはBPL,SPL,SIL,DIL/AH,BH,CH,DHの切り替え及び、オペランドサイズ
32bit/64bitの切り替えに用いる。
つまりx86-64のint型が32ビットになった理由はオペランドサイズを64ビットにするには
REXプリフィックスが必要であり、命令長が1バイト大きくなるためであると考えられる。
これはもちろん設計段階で逆にする事も可能だったろうが(386の考え方で言えばそう
なったはず)64ビットのintというのはそうそう使われる機会がないのとやはりメモリ効率
であろうと推測される。32ビット→64ビットの過渡期にはあり得る選択だ。
そしてもちろんBPL〜DILとAH〜DHをREXプリフィックスで切り替える事なしにオペコード
を作る事も可能だったろうが、できるだけバイト長を短くするために、滅多に同時に使われ
る事がないであろう両者を切り離してしまったのだろうと推測される。そしてもう一つ大きな
必要性は、REXプリフィックスを何とか1バイト長で済まそうと考えたところにあるらしい。
アドレスモードは64ビットモードとコンパチビリティ・モードがあるが、大半は64ビットモード
でアクセスするため、アドレスサイズ切り替えプリフィックスは不要になっている。何とも
ややこしいオペコードマップだ。
0879デフォルトの名無しさん
NGNGではかえってパイプラインストールの原因となるためなるべく使わない事が推奨されて
いるが、それを思い切って削って使用したのはさすがAMDらしい。Intelならまずしなかった
だろう。INC/DECは無くなった訳ではなく2バイト命令になった。
0880デフォルトの名無しさん
NGNG↑↑x86-64がケチョンケチョンにけなされております。
0881859
NGNGOS作ってんですねスゲエ
宣伝されていたサイトを拝見しました
0882デフォルトの名無しさん
NGNG・HSPに関係の無い話題でスレッドを上げまくる
・HSPオフィシャルサイトの住人を名指しで誹謗中傷する
・重複スレを乱立させる
などの荒らし行為を行っています。
みんなで団結してム板のゴミどもを追い出しませんか?
【HSP関連スレ】
【皆のレイプ魔】HSP初質P25【WWEヲタ=ハゲ】
http://pc5.2ch.net/test/read.cgi/tech/1086878505/
HSP>>>>>>>>>>>>>C=糞w
http://pc5.2ch.net/test/read.cgi/tech/1071899663/
今日もどこかでHSP初心者が質問ですP19
http://pc5.2ch.net/test/read.cgi/tech/1084089079/
HSPについて
http://pc5.2ch.net/test/read.cgi/tech/1085149790/
0883名無し@沢村
NGNGおみゃ〜らさーーーーーーーーーーーーーーーーーーーーんっ!!!
http://hp.vector.co.jp/authors/VA015412/
「Visual E++」がねーーーーー
ついにメインウインドウをつくれるようになったよーーーーーー
きゃあーもううれしいーーーーーーーーーーーーーっ♪
おみゃ〜らーーーーーーダウンロードしてみちみれ。
そして「winsample」フォルダの中のMainsample.asmを「Visual E++で」開いちみり♪
そしてビルドツールバーを押して、次に実行ツールバーを押しちみり♪
ねーーーーーーー?ちゃんとメインウインドウが出てきたでしょ?ちゃんとエラーもないっしょ?
もうおれ天才ーーーー神ーーーーーーーーーー
おみゃ〜らーーーーーーーーーーーーーーーはあはあ…
0884デフォルトの名無しさん
NGNGEって何? Executableか?
0885デフォルトの名無しさん
NGNG0886デフォルトの名無しさん
NGNGんなわきゃねーじゃん。
一年前まで『機械語』と『マシン語』を別物だと思ってた奴がつくったもんだぜ。
0887デフォルトの名無しさん
NGNGvoid func(void) { char x[256]; } のような関数を作成して gcc -O0 -S してみると、
func:
pushl %ebp
movl %esp, %ebp
subl $264, %esp
leave
ret
のように、自動変数用に264バイトもとられてしまいます。どうも、配列を宣言
したときだけ多めに取られるようです。int x; だけだと普通に subl $4 になります。
なんでこうなってしまうのか教えていただけませんか?
overflow対策?
0888デフォルトの名無しさん
NGNGhttp://www.codecomments.com/A86_Assembler/message201820.html
にかいてありまつた。 ('A`)ヴェノア。
0889デフォルトの名無しさん
NGNGただしバグはバグだが。
0890デフォルトの名無しさん
NGNG│ │ │王←沢村
─┼─┼─┼─┼─┤
│ │ │ │ │
─┼─┼─┼─┼─┤
│ │桂│桂│ │
─┼─┼─┼─┼─┤
│ │桂│桂│ │
─┼─┼─┼─┼─┤
0891デフォルトの名無しさん
NGNG俺はそれよりも16進数文字列を メ モ 帳 に「B4 09 ・・・」と書いて保存し
拡張子をtxtからcomに変えれば実行できると思ってるのを見て目が取れた。
http://hp.vector.co.jp/authors/VA015412/kaisetu/hello.htm
0892デフォルトの名無しさん
NGNG>俺はそれよりも16進数文字列を メ モ 帳 に「B4 09 ・・・」と書いて保存し
>拡張子をtxtからcomに変えれば実行できると思ってるのを見て目が取れた。
すんげーワロタ!!
それともネタなのか?
0893デフォルトの名無しさん
NGNGhttp://hp.vector.co.jp/authors/VA015412/kaisetu/ooemi.htm
の最後を見るに・・・
0894デフォルトの名無しさん
NGNGそして関数から戻る場合は最初に「pop」で取り出したアドレスをもう一回「push」してやらなければならないということだ。
(ここんところは、アセンブリ言語の入門サイトでさえ、間違ってるところがあるから、検索してみるといい♪)
http://hp.vector.co.jp/authors/VA015412/kaisetu/girl.htm
既存の概念にとらわれない斬新なコーディング手法だな・・・
0895デフォルトの名無しさん
NGNGそれ読んでたら寒気がしてきた。
それ書いてる奴っていったい何者?
0896デフォルトの名無しさん
NGNG結構な量を書いてるなぁ。
0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNG0899さっきゅん
NGNG幻なんだ
0900デフォルトの名無しさん
NGNG話題になってる場所教えれ。
俺がやりたいのは、32ビットアプリから64ビットDLLを呼び出すための約束事と
Linux, Cygwin で 64ビット実行形式.or.DLLをクロスコンパイルするノウハウだ。
Linux で Win32 PE をクロスコンパイルすることには成功している。
擦れ違いと言われないように念のため言い訳しとくが、
64ビットDLLだけアセンブラで書きたいというワケだな。
0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNG0903900
NGNG*** BFD does not support target x86_64-pc-pe.
うんこー
自分でやるか、あるいはバカ正直にDDK漁ってくるかー
(MSDN 加入してないよ〜ん)
0904デフォルトの名無しさん
NGNG>>894とか、正しくはどうなってるの?
0905デフォルトの名無しさん
NGNG長いことやってないんで忘れてるけど
mov bx, sp
mov ax, [bx+2]
とかやってたような気がする。
0906デフォルトの名無しさん
NGNGbpのセグメントがデフォルトでSSだからbpを使う事の方が多いんじゃないかな。
DS! = SSの環境ではどうでもいいことだが。
0907デフォルトの名無しさん
NGNGDS = SSな。
0908デフォルトの名無しさん
NGNGおいおい、それを言うならこうじゃねーか?
push bp
mov bp, sp
mov ax, [bp+2]
0909デフォルトの名無しさん
NGNG0910デフォルトの名無しさん
NGNG...バイナリエディタ使えば動くでしょう…ってそこが間違いですね。
(ただし拡張子を.comとか、.exeにして機械語を各OSごとのフォーマット、
及び使用しているCPUの命令を形式どおりに打ち込めば動くかもしれないですね)
>>908
そうなってるかもしれませんね。ただしAPIの中には返り値をスタックにおくものも有りましたよ。
また、APIは普通に値をプッシュした後、callしてもOKなような気がします。(tasm、masm**ではそうだった。)
また、xchg [esp+8],[esp](この命令使った事無いんでちょっとおかしいかも…)
としたあとpopしてるかもしれないのでわかりませんね・・・
ちなみに、bpやspを使うとエラーになります。
0911デフォルトの名無しさん
NGNG0912デフォルトの名無しさん
NGNGnewebがすげー重くなってんじゃねーか。
0913デフォルトの名無しさん
NGNG0914デフォルトの名無しさん
NGNGメモリどうしのxchg って出来なかったような気がする・・・が。出来たっけ?
>ただしAPIの中には返り値をスタックにおくものも有りましたよ。
ちと、disって見たいんで具体的なAPI名を希望。
あと、>>904からの正しいコードの話に追加なんだが、引数スタックを呼び出し先で破棄するのは
ret 2
とかやればいいんで、わざわざ自分でpush/popして調節する必要は無いっぽ
どうしても調整したいっていうんなら、例題の場合レジスタ上に戻るアドレスが有るんだから
pop bx
pop ax
〜〜
jmp bx
とpushせずにレジスタ経由でジャンプして戻るのが定石。
0915デフォルトの名無しさん
NGNGコード依存な不正アクセスじゃないのかと。
たまたまそこに値が入ってただけだろう?
0916デフォルトの名無しさん
NGNG>ret 2(32ビットの場合はret4)
なるほど!そういう手がありましたか…
>>914-915
wsprintfがそうみたいです。(APIじゃなかったっけ・・・)
masm**でコンパイルして、vkdebugで調べたら、espが変化しています。ほかのPCはどうか知りませんが、スタックが増えていました。
(これが原因でよくエラーが出ました)
そこで、スタックを見てみたら、0000000hとなっていました。仕方ないので、
前後でespをほかの変数に保存する方法を使用しています。
0917さっきゅん
NGNGcdeclとsdtcallについて小一時間勉強汁
0918デフォルトの名無しさん
NGNGrather than the standard call (_stdcall) calling convention. As a result,
it is the responsibility of the calling process to pop arguments off the stack, and
arguments are pushed on the stack from right to left.
In C-language modules, the C compiler performs this task.
注意 他の Win32 関数は標準的な呼び出し規約(_stdcall)を使いますが、
wsprintf 関数は C の呼び出し規約(_cdecl)を使います。その結果、
呼び出し側プロセスはスタックから引数をポップする必要があり、
引数は右から左へ向かってスタックへプッシュされます。
C 言語を使って作成したモジュールでは、C コンパイラがこのタスクを実行します
(呼び出された側がスタックをクリアします)。
0919デフォルトの名無しさん
NGNG>wsprintfがそうみたいです。(APIじゃなかったっけ・・・)
>masm**でコンパイルして、
いえいえ、USER32のAPIです。
>>917
鳥取もstdcallを小一時間typo汁
0920さっきゅん
NGNG0921デフォルトの名無しさん
NGNG0922デフォルトの名無しさん
NGNGアセンブラでタブブラウザを作りたいのだが
アセンブラからCOMのコントロールを使うにはどうすればいいんだ?
0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNGW2kはSSE
XPはSSE2使用
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNGさすがに無理だろ
0927デフォルトの名無しさん
NGNGそれは1つの命令でってこと? CPUによるよ!
0928デフォルトの名無しさん
NGNG面倒だがなー
0929デフォルトの名無しさん
NGNG引数の数が不定だと __stdcall は無理だろ。
スタックの開放はなんとかなるとしても
シンボルの“_<関数名>@<引数のバイト数>”が作れん。
0930929
NGNG○ 解放
0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNG0934デフォルトの名無しさん
NGNGmove.w #1,d1
muls d0,d1
0935デフォルトの名無しさん
NGNGlong kakezan( long a,long b )
{ __asm {
mov eax, a
mul eax, b
} }
// 乗算命令使わずに、とか言うなら別途書くけど。
0936935
NGNG乗除算命令、および条件判断を一切使わずに、
アセンブラで、整数の
a = b * c
を計算するプログラムを書け。
ただし、入力 b, c の有効精度は8ビット以上、
出力 a の有効制度は16ビット以上とする。
0937935
NGNG○有効精度
0938デフォルトの名無しさん
NGNG256x256の表があるものとしていいですか?
0939デフォルトの名無しさん
NGNG教えてエロい人
0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNGまだ1時間待ってくれ
今来たばっかりなんだ
0943935
NGNG0944935
NGNG0945デフォルトの名無しさん
NGNG\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < >>950盗り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( )
0946デフォルトの名無しさん
NGNG0947デフォルトの名無しさん
NGNG,,、,、,,, / \〇ノゝ∩ < 950とり合戦いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \ ぶーぶーぶー /
//三/|三|\ タリー
∪ ∪ (\_/)タリー タリー まだ早えよ〜
( ´Д) タリー タリー
/ つ (\_/) (\_/)ノ⌒ヽ、
(_(__つ⊂(´Д`⊂⌒`つ(´Д` )_人__) ))
0948935
NGNG;IA-32 version 8bit unsigned multiply a:16bit = b:8bit x c:8bit
macromul1bit
. add eax, eax
. sbb edx, edx
. and edx, ecx
. add eax, edx
mend
mul8x8:
. movzx eax, byte ptr b
. movzx ecx, byte ptr c
. shl eax, 24
. mul1bit; mul1bit; mul1bit; mul1bit
. mul1bit; mul1bit; mul1bit; mul1bit
. movword ptr a, eax
. ret
0949935
NGNGただし、レジスタリネームの障害になるような処理(シフトを1個にまとめた)してるんで、P4とかじゃ、
かなーリ遅いと思われ。Z80とか向けかなぁ。他のCPUで挑戦してみてちょ。
0950デフォルトの名無しさん
NGNG0952950
NGNGアセンブラ… (;´Д`) ハァハァ
http://pc5.2ch.net/test/read.cgi/tech/1087897801/
0953デフォルトの名無しさん
NGNG0954デフォルトの名無しさん
NGNGなるへそ
0956デフォルトの名無しさん
NGNGまあ、ニモニックの処理時間を計算しないと意味ないよな。
それをCPUが掛け算1個に内部で丸めてたらすごいがw
ただ、組み込みに使うようなCPUはビット操作は早いが演算は遅かったりするから
アセンブラいじってる人は使いたいんじゃないかな。
それ系のアセンブラアルゴリズム辞典とかもあれば読み物としても面白そうなンだがなぁ。
書いて出してよw
0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNG遅レスだが、命名規約もcdeclと同じになるの
0959デフォルトの名無しさん
NGNG画像ソフトを作成しているのですが、アセンブラで書きたいと思ったのですが、
いろいろ調べたのですが、よく分かりません
// asmcodeの所に、*rをxorするのを書きたいと思うのですが、
ポインタ内の値をそのまま、いじる方法はあるのでしょうか
asm("xor %0,0ffffffh" : : "r"(*r)); ではないですよね。
uchar *r(img.bits());
uchar *g(img.bits() + 1);
uchar *b(img.bits() + 2);
uchar *end(img.bits() + img.numBytes());
while (r != end)
{
// asmcode
*r = *r ^ 128;
*g = *g ^ 128;
*b = *b ^ 128;
r+= 4; g += 4; b += 4;
} //gcc
0960デフォルトの名無しさん
NGNG_asm{
mov eax,r
l1:
xor dword ptr [eax],808080h
add eax,4
cmp eax,end
jb l1
}
0961デフォルトの名無しさん
NGNGターゲットマシンがSPARCだったりしてw。
0962デフォルトの名無しさん
NGNG0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNG90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
0967デフォルトの名無しさん
NGNGdb '7777777777777777'
っての良く使ったっけ。逆アセすると
AAA
AAA
AAA
…
AAA
になるから、デバッグ時にとても見つけやすいんだな。
0968デフォルトの名無しさん
NGNG0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNG0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNGその手のネタだと0xdeadbeefが一番有名だと思うんだが。
0973デフォルトの名無しさん
NGNGmov dword ptr [ecx+08],deadbeaf
mov dword ptr [eax+30],facedead
mov dword ptr [eax+30],deadface
なんてのがでてきた。
0974デフォルトの名無しさん
NGNG0975うめたいんでアゲ
NGNG当時はネットなんぞはやる余裕もなかった。
0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNG>>973のヤツは実はWindowsの一部。
なぜかbeefじゃなくてbeafになっていた。
0979デフォルトの名無しさん
NGNG0980さっきゅん
NGNGnasm文法でよければここから
http://www.tortall.net/projects/yasm/
gas文法が好きならここにあるgccとか
http://orange-pekoe.64b.org/cgi-bin/skynet/index.cgi
以下DAT落ちするので次スレへどうぞ
アセンブラ… (;´Д`) ハァハァ
http://pc5.2ch.net/test/read.cgi/tech/1087897801/
0981979
NGNGありがとうございます。あるんですねw
WinXPのカーネルモードでLongモードにして遊んでいるのですが
64bitコードをハンドアセンブルさせるのは疲れるので助かります。
0982さっきゅん
NGNG0983デフォルトの名無しさん
NGNGプロテクトモードからLongモードに切り替えるには、ページングのOFF、ONが必要ですよね。
そのため仮想アドレスと物理アドレスが合っているメモリ領域を確保していると思いますが
どのような方法で確保したのでしょうか?
0984デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1087897801/
0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1087897801/
0989デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1087897801/
0990デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1087897801/
0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1087897801/
0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。