12/08/12 15:31:46.31 .net
さらっとコード書いて説明すりゃ一発な筈なのにな、まあ、できないんじゃ仕方ないが。
201:デフォルトの名無しさん
12/08/12 15:34:03.23 .net
>>197
ああ、確かに何とも思わないね。
202:デフォルトの名無しさん
12/08/12 15:37:13.46 .net
10で割る方法は具体的なコードがいくつも挙がってるのに、「10で割るなんて方法は取らない」と
言ってる側からはひとつのコードも例示されない不思議
203:デフォルトの名無しさん
12/08/12 15:38:28.44 .net
ヒント: 馬鹿
204:デフォルトの名無しさん
12/08/12 15:40:33.16 .net
>>200
これはアセンブラで書かないと意味がないが、特定のCPUのアセンブラで書いても
それを知ってる人間以外には伝わらない。
というか、>>187の説明で理解できない奴がコード見て理解できるとは尚更思えんね。
205:デフォルトの名無しさん
12/08/12 15:41:30.85 .net
っていうか、こんだけ絡んでくる馬鹿が多いってことは、
つまりこの程度の常識を知らない奴が多いってことか....
206:デフォルトの名無しさん
12/08/12 15:42:39.46 .net
>>202
>これはアセンブラで書かないと意味がないが、特定のCPUのアセンブラで書いても
>それを知ってる人間以外には伝わらない。
お前の知ってるアセンブラでいいよ
207:デフォルトの名無しさん
12/08/12 15:50:54.83 .net
>>187
>次のものはどんなCPUでも比較的実装が簡単
> - BCDの2のべき乗倍
実装は簡単かもしれんが整数みたいにシフトすりゃいいもんじゃないし、演算のコスト考えれば
割り算なんかしないと言ってるロジックには採用し辛いんじゃないか?
208:デフォルトの名無しさん
12/08/12 15:55:08.03 .net
>>205
割り算みたいに1ビットずつシフトして比較して減算して....なんてやるわけじゃないから
コストはずっと低い。
例えば256倍はBCD加算を8回繰り返すだけ。
209:デフォルトの名無しさん
12/08/12 16:01:44.27 .net
>>206
>例えば256倍はBCD加算を8回繰り返すだけ。
8ビットの割り算も、引けるかどうか8回繰り返すだけだよ。
210:デフォルトの名無しさん
12/08/12 16:03:59.84 .net
>>187
>次のものはどんなCPUでも比較的実装が簡単
> - byte(nibbleでもいいけど) ⇒ BCD変換
それが 整数→十進数変換 だろうに何言ってんのコイツ?
211:デフォルトの名無しさん
12/08/12 16:11:05.28 .net
馬鹿の頭脳は8ビット、まで読んだ。
212:デフォルトの名無しさん
12/08/12 16:14:06.80 .net
いまだ具体的なコードのひとつも示せない奴がなんか言ってます(ププ
213:デフォルトの名無しさん
12/08/12 16:21:02.34 .net
>>202
>これはアセンブラで書かないと意味がないが、特定のCPUのアセンブラで書いても
>それを知ってる人間以外には伝わらない。
「アセンブラで書かないと意味がない」ってのは理解に苦しむが、もし俺がそういう状況だったら知ってる人が多いであろう x86 か ARM で書くけどなあ?
それか、書けるアセンブラ(8080、Z80、6800、6809、6502、8086、386、x64、PIC、AVR、SH、mips、PowerPC、Alpha)の中から選んでもらってそれで書くわ。
それぐらいの対応お前できねーの?
214:デフォルトの名無しさん
12/08/12 16:22:19.82 .net
あ、68K抜けてた。
215:デフォルトの名無しさん
12/08/12 16:23:02.04 .net
ARMも抜けてた。ボロボロだな。
216:デフォルトの名無しさん
12/08/12 16:32:11.53 .net
__m128 _mm_cvtepi32_decstr(__m128 a)
a最下位のuint要素を10進表現の文字列へ変換して返す。(余った桁には0が入る。)
こんな感じに1~2クロックで変換できるSIMD演算器の命令、追加されないかな。
需要無いか。
217:デフォルトの名無しさん
12/08/12 16:33:13.83 .net
>>212
死刑。
218:デフォルトの名無しさん
12/08/12 16:34:09.51 .net
128bitの値が素数が否か1クロックで判定する
219:命令追加されないかなー
220:デフォルトの名無しさん
12/08/12 17:12:11.04 .net
>>202
完全に逃げの態勢
221:デフォルトの名無しさん
12/08/12 17:18:45.55 .net
>>211
そこは敢えてCASLでだな…
222:デフォルトの名無しさん
12/08/12 17:19:58.49 .net
>>187
>次のものはどんなCPUでも比較的実装が簡単
>
> - BCD同士の加算
> - BCDの2のべき乗倍
> - byte(nibbleでもいいけど) ⇒ BCD変換
どんなCPUでもBCD演算をサポートしてるとか思ってる?
223:デフォルトの名無しさん
12/08/12 17:21:00.65 .net
>>217
そう思うなら試しに君が書いたら?
まあアルゴリズムが理解できないから無理だよねw
自分の理解力不足を棚に上げてこれだからな。
アセンブラのそれなりに実用的なコードなんて暗号的な上に冗長で、
相当慣れてても読解に苦労するものなのにそのサンプルを書けとか馬鹿の戯言意外に聞こえん。
224:デフォルトの名無しさん
12/08/12 17:25:38.50 .net
>>187
>次のものはどんなCPUでも比較的実装が簡単
>
> - BCD同士の加算
> - BCDの2のべき乗倍
> - byte(nibbleでもいいけど) ⇒ BCD変換
>
>だから、
>
>0xAABBCCDDのBCD変換値は0x00AABBCCのBCD変換値と0xDDのBCD変換値から求められる。
>0x00AABBCCのBCD変換値は0x0000AABBのBCD変換値と0xCCのBCD変換値から求められる。
>...
>
>あとは分かるよね
なんも説明してない典型
225:デフォルトの名無しさん
12/08/12 17:28:07.46 .net
>>220
>アセンブラのそれなりに実用的なコードなんて暗号的な上に冗長で、
>相当慣れてても読解に苦労するものなのにそのサンプルを書けとか馬鹿の戯言意外に聞こえん。
ん?>>183-184とかこのスレにコード投稿してる人もいるのに何言ってんの?
226:デフォルトの名無しさん
12/08/12 17:29:18.93 .net
>>220
>アセンブラのそれなりに実用的なコードなんて暗号的な上に冗長で、
>相当慣れてても読解に苦労するものなのにそのサンプルを書けとか馬鹿の戯言意外に聞こえん。
だから擬似コードでもいいって言われてんのにねー?
227:デフォルトの名無しさん
12/08/12 17:34:09.85 .net
>>202
>これはアセンブラで書かないと意味がないが、
C言語とかにはないBCD加算とかの命令は中身ブラックボックスの関数とかで代替できますよ。
a = bcdadd(b, c);
「アセンブラで書かないと意味がない」ってどゆこと?
228:デフォルトの名無しさん
12/08/12 17:48:35.38 .net
>>224
>>これはアセンブラで書かないと意味がないが、
「演算によるフラグへの影響を再現できない」とか言うのかな?
グローバル変数でCとかZとかのフラグ用意してaddやsubとかの演算は関数用意するとか、
C++で演算子のオーバーロードするとか、方法は幾らも考えられるよね。
229:デフォルトの名無しさん
12/08/12 18:20:29.11 .net
>>225
こんなこと一々説明されないと理解できないことは恥だと思うべきだと俺は思うが、
今問題にしているのは実行効率だから。
なぜ10で割った商と剰余を利用するより>>187の方法の方が効率的かはCで書いても
コードに現れない。
230:デフォルトの名無しさん
12/08/12 18:21:51.19 .net
っていうか、>>187が理解できればコード書けなんて馬鹿は言わないはずで、
だったらこういうの相手にしても時間の無駄だな。
231:デフォルトの名無しさん
12/08/12 18:23:05.68 .net
説明がおかしいという考えに及ばないところが馬鹿丸出し
232:デフォルトの名無しさん
12/08/12 18:24:23.70 .net
>>226
>こんなこと一々説明されないと理解できないことは恥だと思うべきだと俺は思うが、
>今問題にしているのは実行効率だから。
>
>なぜ10で割った商と剰余を利用するより>>187の方法の方が効率的かはCで書いても
>コードに現れない。
説明求められてんのはロジックなのに変な言い訳w
233:デフォルトの名無しさん
12/08/12 18:26:43.37 .net
コード提示すりゃ済む話を長々と引っ張るネw
234:デフォルトの名無しさん
12/08/12 18:27:39.23 .net
>>229
馬鹿って本当鳥頭だよな。
>>226は>>225に対する回答だ。
235:デフォルトの名無しさん
12/08/12 18:29:21.92 .net
>>226
>今問題にしているのは実行効率だから。
>
>なぜ10で割った商と剰余を利用するより>>187の方法の方が効率的かはCで書いても
>コードに現れない。
どういう処理を機械語に落としたらどの程度の効率になるかなんてのは、自分で触ってる
プロセッサなら当たり前に想像付くようなモンじゃね?
お前、自分はそういう見積もりが出来ませんと言ってるワケ?
236:デフォルトの名無しさん
12/08/12 18:31:25.73 .net
>>231
求められてるのはロジックだと言ってるよ。お前が実行効率を理由にコードを提示しない理屈は通らんよ。
237:デフォルトの名無しさん
12/08/12 18:34:38.69 .net
まあ、コードの提示がない時点で出来ませんと言ってるも同然なんだが
238:デフォルトの名無しさん
12/08/12 18:38:55.58 .net
>>203
>っていうか、こんだけ絡んでくる馬鹿が多いってことは、
>つまりこの程度の常識を知らない奴が多いってことか....
常識って言うなら、どっかの他人が書いるコードとかロジックの説明のページ、ゴマンとあんじゃね?
お前に具体的なコード書いたりすんのが無理ならそのURL書くだけでもいんじゃね?
239:デフォルトの名無しさん
12/08/12 18:41:40.33 .net
訂正
×どっかの他人が書いる
○どっかの他人が書いてる
240:デフォルトの名無しさん
12/08/12 18:45:14.11 .net
>いろいろ突っ込みどころがありすぎて困るが、uintをBCD(10進数って何だよw)
>に変換するのに普通はそんな間抜けな方法は取りませんw
まあ、BCD(=二進化十進数)の言葉の意味も理解してない馬鹿みたいだし。
241:デフォルトの名無しさん
12/08/12 18:54:43.27 .net
>>165
>いろいろ突っ込みどころがありすぎて困るが、uintをBCD(10進数って何だよw)
Man page of PRINTF
URLリンク(linuxjm.sourceforge.jp)
> o, u, x, X
> unsigned int 引き数を、 符号なし8進数 (o), 符号なし10進数 (u), 符号なし16進数 (x と X) に変換する。
「10進数」なんて↑に限らず良く使われる用語では? 何がおかしいのだろう?
242:デフォルトの名無しさん
12/08/12 19:17:06.12 .net
スレタイも読めない奴が上から目線で初心者を叩くスレがあると聞いてきたんですが、もしかしてここですか?
243:デフォルトの名無しさん
12/08/12 19:23:59.34 .net
ここはアセンブラ初心者が上級者ぶって初心者を叩くスレだから
244:デフォルトの名無しさん
12/08/12 19:24:21.05 .net
>>239
違いますね。ここは知識豊富な上級者様(=>>203)に、「この程度の常識を知らない奴」等が教えを請うスレです。
245:デフォルトの名無しさん
12/08/12 19:52:24.06 .net
>>187
ひょっとしてお前こういうこと↓言いたいわけ?
typedef unsigned char bcd_t[5];
void put10(unsigned n)
{
bcd_t ans;
bcd_t t;
int i;
memset(ans, 0, sizeof(ans));
for (i = 0; i < 32; i += 8) {
byte2bcd(&t, n & 0xff);
bcdMultPowerOf2(&t, i);
bcdAdd(&ans, &t);
n >>= 8;
}
bcdPut(ans);
}
byte2bcd() の中身、割り算なしでどういう実装になるか教えてくれん? まさかテーブルじゃねぇよな?
246:デフォルトの名無しさん
12/08/12 19:53:06.34 .net
>>238
たいして専門知識もない奴が大昔に訳したまんま所が多いJMを出典にすんなw
「整数値を、8進法 (o), 符号なし10進法 (u), 符号なし16進法で数字(列)に変換する」が正しい。
247:デフォルトの名無しさん
12/08/12 19:53:54.99 .net
つーかこの程度のコードも明示できないんだとしたら終わってるだろ。
248:デフォルトの名無しさん
12/08/12 19:59:20.39 .net
>>243
>たいして専門知識もない奴が大昔に訳したまんま所が多いJMを出典にすんなw
日本人が書いたと思われる Ruby のマニュアルにも「2進数」なんて語が出てくるが、これも間違い?
sprintfフォーマット
URLリンク(www.ruby-lang.org)
> Ruby の sprintf フォーマットは基本的に C 言語の sprintf(3) のものと同じです。ただし、
> short や long などの C 特有の型に対する修飾子が ないこと、2進数の指示子(%b)が存在すること、
249:デフォルトの名無しさん
12/08/12 20:07:11.64 .net
>>242
byte⇒BCDはuintの上位バイトから実行した方が効率がいい。
byte⇒BCDの部分は除算命令でもテーブル参照でも何でも構わない。
そこで除算を使うななんて言ってない。
250:デフォルトの名無しさん
12/08/12 20:10:25.84 .net
おっ、コードの一つも提示できなかった奴がなんか言ってるw
251:デフォルトの名無しさん
12/08/12 20:11:41.24 .net
>>246
>そこで除算を使うななんて言ってない。
「というか、だから少なくとも除算がネイティブな機能として実装されてないようなCPUなら
10で割るなんて方法は取らない。」
252:デフォルトの名無しさん
12/08/12 20:13:50.08 .net
>>248
ホント馬鹿の頭脳は8ビットだな。
253:デフォルトの名無しさん
12/08/12 20:14:53.62 .net
なーんか、こういう高速化方法もあるよぐらいで済ましときゃよかったのに「常識」とか言っちゃって引っ込みが付かなくなったカンジね
254:デフォルトの名無しさん
12/08/12 20:17:21.46 .net
馬鹿の癖にプライドだけは高い奴の典型
255:デフォルトの名無しさん
12/08/12 20:18:03.42 .net
>>250
恥を知らないって幸せだね。
256:デフォルトの名無しさん
12/08/12 20:21:00.70 .net
>>187
>次のものはどんなCPUでも比較的実装が簡単
>
> - BCD同士の加算
> - BCDの2のべき乗倍
> - byte(nibbleでもいいけど) ⇒ BCD変換
「どんなCPUでも」って、BCD演算サポートしてないCPUにはしんどいんじゃないの?
257:デフォルトの名無しさん
12/08/12 20:23:30.92 .net
結局、馬鹿が自分の思い込みを常識と勘違いしてただけでしたチャンチャン
258:デフォルトの名無しさん
12/08/12 21:28:13.40 .net
PLC(いわゆるシーケンサ)のCPUならBCD演算今でもサポートしてるよ
ニモニックで書けば一応アセンブラか?
もっともPLCのCPUはSHとかのどこにでもあるCPUの上の仮想CPUだけど
259:ね
260:デフォルトの名無しさん
12/08/12 21:50:48.10 .net
>>187
>次のものはどんなCPUでも比較的実装が簡単
> - BCDの2のべき乗倍
試しにZ80で2**24倍するコード書いてみたが処理重すぎだろ。
ld c,24
loop1:push hl
ld b,5
loop2:ld a,(hl)
add a,(hl)
daa
ld (hl),a
inc hl
djnz loop2
pop hl
dec c
jp nz,loop1
ret
これだけでざっと見て5000サイクル位掛かるじゃねーか。10で割ったほう速いだろ。
261:デフォルトの名無しさん
12/08/12 21:53:56.86 .net
>>255
>PLC(いわゆるシーケンサ)のCPUならBCD演算今でもサポートしてるよ
だから何? 8080だって6502だってBCD演算今でもサポートしてるけど?
262:デフォルトの名無しさん
12/08/12 22:13:24.54 .net
BCDで2倍を24回繰り返すのと、BCDで16777216倍すんのと、どっちが速いだろう?
263:デフォルトの名無しさん
12/08/13 04:46:30.85 .net
ここまでスレが伸びるとか10進数表示って奥が深いんだな
264:デフォルトの名無しさん
12/08/13 04:53:24.87 .net
Cでprintf("%d",v);だけのプログラム作って解析すりゃいいんじゃね
265:デフォルトの名無しさん
12/08/13 04:57:06.07 .net
解析は犯罪です
266:デフォルトの名無しさん
12/08/13 05:14:19.27 .net
6502って現役なの?リモコン用?
267:デフォルトの名無しさん
12/08/13 09:44:15.10 .net
gccのコード見た方が早くね?
268:デフォルトの名無しさん
12/08/13 14:16:19.57 .net
CASL2で10進数表示のコードを提示してください
269:デフォルトの名無しさん
12/08/13 14:28:12.28 .net
>>264
CASL II 入門講座 第5章 数値を10進数の文字列に変換する
URLリンク(www.officedaytime.com)
270:デフォルトの名無しさん
12/08/13 14:33:07.30 .net
>>264
IN命令とOUT命令 - 3. 応用:符号なし10進数を文字列に変換して表示する
URLリンク(www-cg.cis.iwate-u.ac.jp)
271:デフォルトの名無しさん
12/08/13 17:39:33.83 .net
このアルゴリズム的に何の意味もないコメントの付け方をみると無性に腹がたつ。
学習用とはいえ、いちいち命令をすべて日本語に読み下すなと。
272:デフォルトの名無しさん
12/08/13 17:53:25.73 .net
>>267
どれのこと言ってんの?
273:デフォルトの名無しさん
12/08/13 17:57:42.24 .net
>>262
割と最近の製品の例
URLリンク(www.brielcomputers.com)
動作しているところ
URLリンク(nicoviewer.net)
274:デフォルトの名無しさん
12/08/13 18:23:18.16 .net
>>269
どんだけ特殊な製品なんだw
こいうお遊び以外では需要なんてないだろ。
275:デフォルトの名無しさん
12/08/13 18:47:55.08 .net
WDCの製品ラインナップにあるからまだ需要もあるのだろう
URLリンク(www.westerndesigncenter.com)
6年前のトラ技の記事
URLリンク(toragi.cqpub.co.jp)
276:デフォルトの名無しさん
12/08/13 18:56:26.10 .net
世の中に出回ってる製品のうち、使ってるマイコンの種類をエンドユーザーが分かるものなんて稀だろう。
俺らの知らんところで6502が使われてても不思議はない。
277:デフォルトの名無しさん
12/08/13 19:10:17.02 .net
ないないw
そもそも8bitなんて組み込み用途しか需要がないんだから組み込み「マイコン」以外の
CPUに需要はない。
278:デフォルトの名無しさん
12/08/13 19:14:50.89 .net
>>273
>そもそも8bitなんて組み込み用途しか需要がないんだから組み込み「マイコン」以外の
>CPUに需要はない。
新規開発に限ればまあだいたい合ってるが世の中それだけではない。
279:デフォルトの名無しさん
12/08/13 19:25:35.33 .net
国内のパチンコやパチスロの
280:当たりを決めてるところの制御はいまだにZ80の派生品で行ってるらしい。 外国から見れば、日本のパチンコやパチスロの事情なんてわけの分からん話だろうし、一般に情報も伝わらないだろう。 どこかの国に「日本のパチンコやパチンコ」に該当するものがあったとして、我々はそれを知りうることができるだろうか? 「組み込み「マイコン」以外のCPUに需要はない」と断言する奴は視野が狭いと思う。
281:デフォルトの名無しさん
12/08/13 19:29:54.80 .net
訂正
×「日本のパチンコやパチンコ」
○「日本のパチンコやパチスロ」
282:デフォルトの名無しさん
12/08/13 19:41:07.16 .net
>>275
パチンコ業界のことは知らんが、恐らく派製品ですらなくIPでしょ。
あれをZ80と呼んでよいかは微妙だね。
そもそも今時本当にZ80相当を使ってるかどうか疑わしい気もする。
都市伝説の類じゃないのか?
283:デフォルトの名無しさん
12/08/13 19:43:34.37 .net
LE-Techも聞いたことない素人さんですか?
284:デフォルトの名無しさん
12/08/13 19:46:42.79 .net
まあなんにしろ、仮に事実パチンコにZ80が使われ続けているとしても、
それは政治/行政上の理由という特殊事情で選択されているに過ぎず、技術的あるいは経済的理由で
選択されているわけではない。
285:デフォルトの名無しさん
12/08/13 19:47:17.91 .net
>>277
>そもそも今時本当にZ80相当を使ってるかどうか疑わしい気もする。
>都市伝説の類じゃないのか?
パチンコ関係じゃ、いまだにZ80の求人あるの知らんの?
URLリンク(www.careerjet.jp)
286:デフォルトの名無しさん
12/08/13 19:48:37.06 .net
>>279
そういう事情が日本以外には存在しないと考えるおバカさんですか?
287:デフォルトの名無しさん
12/08/13 19:50:04.35 .net
>>275はもはや持論を正当化するための屁理屈に過ぎんな
288:デフォルトの名無しさん
12/08/13 19:51:42.19 .net
だから知らねえって言ってるだろ。
それに、求人があるからって現行製品かどうか分からんでしょ。
ある種の保守用人員かもしれない。
例えば古い台をゲーセン用に改造するためとか
289:デフォルトの名無しさん
12/08/13 19:54:43.54 .net
知らない奴が何いってんだろ?
290:デフォルトの名無しさん
12/08/13 19:57:00.93 .net
>>283
>それに、求人があるからって現行製品かどうか分からんでしょ。
>ある種の保守用人員かもしれない。
>例えば古い台をゲーセン用に改造するためとか
求人内容見て言ってる? 必死すぎw
291:デフォルトの名無しさん
12/08/13 19:58:51.32 .net
初心者の質問スレじゃなくて
プロが語り合うスレになっちまってるな
292:デフォルトの名無しさん
12/08/13 19:59:12.10 .net
>>283
>だから知らねえって言ってるだろ。
知らないくせに断言とか良くできるなー。感心するわ。
293:デフォルトの名無しさん
12/08/13 20:01:35.65 .net
どう見ても片っぽは素人
294:デフォルトの名無しさん
12/08/13 20:36:32.24 .net
暑苦しいおっさんどもだなぁ
295:デフォルトの名無しさん
12/08/14 14:45:16.63 .net
64bitだとアセンブラ使えないのか・・
どうしよう
296:デフォルトの名無しさん
12/08/14 14:49:25.74 .net
>>290
インラインアセンブラか何かを勘違いしてる?
297:デフォルトの名無しさん
12/08/14 19:13:53.50 .net
何ビットだろうと出来ないことはないだろう
最悪、ハンドアセンブルで!
298:デフォルトの名無しさん
12/08/14 21:08:36.30 .net
C言語の入門書をやり終えたら
パソコンが中で何やってるか知りたくなって、アセンブラに興味が湧いたんだけど
スレの上のほうで64bit環境じゃうまく動かないって報告があったから…
アセンブラで何か作りたいってわけではないのですが、いい参考書あったら教えて下さい
因みにラ・リ・ルって
「アセンブラでアセンブリをアセンブルする」
でいいんですよね?
299:デフォルトの名無しさん
12/08/14 21:16:26.09 .net
>>293
> いい参考書あったら教えて下さい
はじめて読む486―32ビットコンピュータをやさしく語る
URLリンク(www.amazon.co.jp)
インテルのマニュアル水で薄めたような内容だけど、まあやさしく書いてる。
300:デフォルトの名無しさん
12/08/14 23:32:15.67 .net
本読んで終わりって人達ですか?
301:デフォルトの名無しさん
12/08/14 23:
302:56:43.22 .net
303:デフォルトの名無しさん
12/08/15 02:04:23.84 .net
>>296
パソコンで64bit環境(x86系)なら、32bitなアプリも作れるでしょうに
何を読んで?そう思ったのかしらんけどね
アセンブラっていっても、どのCPU?でやりたいのかな?
304:デフォルトの名無しさん
12/08/15 02:44:39.11 .net
>>293
CPUの中身を知りたいのならオレが今読んで学んでる、Z80マイクロプログラミング実習って本がわかりやすい
いきなりx86系とか学ぶと頭ついていかなかった頭の悪いオレからの助言
305:デフォルトの名無しさん
12/08/15 16:03:00.55 .net
それは違うだろ
Z80も一応調べてみたけど「あれ?乗算除算浮動小数点演算命令ないよ?何それ?」
って感じだった
x86の方が明らかに組みやすい
306:デフォルトの名無しさん
12/08/15 16:03:50.85 .net
書けても動かないとか?
307:デフォルトの名無しさん
12/08/15 16:20:15.82 .net
>>299
>「あれ?乗算除算浮動小数点演算命令ないよ?何それ?」
>x86の方が明らかに組みやすい
そういうレベルで分かった気になってると、自前で乗除算組まなければいけなくなったときに泣きを見るゾw
308:デフォルトの名無しさん
12/08/15 16:27:54.03 .net
>おれ、x86のアセンブラ知ってるんだ
それって、かっこいいの?
309:デフォルトの名無しさん
12/08/15 16:29:52.70 .net
楽したければ
310:デフォルトの名無しさん
12/08/15 16:38:21.04 .net
浮動小数点は上位言語で使えるようになってるからね
アセンブラよりは低レベルな考え方を身につける方がいいんじゃね
今は、CPUに依存した命令が読めればいい方
311:デフォルトの名無しさん
12/08/15 17:00:29.29 .net
>>302
>それって、かっこいいの?
むしろ知らないとCのデバッグにも苦労すると思う。
性能出したいところでコンパイラの出力したコードを参照してソースの書き方変えるとか、当たり前のことだし。
312:デフォルトの名無しさん
12/08/15 17:02:43.52 .net
>>305
レベルの高いことまでやろうとは思ってないんじゃないの?
313:デフォルトの名無しさん
12/08/15 21:43:58.20 .net
IEEE754に準拠した浮動小数点演算命令パッケージは探せばあちこちに落ちてるけど
回転/シフト命令だけで結構楽に組めるんだな
超越関数に至ってはSSE2で書いた方がFPUよりも速いという
314:デフォルトの名無しさん
12/08/15 22:18:00.98 .net
>>297
Intel Core i7 860です
>>10-14
を見て64bitだとうまくいかないのかと思いました
315:デフォルトの名無しさん
12/08/15 22:25:14.65 .net
>>308
>を見て64bitだとうまくいかないのかと思いました
Windowsの64bit版だと16bitのコードが動かないのはその通り。
64bitか32bitのコードを動かすか、エミュレータ上で16bitのコードを動かせばよいだけ。
316:デフォルトの名無しさん
12/08/15 23:46:39.85 .net
>>309
調べてみたら
win7のxpモードで16bitが動くようなので
それでやってみます!
317:デフォルトの名無しさん
12/09/26 23:10:27.88 .net
mov CS:[w_sp],SP
この第一オペランドの:の意味がわからんのです
これはCSとw_sp両方にSPを入れるってことなの?
318:デフォルトの名無しさん
12/09/26 23:13:02.28 .net
>>311
本かインテルのマニュアルかなんか見れ。
319:デフォルトの名無しさん
12/09/26 23:33:38.29 .net
本見たりググったりしたんだけどわかんねーんだよ
記述自体が古いのかな…
なんせPC9801のアセンブラだから…
320:デフォルトの名無しさん
12/09/26 23:43:22.21 .net
>>313
超基本的なことだから、書いてないなら本が悪い。ぐぐってわからんのならお前の頭が悪いわ。
321:デフォルトの名無しさん
12/09/26 23:46:33.52 .net
基本的なことなのか!!
すまん…もうちょっと頑張ってぐぐってみる
ありがとう
322:デフォルトの名無しさん
12/09/26 23:53:13.25 .net
あ!わかった!!!
CSってのはコードレジスタだから、そこを基準に[w_sp]分オフセットがかかってるってことなんだな!!
わかったぞ!
>>313さんありがとう
ちゃんと考えなかったオレが悪い
考えるキッカケを作ってくれてありがとう
323:デフォルトの名無しさん
12/09/26 23:54:19.26 .net
ごめん313じゃなくて314でした
324:デフォルトの名無しさん
12/09/27 09:47:06.61 .net
①
inc dword ptr [count]
というのはアトミックですか?
++cnt;
をVC10でReleaseコンパイルしたら上記のようになったのですが、
デバッグコンパイルしたら下記のように分解されてしまいました。
②
mov eax,dword ptr [count]
add eax,1
mov dword ptr [count],eax
②は明らかにアトミックではないと思いますが、
コードの途中で、他のスレッドが同じコードを通ったときに
カウントがおかしくなってしまうのは構いません。
2つ以上のスレッドが同時に①か②を通ったときに
動作が異なる可能性があるのかを知りたいです。
(動作が異なるならインラインアセンブラで書くか、
カウントがおかしくなるのが困るようになったときは
クリティカルセクションでも使います)
325:デフォルトの名無しさん
12/09/27 10:04:35.72 .net
InterlockedIncrement
326:デフォルトの名無しさん
12/09/27 10:06:38.40 .net
一応、そのx86での実装は
普通はinc等ではなく、lock+xadd
327:318
12/09/27 11:59:10.28 .net
>>319 >>320
知りたいのは、マルチスレッドで同じコードを同時に通った場合に、
①と②で動作が異なる可能性があるかどうかなのです。
カウントがおかしくならないようにするための方法を
示していただいたということは、①もアトミックではないと
解釈して良いのでしょうか?
328:デフォルトの名無しさん
12/09/27 21:16:39.57 .net
割り込みコントローラ回りのコーディングが、どうしたものかわかんないんだよなぁ
329:デフォルトの名無しさん
12/09/27 23:58:41.44 .net
cmpxchg
330:デフォルトの名無しさん
12/09/28 00:47:19.87 .net
H8なら①に相当するコードはアトミックだったよ。割込とタスク両方からカウントを
変更するときに割禁かまさなくて済むから意識的に使った。
だからx86でも①はアトミックだと類推する。
331:デフォルトの名無しさん
12/09/28 01:14:48.26 .net
*
add eax,1
*
mov dword ptr [count],eax
*印のところでスレッド切り替えが起きたらどうなると思う?
332:318
12/09/28 12:23:50.67 .net
回答ありがとうございます。
>>323
クリティカルセクションを実装するのに使える命令なのでしょうか?
排他が必用になったときに、試してみます。
>>324
①がアトミックだとなると、
デバッグ版の②とは違う動作になってしまいます。
あまりに挙動が変わってしまう場合は、
インラインアセンブラで①に書き換えてみます。
>>325
他のスレッドで、カウントが巻き戻ってしまうかも
しれないというのは分かります。
他に致命的な問題があるのなら、
インラインアセンブラで①に書き換えてみます。
333:デフォルトの名無しさん
12/09/29 17:44:46.97 .net
PC/AT互換機での電源の制御ってどう行えばいいんだ?(シャットダウン等)
BIOSファンクションがあるのか、はたまたデバイスとやり取りしてやるのか
出来るなら、どいつが扱ってるのか理解したいから、BIOSファンクションを使わなくてもいいなら、そちらの方法が知りたい
334:デフォルトの名無しさん
12/09/29 18:02:25.95 .net
ACPIを通しているのは確実でしょ。
どうやってACPIを使うかは知らん。
探せば仕様書くらい出てくるかも。
335:デフォルトの名無しさん
12/09/29 22:08:07.87 .net
>>2326
cmpxchgはCAS命令と呼ばれる物だよ
URLリンク(ja.wikipedia.org)
Lock-freeとWait-freeアルゴリズムが実装出来る
あとx86に
URLリンク(ja.wikipedia.org)
これが欲しかった
まあいらんのかも知れんれど
336:デフォルトの名無しさん
12/09/29 22:08:24.52 .net
×>>2326
○>>326
337:デフォルトの名無しさん
12/09/29 22:44:36.32 .net
>>327
APMファンクション呼べばよろし
ACPIでもできるけどAMLインタプリタ用意せにゃいかんので
面倒くさい
338:デフォルトの名無しさん
12/09/30 18:55:20.60 .net
>>331
APMという単語で調べて、一応なんとかなった、ありがとう。
調べれば調べるほど、アセンブラでもかなり高級なプログラミングなんだなと思えて、嫌になってくるが。
in、out命令でなんとかならないかのう
339:デフォルトの名無しさん
12/10/01 16:29:22.52 .net
>>332
Embedded Controler叩けばいいはずだが、標準仕様がないしそのへんの情報は
ほとんど公開されとらんので自力で調べんといかん
のでBIOSにお願いするのが一番簡単
340:デフォルトの名無しさん
12/10/02 16:49:46.89 .net
APMって未実装のものも多いよな
ACPI使わないとデバイス割り当て出来なかったりもするし、どこに向かっていくんだか…
341:デフォルトの名無しさん
12/10/06 20:25:08.12 .net
そりゃAPMじゃ手に負えなくなってACPIができたんだから
16bitモードが消え去ってUEFIに移行すりゃなくなるだろう
342:デフォルトの名無しさん
13/03/07 11:26:55.04 .net
computer 計算機(JIS用語らしい)、コンピュータ
compiler コンパイラ、「コンパイルを行う翻訳プログラム」
linker リンカ、「…ロードモジュールを作成するために用いられる計算機プログラム」
assembler アセンブラ、「アセンブルを行う翻訳プログラム」
assemble アセンブルする、「アセンブラ言語で書かれたプログラムを目的プログラムに翻訳する」
assembler language program アセンブラ言語プログラム
assembly language アセンブラ言語(JIS用語らしい)、アセンブリ言語、「機械命令に対応した記号形式を備えたプログラム言語」
source code ソースコード、原始コード
コンピュータ用語辞典第3版(日外アソシエーツ)
343:デフォルトの名無しさん
13/04/24 11:21:55.75 .net
よろしくお願いします。
はじめてプログラミングを勉強するにあたり、
CASL2とZ80だとどちらがお勧めでしょうか?
CASL2は基本情報参考書の付録CD-ROMのエミュ、Z80は講談社ブルーバックス付録CD-ROMのエミュを持っていて、このどちらかで勉強を始めたいと考えているのですが…
どなたかアドバイスをよろしくお願いします。
344:デフォルトの名無しさん
13/04/24 11:25:29.76 .net
プログラミング自体が始めてならいきなりアセンブラというのはあまりお勧めできない。
それでもやるというならどちらでも好きにしなさい。
345:デフォルトの名無しさん
13/04/24 11:35:30.91 .net
>>337
エミュレータを使っての学習はつまらんので続かないと思う。
実機を使うのが良いよ。
346:デフォルトの名無しさん
13/04/24 17:28:28.54 .net
ということで、CASL2は落選。ゼッパチの使える基板が秋月辺りで帰れば面白い。
347:デフォルトの名無しさん
13/04/24 17:29:37.13 .net
ごめん、買えれば ね。
348:デフォルトの名無しさん
13/04/24 17:58:17.10 .net
Z80は既に実用的な用途はだいぶ減ってるし、CASL2はもとから実用的なものではないから、
要するに機種はなんでもいいからアセンブラを始めてみたいということだと思うが、それなら
今ならArduino辺りでいいと思う。LEDチカチカさせるだけでも楽しいよ。
349:337
13/04/24 20:27:47.68 .net
皆さんありがとうございます。
アドバイスをぐぐって調べてみます
コンピュータを理解したくて、勉強をしたいと思ったんです。
350:デフォルトの名無しさん
13/04/24 20:37:11.57 .net
このへんやっても今のPCの理解が深まることはないと思うけどな
351:デフォルトの名無しさん
13/04/24 21:30:29.33 .net
>>344
お前みたいなやつがいるからどんどんレベルが下がってんだよ
352:デフォルトの名無しさん
13/04/25 03:37:35.34 .net
>>344 >今のPCの理解が深まることはないと思うけどな それがアセンブラ弄る唯一の目的と思ってるならお前バカ丸出しだよw
354:デフォルトの名無しさん
13/04/25 04:13:28.59 .net
いまからASMやって身になるならどのへんかねぇ
キャッシュと分岐予測あたりが必須になりそうな
355:デフォルトの名無しさん
13/04/25 07:11:13.38 .net
>キャッシュ
ない環境も普通にある。
>分岐予測
ない環境も普通にあるし、あってもプログラマとってはさほど負担になるものではない。
356:デフォルトの名無しさん
13/04/25 10:05:32.55 .net
分岐予測が必須とか、15年前からタイムスリップしてきたMIPS信者ですか?とかw
357:デフォルトの名無しさん
13/04/25 10:40:59.84 .net
そりゃないとこ探せばあるんだろうけども
358:デフォルトの名無しさん
13/04/25 11:51:09.09 .net
「必須になりそう」って、キャッシュも分岐予測も解ってない奴が何言ってるんだろ?
359:デフォルトの名無しさん
13/04/30 17:23:17.57 .net
Ollydbgで得られるアセンブラの記法ってインテル記法?AT&T記法?どっちですか?
360:デフォルトの名無しさん
13/04/30 17:29:52.45 .net
ググレカス
361:デフォルトの名無しさん
13/04/30 18:55:26.87 .net
>>352
みたらインテル表記でした
ネトゲ(とりあえずどんなネトゲでも、npro,ゲームガードつきとか)のチートツールを作ってみたいんですがどうすればいいんでしょうか?
Windows7です
串作成、ラッパー、デコードルーチン実装とかなに?
教えてください
串作成っていうの接続のときプロキシを使うってこと?
ラッパーは?デコードルーチン実装って?
よくわかりません アンパックとかはなんとなくわかりますが
どうやって学んでいけばいいのか教えてください
362:デフォルトの名無しさん
13/04/30 18:57:22.94 .net
>>353へのレスですミス
363:デフォルトの名無しさん
13/05/01 18:40:23.85 .net
板違い
364:デフォルトの名無しさん
13/05/21 00:02:08.27 .net
世界一速い整数多倍長計算ライブラリを作ってくれませんか?
365:デフォルトの名無しさん
13/05/21 02:13:58.50 .net
そんなニーズないよな
366:デフォルトの名無しさん
13/05/21 07:28:29.06 .net
なくはないと思う
367:デフォルトの名無しさん
13/05/21 10:34:32.84 .net
昔そういうスレがあった気がする
完成したのか挫折したのか知らんけど
368:デフォルトの名無しさん
13/05/21 10:35:38.08 .net
そりゃ何でも少しでも速いほうがいいのは確かだけど、
新しく作ったらバグが完全に無くなるまでしばらくかかるし。
369:デフォルトの名無しさん
13/05/21 11:31:17.83 .net
>>357
URLリンク(gmplib.org) とかで何か不満でもあるのか?
370:デフォルトの名無しさん
13/05/21 15:07:33.51 .net
並列処理対応、64bit対応じゃないと嫌。パスワードクラックしたいんです。
371:デフォルトの名無しさん
13/05/21 19:43:51.04 .net
パスワードクラックなら最近はGPU(GPGPU)系じゃね?
372:デフォルトの名無しさん
13/05/21 20:46:51.41 .net
>>364
ありがとう 調べてみる
373:片山博文MZパンク ◆0lBZNi.Q7evd
13/05/21 21:39:53.83 .net
x86逆汗を作っています。
インテルの技術文書を読みました。
PE形式の情報がダンプできるようになりました。
何かアドバイスをお願いします。
374:デフォルトの名無しさん
13/05/21 22:59:43.97 .net
>>366
勇士Qに弟子入りする
375:デフォルトの名無しさん
13/05/21 23:16:17.84 .net
アドバイスも何も仕様に従って変換するだけだろ
強いて言うならアドレスを生の数値だけじゃなく
何らかのラベルをつけるといいかもね
376:デフォルトの名無しさん
13/05/22 05:52:53.30 .net
>>366
・Cコードを吐き出すようにする
377:デフォルトの名無しさん
13/05/22 08:41:40.61 .net
1パスディスアセンブラなんて簡単過ぎるから2パスアセンブラを作る
つまりジャンプ先にラベルを付ける
あとある程度コードとデータの分離を可能にし、コードは16進ダンプと
文字列を付ける、など
378:片山博文MZパンク ◆0lBZNi.Q7evd
13/05/29 22:43:35.13 .net
アドレッシングややこしや
関数の呼び出し規約が難しい
379:デフォルトの名無しさん
13/05/29 22:47:35.13 .net
そんなんややこしい内に入らん
380:デフォルトの名無しさん
13/05/29 22:49:01.25 .net
64bitの呼び出し規約はレジスタ渡し�
381:オつつスタックは開けておくとか スタックを16バイト境界に揃えるとか結構ややこしい
382:デフォルトの名無しさん
13/05/30 04:11:04.04 .net
そんなんややこしい内に入らん
383:片山博文MZパンク ◆0lBZNi.Q7evd
13/06/02 21:38:39.39 .net
こいつはどでかいswitchが出来そうだ。
ところでa16って何?
384:デフォルトの名無しさん
13/06/03 00:02:51.99 .net
push %ebp
mov %esp,%ebp
sub $0x28,%esp
これgdbで出た結果なんだけど、どういう風に動いてるのかよくわからなくて、図で説明してくださると助かりますorz
385:デフォルトの名無しさん
13/06/03 00:07:23.82 .net
スタックフレームを作ってローカル変数領域を確保している
386:デフォルトの名無しさん
13/06/03 00:17:28.67 .net
>>377 1行目で4バイト分確保するん? それで2、3行目はなにを?
387:デフォルトの名無しさん
13/06/03 00:21:37.15 .net
もしアセンブラ詳しい人いて教えてくれる人いればスカイプに来てくれると嬉しいです。
スカID satito39
388:デフォルトの名無しさん
13/06/03 00:24:53.96 .net
URLリンク(www.c-tipsref.com)
389:デフォルトの名無しさん
13/06/03 00:28:42.09 .net
>>380 はじめの4バイトと3行目の0x28バイト分はその図でいうとどこに当たるのでしょうか?
390:デフォルトの名無しさん
13/06/03 01:26:18.00 .net
push %ebp 新たなフレームポインタを書き込むためebpをスタックに退避
mov %esp,%ebp フレームポインタを更新
sub $0x28,%esp 28バイト分のローカル変数領域をスタックに確保
391:デフォルトの名無しさん
13/06/03 03:11:30.78 .net
>>382
> sub $0x28,%esp 28バイト分のローカル変数領域をスタックに確保
40バイト
392:デフォルトの名無しさん
13/06/03 07:18:49.71 .net
movl $0xaea4a4af,-0x13(%ebp)
movl $0xb6b2a6ba,-0xf(%ebp)
movw $0xc4,-0xb(%ebp)
movb $0x0,-0x9(%ebp)
続きでこういうものがあればどう動くのですか?
393:デフォルトの名無しさん
13/06/03 07:23:58.95 .net
>>384
URLリンク(www.intel.co.jp)
URLリンク(www.google.co.jp)
394:デフォルトの名無しさん
13/06/03 09:35:43.09 .net
push %ebp ;ebpの退避(以前の BP の値)
mov %esp,%ebp ;ローカル変数参照時にBPを使ってる?
sub $0x28,%esp ;ローカル変数領域の確保
何がやりたくて質問してんのやら
395:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/06/03 16:48:02.81 .net
アラインメント取れていないし文字列でないかい
397:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/06/03 17:04:43.50 .net
自分であたまを使おうという気はゼロ
399:デフォルトの名無しさん
13/06/03 17:26:14.85 .net
>>389
こりゃ荒らしだな
400:デフォルトの名無しさん
13/06/03 21:00:12.43 .net
0xccでxorした文字列(10文字�
401:jを戻して表示してるだけ
402:デフォルトの名無しさん
13/06/03 21:20:33.05 .net
おまいらいじわるだな
せめて金額交渉くらいしてやれよ
403:デフォルトの名無しさん
13/06/07 12:03:20.18 .net
アセンブラのディレクティブなどの方言説明がばらばらって困るよな。
同じCPUなのに命令記述が違いそんなレジスタないみたいな。
データの流れが右から左へと左から右へと逆だったり。
酷いのは命令語のニーモニックが特殊な略なのにその説明がどこにもない。
インラインアセンブラとかも個性ありすぎるのにインライン部分の仕様は
解説が一切ないみたいな。
404:デフォルトの名無しさん
13/06/07 12:12:03.69 .net
嫌だったら使うなよ
そのためにC言語とかあるんだから
アセンブラ無しでハンドアセンブルなんて事もしょっちゅうだぞ
405:デフォルトの名無しさん
13/06/08 12:28:44.95 .net
統一仕様を策定してユーザーを増やそう という世界じゃないから
406:片山博文MZパンク ◆0lBZNi.Q7evd
13/06/08 18:53:19.31 .net
ndisasmのバグ発見!
F2 0F D6 ...
が正しくMOVDQ2Qに変換されない。
407:片山博文MZパンク ◆0lBZNi.Q7evd
13/06/12 12:07:16.18 .net
ごめんなさい、バグじゃなかったみたい
408:デフォルトの名無しさん
13/06/17 00:48:25.48 .net
>>397
たんにサポートしていないだけだろ。正式対応まで待て。
409:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/06/22 08:30:41.12 .net
>mov esi, offset buf
これ
lea esi, buf
じゃないの?動かしてないけど
411:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/06/22 10:22:52.80 .net
eaxやecxをpushしなくていいの?
413:400
13/06/22 10:47:50.40 .net
>>402
ありがとうございます!
414:デフォルトの名無しさん
13/06/22 13:15:07.29 .net
>>403
環境依存だからなあ・・・気に掛かるならインラインアセンブラで使うレジスタは
全部退避すると安心かもね
でもpushすると例えば lea edi, buf は俺の所では lea edi, [esp] と展開されたので
狂ってくるような気もする
実際やってみないとどうなるか分からないけど
415:片山博文MZパンク ◆0lBZNi.Q7evd
13/08/05 NY:AN:NY.AN .net
今、逆アセンブラ作ってる。巨大なswitch構文ができた。これをデータ表現にしようと考えている。
やるならx86以外のCPUについても、CPUの違いを吸収して統合させたい。
各CPUのアーキテクチャの表現はどのようにすればいいか?
416:デフォルトの名無しさん
13/08/05 NY:AN:NY.AN .net
1ワードで複数の命令含むアーキテクチャなんかもフツーにあるし汎用的な表現なんて無理
417:デフォルトの名無しさん
13/08/05 NY:AN:NY.AN .net
1ビットを一文字とした構文解析と考えればいいのでは?
418:デフォルトの名無しさん
13/08/05 NY:AN:NY.AN .net
余計なことを考えるのはまともに使えるものを一本仕上げてからにしろ
419:デフォルトの名無しさん
13/08/05 NY:AN:NY.AN .net
ただちに影響はありません
420:デフォルトの名無しさん
13/08/21 NY:AN:NY.AN .net
【boot】nasm【loader】
スレリンク(tech板)
421:デフォルトの名無しさん
13/09/06 15:30:02.86 .net
HxD っていうHEXEDIT使ってるけど、WIN8に変えたら
エラー履くようになりました・・・
どうすればいい?
Cannot creat fil
422:e "C:¥Program Files¥HxD.ini".アクセスが拒否されました。
423:デフォルトの名無しさん
13/09/06 15:33:52.85 .net
> どうすればいい?
いまどき Program Files の下に ini ファイル作ってるソフトなんか捨てれ
424:デフォルトの名無しさん
13/09/06 16:31:02.81 .net
普通どこに作るんだよ?
425:デフォルトの名無しさん
13/09/06 17:06:30.70 .net
いまどきは
C:\Program Files (x86)\
426:デフォルトの名無しさん
13/09/06 17:20:48.51 .net
>>414
レジストリかね。
もしくはAppDataとか、マイドキュか。
ユーザーディレクトリの直下にドット付のフォルダを作ってそこに入れてるアプリもあるね。
Program Filesはunix系のOSで言ったら、/usr/bin とか/local/usr/binにあたるから
データを保存するのは、ちょっとないね。
427:デフォルトの名無しさん
13/09/06 17:21:55.13 .net
Program Dataだろ。
428:デフォルトの名無しさん
13/09/06 17:34:33.05 .net
ProgramDataは全ユーザー共通じゃん。
429:デフォルトの名無しさん
13/09/06 18:00:55.59 .net
URLリンク(chrome.blogspot.jp)
URLリンク(itpro.nikkeibp.co.jp)
URLリンク(news.mynavi.jp)
URLリンク(internet.watch.impress.co.jp)
430:デフォルトの名無しさん
13/09/06 18:06:17.02 .net
ていうか、exeファイルをProgramFiles直下に置いているような気がするのだが
431:デフォルトの名無しさん
13/09/06 22:28:35.95 .net
それ以外どこに置くんだ?
432:デフォルトの名無しさん
13/09/07 07:46:35.57 .net
Win8のセキュリティ設定を変えるだけだろ? それすらできないやつがアセンブラ? バイナリエディタ?
百年早えわ
433:デフォルトの名無しさん
13/09/07 08:50:06.65 .net
>>421
そんなところにexeなんて置いたことありませんが
434:デフォルトの名無しさん
13/09/07 10:30:32.07 .net
つ URLリンク(www.youtube.com)
435:デフォルトの名無しさん
13/09/10 02:28:35.44 .net
>>168
n % 10 が糞遅いだろ
これだから高級言語に被れたあほは
436:デフォルトの名無しさん
13/09/10 04:09:22.32 .net
>n % 10 が糞遅いだろ
適切にコード化されてるなら、前段の /10 で %10 も計算できてるな。まあ、そんなコンパイラ存在しないとは思うが。
437:デフォルトの名無しさん
13/09/10 04:18:51.19 .net
除算を使わない高速な方法を>>425さんが示してくれます
438:デフォルトの名無しさん
13/09/10 09:21:50.21 .net
>>168 が糞遅いことを1年以上も研究し続けた >>425 の努力に敬礼
439:デフォルトの名無しさん
13/09/10 10:06:55.78 .net
一度の計算で余りもレジスタに入るから、実質二度手間になるんだろ?
440:デフォルトの名無しさん
13/09/10 10:08:58.86 .net
>>425 は gcc -O3 -S とかやったことが一回もないドあほ。
実際にやってみろ。自分がどれだけドあほか、わかるから。
441:デフォルトの名無しさん
13/09/10 13:18:25.22 .net
gccが最も効率のいいコードを吐くとでも思ってるのかな? ドあほってレベルじゃないぞ
442:デフォルトの名無しさん
13/09/10 13:51:02.98 .net
煽りを入れるのは見比べてからでも遅くはないのでは?
443:デフォルトの名無しさん
13/09/10 14:06:41.23 .net
>gccが最も効率のいいコードを吐くとでも
早くも問題をすり替えて逃げ態勢に入りました
444:デフォルトの名無しさん
13/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
13/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
13/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
13/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:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/09/10 15:33:12.83 .net
div_t とか使ってるの見たことない
誰も使わないから対応しないんじゃなかろうか
450:片山博文MZコスモ ◆T6xkBnTXz7B0
13/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:デフォルトの名無しさん
13/10/01 10:30:38.61 .net
ヒント: 符号付き整数
452:デフォルトの名無しさん
13/10/01 11:15:46.41 .net
>>441 有り難う
453:片山博文MZコスモ ◆T6xkBnTXz7B0
13/10/14 14:01:30.87 .net
x86で
int a,b;
ADD a,b;
がオーバーフローする条件をC言語で表すとどうなりますか?
454:片山博文MZコスモ ◆T6xkBnTXz7B0
13/10/14 14:25:40.35 .net
自己解決しました。
(a<-b) != (a+b<0)
455:デフォルトの名無しさん
13/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
13/10/14 16:44:55.65 .net
>>445
見落としてました。
どうすればよいのでしょうか?
457:片山博文MZコスモ ◆T6xkBnTXz7B0
13/10/14 16:55:19.67 .net
むずかしいよぉ~
458:片山博文MZコスモ ◆T6xkBnTXz7B0
13/10/14 17:36:03.61 .net
(a>=0 && b>=0 && a+b<0) || (a<0 && b<0 && a+b>=0)
これより簡単にできないみたい。有り難う。
459:デフォルトの名無しさん
13/10/21 19:44:36.41 .net
URLリンク(pbs.twimg.com)
460:デフォルトの名無しさん
13/10/21 20:12:25.09 .net
画面に反して本体がmkIIじゃないのが残念
461:片山博文MZコスモ ◆T6xkBnTXz7B0
13/10/22 19:22:12.38 .net
(i) x64のprologで認められている命令とは何か?
(ii) x64のepilogで認められている命令とは何か?
462:デフォルトの名無しさん
13/11/10 15:31:19.25 .net
(i) スタックに積む命令とスタック領域を確保する命令
(ii) スタックから積み下ろす命令とスタックポインタを補正する命令
でいいんだっけ?
463:デフォルトの名無しさん
13/11/15 16:30:27.64 .net
初心者スレの割りにレベルが高くてこんなことを聞くのもためらわれまずが
64bitのCPUに32bitのOS入れて解析ってできますか?
CPUも32bitのほうがいろいろ捗りますかね
464:デフォルトの名無しさん
13/11/15 16:47:32.07 .net
分からない奴にOSの解析など不可能
465:デフォルトの名無しさん
13/11/15 21:49:14.28 .net
ねぇここって初心者の質問に答えるスレじゃないの?
あとOSの解析なんて言ってないんで^^;
偉そうにしてるとこ悪いけど日本語読んでね
466:デフォルトの名無しさん
13/11/15 21:53:29.21 .net
何を解析したいのかも書かない奴がなんでか偉そうだね
467:デフォルトの名無しさん
13/11/15 23:07:19.82 .net
川越で解析料理なるものを初めて頂く機会があったが、どうせ薄味でお上品な料理ばかりだろという先入観が打ち砕かれたよ
9000円分の満足感があったかと言われると、まあ貧乏人なので牛丼と比べてNoと言ってしまうのだけど
9000円分の仕事をきっちり味わえたな、という実感はありました
468:デフォルトの名無しさん
13/11/16 03:45:41.63 .net
誤表記詐欺ですねわかります
469:デフォルトの名無しさん
13/11/19 22:00:41.96 .net
○懐石料理
×解析料理
470:デフォルトの名無しさん
13/11/19 23:58:42.94 .net
そう言えばNHKで「会席料理」ってやってて、「あれ?懐石料理じゃないの?」と思ったら
読みは同じでも別の料理だった
チラ裏
471:デフォルトの名無しさん
13/11/20 00:09:28.37 .net
ふうむパーティーフードの訳かしらと英辞郎引いたら、a kaiseki mealだと…
472:デフォルトの名無しさん
13/11/20 17:38:55.81 .net
このスレにふさわしい話題なので
URLリンク(www.amazon.co.jp)
中古(これはひどい)
原価の9割の価格付けて
2013年9月発売の本なのに「経年劣化」とか
「多少のキズ」とか()
URLリンク(www.amazon.co.jp)
裁断済の書籍になります。書籍本体の表紙・背表紙・本の背中が裁断されています
(書籍本体の表紙・背表紙・本の背中はありません)。
その他、カバー・帯を裁断している場合があります。
ページ抜けはチェックした限りではありませんが、見落としがある可能性があります。
経年劣化により多少のキズ・ヨゴレ・ヤブレがあります。
ご了承の上、お買い求め下さい。発送は防水包装の上、メール便またはゆうメールを使用する予定です。
473:デフォルトの名無しさん
13/11/20 17:41:14.68 .net
NHKは勝手に造語造るの好き
474:デフォルトの名無しさん
13/11/20 18:06:14.99 .net
>>462
本屋で見かけたけどどうでもいい内容の本だったわ
475:デフォルトの名無しさん
13/11/20 18:46:31.55 .net
ようやるわと思ったら中国人ぽい名前が並んでるな
いいのかインプレス
476:デフォルトの名無しさん
13/11/20 20:26:04.41 .net
中国人だからどうだというんだ。
だったら差別したいの?
477:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/12/15 01:33:08.29 .net
マイクロソフトのml.exe(VS2010付属)なのですが、
invokeなどがどんなコードを生成してるのか調べる方法はありますか?
リストに出そうとしているのですが、.XALLなどでも表示されません。
479:デフォルトの名無しさん
13/12/16 08:37:41.69 .net
>>468
デバッガで実行して逆アセンブル表示見れば?
480:デフォルトの名無しさん
13/12/31 19:12:15.66 .net
アセンブラの解説サイトを読んでるんですけどレジスタの説明がいろいろ変わって混乱しています
たとえばAXレジスタっていってるところもあればEAXレジスタっていってるところもああります。同じものと考えていいんでしょうか?
481:デフォルトの名無しさん
13/12/31 19:17:09.98 .net
>>470
AXとEAXとALとAHとRAXの違いなんてぐぐればすぐわかるだろ
482:デフォルトの名無しさん
13/12/31 20:57:53.32 .net
AXもEAXもレジスタというよりアキュムレータな
483:デフォルトの名無しさん
13/12/31 21:02:34.09 .net
AXもEAXもレジスタ
484:デフォルトの名無しさん
13/12/31 23:10:57.04 .net
AXだけが特別扱いになってるのは8086の名残りだけだから、
今となってはわざわざ特別扱いしてアキュームレータとか言う理由はないな。
485:デフォルトの名無しさん
14/01/01 02:11:33.12 .net
bxもベースレジスタって名前なかったっけ
んでcxがカウンタでdxがデータだっけ?
axが特別っつーか、全部に役割持たせてたんだと思う、当初は
486:デフォルトの名無しさん
14/01/02 00:24:45.35 .net
>>474
昔(Z80とか8086)はA系レジスタ向けの演算命令が他のB~系レジスタよりも
多くてA系はアキュムレータだと説得力があった記憶があるけど、
今はどのレジスタも演算命令数は同じというか、差別されていないの?
487:デフォルトの名無しさん
14/01/02 00:31:24.41 .net
IA-32やX64でも差別されてるよ
488:デフォルトの名無しさん
14/01/02 02:54:44.28 .net
Cの関数の戻り値はEAX(キリっ
489:デフォルトの名無しさん
14/01/02 03:02:14.43 .net
ABIに拠るし構造体をEAXで返すことはないと思う
490:デフォルトの名無しさん
14/01/02 09:59:16.22 .net
アキュムレーターは索引レジスタに使えないというイメージがあったが、
32bitアドレッシングからは[eax+ecx+12]とか使えるしなぁ
491:デフォルトの名無しさん
14/01/03 00:00:03.75 .net
建て増し構造というか奇形というかスッキリしなさがx86系の嫌いなとこだなあ。
MC68000なんか今触っても整然としてて美しいし。
x64で大幅に改善されたというか、やっと68000に追いつけたんだなぁ。
492:デフォルトの名無しさん
14/01/03 00:35:29.00 .net
アドレスレジスタとデータレジスタが別なアーキテクチャは最初から糞
493:デフォルトの名無しさん
14/01/03 01:06:13.22 .net
オフセットや相対ジャンプに16ビットの制限のある68000は糞
494:デフォルトの名無しさん
14/01/03 02:09:13.49 .net
>>482
アキュームレータとベースレジスタが各一つしかないとか、個数の制限があればそうだね。
でも、十分な数が用意されてるから、実際には困るケースなんて皆無なんだ。
C言語との組み合わせを考えたら、データとアドレスがハードウェアレベルで区別されてるのは好ましいことだしね。
>>483
デコボコしたメモリモデルなんてものがあって8bit時代を引きずり続けたx86にはとてもかなわないよ。
495:デフォルトの名無しさん
14/01/03 02:11:58.78 .net
>>484
データレジスタは8つでは足りないしアドレスレジスタは8つ(7つ)も要らん。要はバランスが悪い。
496:デフォルトの名無しさん
14/01/03 02:15:29.84 .net
>>484
>C言語との組み合わせを考えたら、データとアドレスがハードウェアレベルで区別されてるのは好ましいことだしね。
具体的にメリットをご説明下さい。
497:デフォルトの名無しさん
14/01/03 02:18:20.25 .net
>>484
>デコボコしたメモリモデルなんてものがあって8bit時代を引きずり続けたx86にはとてもかなわないよ。
8bit時代からのしがらみなんてなかった筈なのにセグメントでメモリ管理してた68kMacもそう変わらんよ。
498:デフォルトの名無しさん
14/01/03 02:19:39.55 .net
>>484
>アキュームレータとベースレジスタが各一つしかないとか、個数の制限があればそうだね。
6800乙w
499:デフォルトの名無しさん
14/01/03 02:24:52.53 .net
>MC68000なんか今触っても整然としてて美しいし。
当時としてはマシな部類だったが、今こんなこと言ってる奴はアフォ
500:デフォルトの名無しさん
14/01/03 09:05:56.66 .net
RISC原理主義者がきた~w
501:デフォルトの名無しさん
14/01/03 10:37:25.99 .net
データ=アドレスのレジスタ1個でも気合でどうにかなるだろ
502:デフォルトの名無しさん
14/01/03 11:18:59.86 .net
68000を否定するとRISC原理主義者って意味分からん。
503:デフォルトの名無しさん
14/01/03 15:15:03.31 .net
どんなにアーキテクチャが優れていてもソフト資産がなければ糞
すぐ消える
504:デフォルトの名無しさん
14/01/03 15:54:06.91 .net
組み込みならソフト資産なんて関係無いだろう
505:デフォルトの名無しさん
14/01/03 15:54:47.93 .net
パソコン用なんかではその通りだが、特定用途向けとかなら事情が違う >ソフト資産がなければ糞
506:デフォルトの名無しさん
14/01/03 15:57:57.54 .net
>>494
メーカー提供や他社製品のサンプルプログラムやライブラリ、RTOSとか、組み込み用途でも
あれば便利なソフト資産と呼べるものは存在するよ。
507:デフォルトの名無しさん
14/01/03 18:15:52.10 .net
本来表に公開することのないような出来上がったソフトのことじゃなくて
開発するためのソフトの話か?
そりゃある方が良いのは当たり前なことだが、そんなのわざわざ書くことじゃないだろ。
508:デフォルトの名無しさん
14/01/03 18:26:49.96 .net
>そんなのわざわざ書くことじゃないだろ。
なぜ??
509:デフォルトの名無しさん
14/01/03 18:58:28.29 .net
86系と68系の話の流れの>>493に対してだから、
ここでいうソフト資産とは、そのアーキテクチャ向けに
作られたソフトのことだろ。
開発のためのソフトじゃなく。
510:デフォルトの名無しさん
14/01/03 19:06:21.98 .net
>>499
>ここでいうソフト資産とは、そのアーキテクチャ向けに
>作られたソフトのことだろ。
「メーカー提供や他社製品のサンプルプログラムやライブラリ、RTOSとか」ってのは
それから外れてないだろ。
511:デフォルトの名無しさん
14/01/03 19:11:12.14 .net
>>497
> 開発するためのソフトの話か?
良く分かってないみたいだけどツールかなんかと勘違いしてね?
512:デフォルトの名無しさん
14/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:デフォルトの名無しさん
14/01/03 21:12:09.54 .net
>>502
> 8個で足りないんだ?x86(IA-32)だと汎用レジスタは何個だったかな?
URLリンク(www.intel.com)
> 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:デフォルトの名無しさん
14/01/03 21:21:49.84 .net
>>502
>8bit CPUと比較しなけりゃならないx86が恥ずかしいって、わかんないのかな。
汎用レジスタがないのはMC68000もMC6800も同じじゃないの? x86? 汎用レジスタあるけど?
515:デフォルトの名無しさん
14/01/03 22:34:07.51 .net
制限だらけのx86が恥ずかしげもなく汎用レジスタを名乗り(実際は命令によって割り当てられないor割り当てることを強要される事が多々ある)
制限がなく数も十分ありデータとアドレスの区別をしてなお整然とした68000のデータレジスタのありかたを罵倒する
516: 滑稽だねえ おたくら今からAMDがもたらしてくれた汎用レジスタたっぷりなx86からIntelがいつまでも放置して汚らしかったx86に戻れんの?
517:デフォルトの名無しさん
14/01/03 22:39:20.79 .net
>>504
MC6800は8bit CPUだから別にいいの。8bit CPUは可能な限りシンプルであるべきだから。
x86が汚らしいのは32bitアーキテクチャに不合理なもんを持込みすぎてるからであって
あれが8bitないしその建てましの16bitから出てこないのであれば全然なんも問題ないの
518:デフォルトの名無しさん
14/01/03 22:39:56.02 .net
(なんか語り始めた・・・)
519:デフォルトの名無しさん
14/01/03 23:06:26.22 .net
プログラマとしてはデータ/アドレスどちらでも使える汎用レジスタは嬉しいけど、
アドレス線に専念出来るアドレスレジスタとデータ(計算)に専念出来る
データレジスタを分けるのは回路設計的には理にかなっているんじゃないの?
520:デフォルトの名無しさん
14/01/03 23:43:37.21 .net
>>505
>AMDがもたらしてくれた汎用レジスタたっぷりなx86
AMD64でR8-R15使うときの命令コードってどんなんか知ってる?
521:デフォルトの名無しさん
14/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:デフォルトの名無しさん
14/01/04 03:02:46.89 .net
はい、分かってないこと確定ですw
523:デフォルトの名無しさん
14/01/04 03:27:26.48 .net
これは
524:デフォルトの名無しさん
14/01/04 03:29:29.10 .net
>あれが8bitないしその建てましの16bitから出てこないのであれば全然なんも問題ないの
ふむふむ
525:デフォルトの名無しさん
14/01/07 11:16:45.98 .net
x64でVCではインラインアセンブラが廃止されたからまたこのスレ流行るかと思ったらそうでもないのな
compiler intrinsicsがあるからデバドラでも作らない限りあまり用途はないのか?
526:デフォルトの名無しさん
14/01/07 14:47:47.76 .net
SSE2のMOVSDとAVXのVMOVSDはニモニック以外なんか違いあるの?
527:デフォルトの名無しさん
14/01/08 16:05:02.11 .net
AMDがx64作れるようになったのは文句言って来そうな
MotorolaをIntelが潰してくれたからだろ
528:デフォルトの名無しさん
14/01/09 11:49:16.95 .net
それもあるし、IA-64の失敗で迷走してた事もあるんじゃね
実際鯖はXeonで十分だしソフト資産も多いもんなあ
529:デフォルトの名無しさん
14/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:デフォルトの名無しさん
14/01/11 09:25:44.97 .net
SSEスレは敷居が高いんでこっちでいいかな
ANDPSやORPSというのは何のためにあるのでしょう?
整数用のPANDやPORはわかるのですが
浮動小数点の論理演算というのがピンとこない
531:デフォルトの名無しさん
14/01/11 09:33:07.89 .net
わからんけど論理回路組んでいったらそういう操作が余ったので命令にしたんじゃないの?
それかfrexp()とかldexp()みたいな関数を作るためとか
532:デフォルトの名無しさん
14/01/11 15:52:02.89 .net
SSE命令がが整数演算に対応したのはSSE2からだよ
そのせいじゃないの?
533:デフォルトの名無しさん
14/01/12 19:53:20.99 .net
比較命令とかでマスク作って2つのレジスタの任意要素を合成とか
符号ビットいじって絶対値や符号反転とか
整数、少数命令の混在はペナルティが入るから、頻度は少なくても無いと困る
534:デフォルトの名無しさん
14/01/13 10:05:08.34 .net
なるほど、ありがとうございます。
確かに符号や比較命令のマスクに使えますね。
整数、浮動小数点の混在にペナルティが入るのは知りませんでした。
535:デフォルトの名無しさん
14/01/14 03:58:16.98 .net
Core i (Nehalem) 以降のIntel CPUにある制約ね >ペナルティ
昔は命令長節約のために整数用にもandpsとかを使うなんてのも往々にして行われていたけれど
今のIntel CPUでは逆に遅くなるという寸法
536:デフォルトの名無しさん
14/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:デフォルトの名無しさん
14/02/05 02:45:14.99 .net
>>525
おまえ大丈夫か?w
538:デフォルトの名無しさん
14/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:デフォルトの名無しさん
14/02/09 20:32:36.55 .net
はじめて読む486を買ってきたけど、
テストプログラムの環境ってWin3.1を想定してるのか?
それともDOS?
実行環境が作れない時点で挫折しそう。。。
540:デフォルトの名無しさん
14/02/09 21:22:13.69 .net
DOS
VMware か何かを使って、FreeDOS が動く....かなぁ。
541:デフォルトの名無しさん
14/02/09 21:22:19.62 .net
DOS
542:デフォルトの名無しさん
14/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:デフォルトの名無しさん
14/02/09 22:00:38.07 .net
タダで配ってる Visual C++ Express版に ml.exe 入ってるしなんとかなるべ
544:デフォルトの名無しさん
14/02/09 22:17:26.76 .net
ならねーよ
545:デフォルトの名無しさん
14/02/09 22:26:41.38 .net
アセンブラはLinkさえ手に入れば最近のml.exeでもいけるよ~
DOS用にアセンブルする場合は ml /omf を忘れずに
CはOpenWatcomで間に合うな
546:デフォルトの名無しさん
14/02/09 22:32:20.56 .net
>>534
ありがとう。
火曜に試してみるよ
547:デフォルトの名無しさん
14/02/09 22:37:02.43 .net
16bitのコンパイラならTurbo CやLSIC86試食版があるな。
LSIC86試食版はMASMとは書式が違うがアセンブラも入ってるし使い方次第では便利に使えるだろう。
548:デフォルトの名無しさん
14/02/09 23:33:16.06 .net
A86だったかR86ね。
あれは、たとえばORG擬似命令が無くて、RS擬似命令で、(目的アドレス - 現在アドレス) の
サイズのメモリを確保してやることでアドレスを調整するとか、あれこれ、知ってる人に
聞かないとわかんないテクが要るのが大変。
ValLinkとArrowAsmってのが2000年頃の定番だったが、今どうなってることやら。
NASMもNASMでMASMと違うからねぇ。
549:デフォルトの名無しさん
14/02/10 04:57:21.71 .net
URLリンク(www.agner.org)
550:デフォルトの名無しさん
14/02/24 19:05:52.56 .net
おすすめ書籍とかサイトなど御座いますか?
551:デフォルトの名無しさん
14/02/24 19:07:46.95 .net
ないですね。
552:,,・´∀`・,,)っ-○○○
14/02/26 00:38:53.88 .net
先にCOMET-II/CASL-IIを勉強したらいいんじゃない?
これは情報処理技術者のテキスト読んでるだけでたいていクリアできる
資格もとれて一石二鳥。
x86ならこれ1冊で。あとは個々の命令の仕様はIntelのサイトからPDF落とす。
・はじめて読むPentium マシン語入門編
553:デフォルトの名無しさん
14/02/26 00:46:38.24 .net
PCを機械語で使うのが目的なのか、他の何か特定のデバイスなのか、
対象はなんでもいいのか、で答えが違うな。
554:デフォルトの名無しさん
14/02/27 02:16:08.54 .net
>>539
聖書がおすすめ
555:デフォルトの名無しさん
14/02/27 06:04:53.44 .net
新約旧約どっちがいい?
556:デフォルトの名無しさん
14/02/27 06:10:52.32 .net
コーランが良いアルニダ
557:デフォルトの名無しさん
14/03/12 04:04:41.92 4B5tOSzi.net
NXビットとかってアセンブラでいじれるの?
558:デフォルトの名無しさん
14/03/12 04:57:51.84 /EKU/g4K.net
アセンブラでいじれなきゃ他の言語でも無理ダナ
559:デフォルトの名無しさん
14/03/12 17:09:14.41 Rs2gHvws.net
wrmsrで変更できるね
リング0の特権命令だけど
560:デフォルトの名無しさん
14/05/16 01:36:30.34 750USUyV.net
同値xorがゼロクリアになるのはテクではなくブール演算の初歩知識ではなかろうか
煽りでなく、むしろその手の基礎から始めてググり続けると良いのでは
561:デフォルトの名無しさん
14/05/16 02:06:29.00 6rXJBimE.net
初心者に問題。
AL に入っている数値を [DI] に16進数2ケタで出力せよ。
※ [DI+00] に上位桁、[DI+01] に下位桁
562:デフォルトの名無しさん
14/05/16 03:00:26.63 ZWSdCtrz.net
学校の宿題他人に訊くなよ…。
563:デフォルトの名無しさん
14/05/16 08:30:06.10 hJC//Tt9.net
>>549
まるち
564:デフォルトの名無しさん
14/05/16 08:33:06.36 hJC//Tt9.net
>>550
mov [DI], al
and [DI], 0x0F
shr al, 4
and al, 0x0F
mov [DI+01], al
565:デフォルトの名無しさん
14/05/16 10:03:09.08 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:デフォルトの名無しさん
14/05/20 19:52:17.51 EAxy/lYF.net
そこで Virtual PC ですよ。
567:デフォルトの名無しさん
14/05/25 20:19:23.16 t1V1lNcr.net
アセンブラの学習するのにおすすめの参考書あります?
cがちょっとできるレベルなんだけど
568:デフォルトの名無しさん
14/05/25 22:19:07.25 z/SkfJN9.net
基本情報のアセンブラの対策本でも読めばいいんじゃね
569:デフォルトの名無しさん
14/05/26 08:56:21.98 lvFZnHPn.net
CASL付きポケコンの説明書とかw
ただポケコンがオワコンを通り越して生産終了w
570:デフォルトの名無しさん
14/05/26 12:04:51.49 ptXAqcmg.net
「漢字コード」さんはポケコンの時代で時間が止まってる上にそういう自覚がない人でしょ。
だから話が通じない上に一人で逆上してる。
だから放置されてるのに...
571:デフォルトの名無しさん
14/05/26 14:27:02.60 y9c5KjIu.net
デムパさん?
572:デフォルトの名無しさん
14/05/28 10:59:15.94 4srfku2X.net
>>550
ビッグエンディアンは好かん。
573:デフォルトの名無しさん
14/06/03 17:53:17.36 xWuYqldz.net
URLリンク(www5c.biglobe.ne.jp)
このページを見ながら分岐命令を勉強しているんですがJL・JLE・JNG・JNGE命令などにあるフラグで
SF<>OFなどの<>は何を意味するんですか?
574:デフォルトの名無しさん
14/06/03 18:08:44.18 pVBw+Lsj.net
>>562
not equal
575:デフォルトの名無しさん
14/06/03 22:44:28.88 xWuYqldz.net
>>563
返答ありがとうごじます。危うく詰みそうになりました
576:デフォルトの名無しさん
14/06/05 17:54:50.58 /tv+CkMy.net
データ転送命令なのですが
MOV AL,BYTE PTR DS:[ECX+EDI]
この意味がよくわかりません
BYTE PTRがバイト宣言?なのはわかりますが、後ろ側のDS:[ECX+EDI]ってのがいまいちぱっとわかりません
577:デフォルトの名無しさん
14/06/05 18:57:10.25 M285qaIr.net
この状況でds修飾は不要 。c言語風に書くとこんな感じ
al = *(byte *)(ecx+edi);
578:デフォルトの名無しさん
14/06/05 20:58:42.27 55VBH6H6.net
DSは必要
579:デフォルトの名無しさん
14/06/05 21:37:09.24 o52VmkJp.net
ストリングス転送命令ではなさそうだけど?
580:566
14/06/05 22:18:58.64 /tv+CkMy.net
ECXにEDIを足したものをALにコピーって意味でいいんでしょうか?
後ろのDS:[]ってどういう意味があるんでしょうか?
581:デフォルトの名無しさん
14/06/05 22:43:49.27 bOGqmnDA.net
機械語として見るとセグメントオーバーライドプレフィックスが付いている(ように見える)、
ということだろうけど、普通のメモリアクセスのセグメントはDSなので冗長(必要ない)。
ECX+EDI の結果をアドレスとして、そのアドレスに(バイト単位で)メモリアクセスしてALに
コピー、という意味だけど、そもそも正しい場所を解析しようとしているのか怪しいな。
582:デフォルトの名無しさん
14/06/05 22:49:00.65 dSg5bErh.net
x64のRIP相対アドレッシングの場合はどうなんのかな
583:デフォルトの名無しさん
14/06/06 06:48:37.37 NiHdmLTJ.net
mov ax,[rip+4]
初心者の範疇ではないな
584:デフォルトの名無しさん
14/06/07 00:39:40.37 42HLXVNl.net
>>544
Windows的にはNTからだろ?
585:デフォルトの名無しさん
14/06/07 04:28:15.67 HlN+9CGy.net
オペランドを1つしか取らないアセンブリってどの種類に分けられる?
初歩的かもしれないけどぐぐるときに困ってるから教えてほしい。
586:デフォルトの名無しさん
14/06/07 04:58:06.00 ftf2LwSc.net
>>574
>オペランドを1つしか取らないアセンブリってどの種類に分けられる?
プロセッサに拠る
587:デフォルトの名無しさん
14/06/07 04:59:38.74 HlN+9CGy.net
16ビットマイクロプロセッサです
588:デフォルトの名無しさん
14/06/07 05:08:45.69 ftf2LwSc.net
そんなのいくらもあるよ
URLリンク(bitsavers.informatik.uni-stuttgart.de)
URLリンク(datasheets.chipdb.org)
URLリンク(www.freescale.com)
URLリンク(documentation.renesas.com)
589:デフォルトの名無しさん
14/06/07 11:26:24.62 u3dUy4Sv.net
1アドレス方式とか1オペランド方式、という分類はあるけど、それのこと?
590:デフォルトの名無しさん
14/06/07 15:04:36.72 bare2SL/.net
>アセンブリ
という用語をどういう意味で使ってるかによるかな。
個々のアセンブリ命令自体には特に分類はない。
そういう命令を主に使うCPUのアーキテクチャといえば、
1オペランド方式とかアキュムレータマシンとかそんな感じか?
591:デフォルトの名無しさん
14/06/07 17:07:24.15 uqMqHKO4.net
PLCも仲間入り?
592:デフォルトの名無しさん
14/06/07 21:17:21.71 VEYGFS+g.net
>>571
MASM64はラベルとかはrip相対になってるな
NASMはDEFAULT REL使ってる
593:デフォルトの名無しさん
14/06/08 11:30:26.96 U9hBzx6T.net
Windowsの64bit EXEに再配置の仕組みは残ってるの?
rip相対と混在できるかってことだけど
594:デフォルトの名無しさん
14/06/08 12:15:57.26 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:,,・´∀`・,,)っ-○○○
14/06/08 12:25:05.93 qgapksJl.net
mov命令だけだったっけ?disp64使えたのって
SIBなしのdisp32が相対、SIBありが絶対
597:デフォルトの名無しさん
14/06/08 13:03:19.30 0lLCwyof.net
>>584
64bitのメモリオフセットはmovでもraxだけだね(0xA1, 0xA3)
即値なら他のレジスタも使えるけど
598:デフォルトの名無しさん
14/06/08 15:18:04.41 gOfGwFVR.net
いまML64で遊んでるけど、混在できてるかんじですね。
LEA RAX, LABELxx
MOV RAX, OFFSET LABELxx
LEA使うとrup相対で下だと絶対になってるような。
64bitだとLEA使ったほうが良いの?
599:,,・´∀`・,,)っ-○○○
14/06/08 17:38:33.43 qgapksJl.net
別にRIP相対アドレスなら速くて絶対アドレスは遅いなんてことはない。
Haswellではmovは1サイクルあたり2命令のスループット。
leaは1命令。
Atomとかがターゲットなら割と命令長は気にしたほうがいいけど
(命令フェッチが8byte/clkしかないから)
600:デフォルトの名無しさん
14/06/09 01:56:46.89 r1q53MGM.net
リロケーションのコストを気にしなきゃいかんのは
よほどでかいDLLを2つ以上作るときくらい
601:デフォルトの名無しさん
14/07/20 04:01:19.48 jA7npZ7N.net
英文字を入力して大文字なとき小文字に変換するアセンブラコードを教えて下さいm(_ _)m
602:デフォルトの名無しさん
14/07/20 04:59:50.88 glgeKy6r.net
なんでこのスレはAssembly言語をAssemblerって言うの?
603:デフォルトの名無しさん
14/07/20 05:05:02.94 RQRWxhz5.net
URLリンク(ja.wikipedia.org)
> アセンブリ言語で書かれたプログラムを機械語プログラムに変換する事をアセンブル (assemble) すると言い、
> それを行うプログラムの事をアセンブラ (assembler) と言う。なお、アセンブリ言語の意味で「アセンブラ」
> または「アセンブラ言語」(Assembler Language)と呼ぶ場合も多い[注 1]。
> 脚注
> 1. IBMはSystem/360から2011年現在まで一貫してアセンブラ言語(Assembler Language)と呼んでいる。
> 例:IBM High Level Assembler
604:デフォルトの名無しさん
14/07/20 05:24:42.88 W4duPEEG.net
>>589
C言語で
char c = 'H';
if ('A' <= c) {
if (c <= 'Z') {
c += ('a' - 'A');
}
}
をコンパイルして出てくるアセンブリコードを参考にしてみるとか
605:デフォルトの名無しさん
14/07/20 05:48:11.47 RnwVM2ZH.net
>>591
Assembler languageでググるとAssembly languageが大量に出てくるけど、
このスレはIBMかぶれなの?
てか組立言語(Assembly lavigne)を
組立機(Assembler)って言うの気持ち悪くね。
606:デフォルトの名無しさん
14/07/20 08:34:23.52 1VhfX4Ek.net
IPAとかもアセンブラ言語って呼んでた気がするからもう気にしないことにしてる
607:デフォルトの名無しさん
14/07/20 09:11:23.94 Hpo7L/hK.net
>>593
単にアセンブラって言うことはよくある。「アセンブラで書く」とか
コンテキストで、プログラムのアセンブラとは区別が付く
用語のバラバラ感は、英語でも同様みたいだね
URLリンク(en.wikipedia.org)
608:デフォルトの名無しさん
14/07/22 13:16:19.12 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
14/07/24 01:43:01.19 hv8nubjy.net
>>596
ありがとうございます
それは、CASLⅡの文法ですか?CASLⅡの文法でお願いしますm(_ _)m
URLリンク(detail.chiebukuro.yahoo.co.jp)
上に2つの問題があるので、日が出る前に誰が教えて下さい・・・
ウェブマネーでもアップルカードでも現金でもどんな形でも1000円分あげます
先着でお願いします。その際にメアド明記を必ずお願いします。
大学の単位掛かってるのでお願いします・・
611:デフォルトの名無しさん
14/07/24 02:40:58.69 weGa5ogB.net
宿題は自分でやろう
# つか、大学でCASLII? 底辺だな…。
612:デフォルトの名無しさん
14/07/24 02:48:29.48 MYJWPOnC.net
>>598
いやCASLを題材としてCPUの内部までやるところもあるよ、教科書もあったけれどもどっかにいってしまった‥もう一度手元に呼び戻したいものだ
613:デフォルトの名無しさん
14/07/24 02:57:56.22 weGa5ogB.net
> いやCASLを題材としてCPUの内部までやるところもあるよ、
CASL題材に内部までやったところで底辺には変わらん
せめてOS動く程度のアーキテクチャでFPGAで実装くらいやってのもんだろw
614:デフォルトの名無しさん
14/07/24 06:16:57.15 MYJWPOnC.net
そうか、最近なら FPGA っていうのはありだね
615:デフォルトの名無しさん
14/07/24 14:20:58.97 2qFeAMu1.net
>大学の単位掛かってる
赤点取った後の、お情け課題提出に見える。
616:デフォルトの名無しさん
14/07/25 03:38:44.05 5HeCUYeT.net
どちらにしても、石もアセンブラも後出しってのはなぁ…
CASLなら初めからCASLと書いて欲しいかな
617:,,・´∀`・,,)っ-○○○
14/07/25 08:54:19.70 8TTeu6gK.net
入力するのがアルファベットって決まってるなら
c |= 0x20;
だけでいいけどな
618:デフォルトの名無しさん
14/07/25 09:39:55.89 cQJQccdW.net
丁度良い練習問題は Base64
619:デフォルトの名無しさん
14/07/28 18:45:13.44 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:デフォルトの名無しさん
14/07/28 19:29:51.50 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:デフォルトの名無しさん
14/07/28 23:02:52.60 pFFfm4RG.net
普通に3や5で割るより早いのかのぉ?
622:デフォルトの名無しさん
14/07/29 11:55:06.03 M1sSUXRJ.net
『ハッカーのたのしみ』の10章かな
623:,,・´∀`・,,)っ-○○○
14/08/07 20:45:20.65 mDZmRo1A.net
MMX/SSE/AVXの整数演算では除算命令がないから逆数との積はしょっちゅう使うよ
624:,,・´∀`・,,)っ-○○○
14/08/07 22:11:11.87 mDZmRo1A.net
ちなみに10進数で9の倍数の求め方ってどうやるか知ってる?
全部の桁の数字を、最後の1桁になるまで足して9になればそれが9の倍数。
9にならなければそれが剰余。
3の場合も、整数値を4進数とみなして同じことをやれば
掛け算すら使わずに3の剰余を求めることができる。
ビット演算+シフト+足し算だけ。
収束にやや時間はかかるけどいろいろ応用は利く。
(CASL/COMETって掛け算命令すらなかったよね)
625:デフォルトの名無しさん
14/08/07 22:20:07.93 bcHrnzcz.net
>>611
>ちなみに10進数で9の倍数の求め方ってどうやるか知ってる?
>全部の桁の数字を、最後の1桁になるまで足して9になればそれが9の倍数。
BCDでもない限りは「10進数で」「全部の桁の数字」って言ってる時点で除算が発生してるってことだから
素直に9で割って余りがあるか判定したほうが良い。
626:デフォルトの名無しさん
14/08/08 05:17:13.57 1UU7vf/D.net
>>611
小学校で習う
627:デフォルトの名無しさん
14/08/08 10:20:34.18 3pQsoEzr.net
できれば0は9の倍数の仲間に入れて欲しい
628:デフォルトの名無しさん
14/08/08 10:25:22.80 gW33htdT.net
ちなみに2進数で1の倍数の求め方ってどうやるか知ってる?
全部の桁の数字を、最後の1桁になるまで足して1になればそれが1の倍数。
1にならなければそれが剰余。
629:,,・´∀`・,,)っ-○○○
14/08/08 23:48:43.27 QdNtltyv.net
>>612
別に9の倍数を求める必要はないよ。あくまで例として出しただけで。
3と5の剰余を求めたいんでしょ。3なら分割統治法で2ビット値を足し続ければいい。
整数除算はモダンなCPUでも何十サイクルもかかるからビット演算+加減算に
展開したほうが速い場合は多々ある。
> 素直に9で割って余りがあるか判定したほうが良い。
除算・剰余命令が使えないCPUで同じこといえるの?
9の倍数の判定は、7かけてから6ビットに縮約することでできる。