11/08/28 12:36:52.66 .net
初心者OK!質問大歓迎!のアセンブラのスレッドです。
基本情報の勉強中の人、PICやH8を勉強中の学生などなど…
2:デフォルトの名無しさん
11/08/28 13:59:51.60 .net
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
3:デフォルトの名無しさん
11/08/28 14:07:20.38 .net
アセンブラ最高や!
C言語なんか最初からいらんかったんや!
4:デフォルトの名無しさん
11/08/28 14:18:11.54 .net
マシン語最高や!
アセンブラなんて最初からいらんかったんや!
5:デフォルトの名無しさん
11/08/28 14:20:20.98 .net
アセンブラを勉強するのにいい、unix系の本がありますか?
6:デフォルトの名無しさん
11/08/28 15:25:38.65 .net
だいぶ前に落ちたっきり次スレが立たなかったアセンブラスレの
次スレを立てましたので、以後そちらで。
スレリンク(tech板)l50
7:デフォルトの名無しさん
11/08/28 19:26:11.59 .net
>>6
初心者用らしいしここでいいんじゃね
8:デフォルトの名無しさん
11/08/28 19:53:10.57 .net
初心者用なら質問用テンプレが居るな、特にアセとなると
石、アセンブラが何か分からんと答えられんケースあるし
【CPU】 アセンブラではCPU(通称「石」)によって回答が全く違ってくることも多いので必須です。
まったく分からなくても「Windowsが動くCPUです」など、分かるだけのことを書いてください。
【アセンブラ】 これも分かれば。コマンド名とかでもいいです。
あとは何をテンプレにすべき?
9:デフォルトの名無しさん
11/08/28 21:36:27.48 .net
書籍なんかがあればいいと思うけど
10:デフォルトの名無しさん
11/08/31 12:03:39.49 .net
質問します
『独習アセンブラ』という本を買って来て、文字を出力するプログラム(p.5)をつくってみたのですが、うまく動きません
nasm -f bin dispchar.asm -o dispchar.com
こう入力してから dispchar.com を動作させると、つぎのように表示されました
このバージョンの \dispchar.com は、実行中の Windows のバージョンと互換性がありません。コンピューターのシステム情報を確認して、
プログラムの x86 (32 ビット) のバージョンと x64 (64 ビット) のバージョンのどちらが必要か確認してから、ソフトウェアの発行元に問い合わせてください。
windows 7 64 bit でとりあえず動作させたいのですが、どうすればよいのでしょうか?
【CPU】 intel core i5-2400
【アセンブラ】 NASM version 2.09.10 compiled on Jul 15 2011
11:10
11/08/31 12:05:03.29 .net
dispchar.asm のソースを一応載せておきます
>cat dispchar.asm
; dispchar.asm
mov ah, 02
mov dl, 31h
int 21h
mov ah, 4Ch
mov al, 0
int 21h
12:デフォルトの名無しさん
11/08/31 13:17:22.23 .net
>>10
それに乗ってるのは16bitのコードだから、win7 64bitでは動かないよ
アセンブラも多分16bitだから動かないんじゃないかな?
13:デフォルトの名無しさん
11/08/31 22:09:56.92 .net
>>12
えっ、そうなのですか
残念です
では64bitの環境で学習できるよいサイトはあるでしょうか?
14:デフォルトの名無しさん
11/08/31 22:13:55.85 .net
NASMはWin32版もある
15:デフォルトの名無しさん
11/09/01 02:22:30.05 .net
ピックやれピック
16:デフォルトの名無しさん
11/09/01 21:14:57.42 .net
>>13
32bitアセンブラコードは。。。
ほとんどwin32API呼び出しで、アセンブラの意味はないしねぇ。。。
>>15の言う通り、PICマイコンでアセンブラした方が遊べると思うけど、こっちのアセンブラが64bitOSで動くかも不安が在るな。。。
ためして見た人居る?
17:デフォルトの名無しさん
11/09/01 21:22:48.86 .net
実ハードで動かすことにこだわらず、エミュ使うのも手だと思うが。
18:デフォルトの名無しさん
11/09/01 21:28:50.15 .net
xpモードで開発&実行
19:デフォルトの名無しさん
11/09/01 21:57:17.07 .net
アセンブラで、C言語のcase文のように書きたいのですけどどう書けばいいですか?
また、イフ文のようにも書きたいんですけどどう書けばいいですか?
20:デフォルトの名無しさん
11/09/01 21:58:06.62 .net
あ、開発環境はMPASM
PIC16F84Aです
21:デフォルトの名無しさん
11/09/01 23:27:06.89 .net
基本的には無理。
定番としてはテーブルジャンプだけど、その石でできるかどうかは知らない。
22:デフォルトの名無しさん
11/10/02 00:57:45.07 .net
call adressを機械語にすると
E8 77 77 77 77 みたいになるけど
この77777777実際のアドレスと違うんだよね
どういう規則でこのアドレスは算出されてるの?
23:デフォルトの名無しさん
11/10/02 03:08:10.28 .net
call命令っつっても対応するオペコードは複数あるんだよ。
E8の場合はIPからの相対アドレスへのnear call。
24:デフォルトの名無しさん
11/10/02 05:49:48.47 .net
相対ジャンプの場合は、石によるけど、ジャンプ命令のアドレスからのオフセットか、
その次の命令のアドレスからのオフセット(8086はどっちだっけ)。
25:22
11/10/02 05:56:17.04 .net
8086はWindowsのことだよね?
逆算してみたら、次のコードの開始位置からの相対位置ですね
26:デフォルトの名無しさん
11/10/16 15:03:31.57 .net
BSR ラベル:16 で書くのと JSRではどっちのがメモリ食うのか分からないです。
長いならJSRですかね?
27:デフォルトの名無しさん
11/12/14 04:55:52.34 .net
石の種類によるけど、BSRは3~4バイト、JSRは4~6バイト。
BSR ラベル:8 と書ける石もあって、この命令は2バイト。
でも、一般的にBSRのほうがJSRよりもマシンサイクルが多い(=遅い)。
その差まで気にかけるほどシビアな条件にはならないようにハード選定時点で
考えられるはず。 ってもう見てないよな(w
28:デフォルトの名無しさん
11/12/14 18:44:46.56 .net
暇なんでやってみた
win32だとCでやるのと変わらんわ・・・
;ml hello.asm /link /subsystem:console
.386
.model flat, stdcall
GetStdHandle proto :DWORD
WriteConsoleA proto :DWORD,:DWORD,:DWORD,:PTR,:DWORD
ExitProcess proto :DWORD
includelib kernel32.lib
.data
STD_OUTPUT_HANDLE EQU -11
hello DB 'hello, world',0Dh,0Ah,0
.data?
OUTLEN DWORD ?
.code
mainCRTStartup proc
local STDOUT :DWORD
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov STDOUT,eax
invoke WriteConsoleA,STDOUT,offset hello,14,offset OUTLEN,0
invoke ExitProcess,OUTLEN
ret
mainCRTStartup endp
end
29:デフォルトの名無しさん
12/03/21 15:57:39.75 .net
64bitOS上の32bitアプリで関数コールにpushad popadだけ書いてretしたらエラー落ちするのは何が問題なんでしょう?
30:営利利用に関するLR審議中@詳細は自治スレへ
12/03/31 17:38:06.65 .net
>>29
.386
.model flat
.code
_start:
call testsub
ret
testsub:
pushad
popad
ret
end _start
ml test.asm /link /subsystem:console
Vista 64bit で動かしたけど、なんも問題ないっぽいけど。
31:営利利用に関するLR審議中@詳細は自治スレへ
12/04/01 01:39:15.92 .net
たのしそうだなー
32:営利利用に関するLR審議中@詳細は自治スレへ
12/04/01 21:06:07.23 .net
>>30
それ64bitOS上の64bitコードじゃね?
33:営利利用に関するLR審議中@詳細は自治スレへ
12/04/01 21:31:03.44 .net
バカ発見
34:営利利用に関するLR審議中@詳細は自治スレへ
12/04/05 16:38:17.56 .net
キチガイ発見
35:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 00:23:22.00 .net
アフォは自己紹介をする。
36:営利利用に関するLR審議中@詳細は自治スレへ
12/04/09 01:41:07.82 .net
>>35
早く自己紹介して
37:デフォルトの名無しさん
12/04/21 13:51:03.49 .net
アセンブリをCのソースに変換するフリーのデコンパイラって存在しますか?
38:デフォルトの名無しさん
12/04/21 13:58:08.54 .net
存在しますよ。
39:デフォルトの名無しさん
12/04/21 14:00:48.85 .net
検索キーワードを教えちくり
40:デフォルトの名無しさん
12/04/21 14:17:23.30 .net
英語で検索すればおk
41:デフォルトの名無しさん
12/04/21 14:18:27.72 .net
なるほど
ありがとう!やってみる
42:デフォルトの名無しさん
12/05/02 19:06:18.83 .net
フローチャート書いてるんですが
スタック操作命令のPOP,PUSHってどうやって書けばいいですか?
PUSHの場合これ出会ってますか?
SP←0+(GR1)
43:デフォルトの名無しさん
12/05/02 19:27:42.00 .net
フローチャートはコーディングじゃないから、箱(処理)の中に「GR1をスタックに保存」「GR1をスタックから復帰」とか、自分で分かりやすい風に書きゃいーよ。
44:42
12/05/02 19:34:10.73 .net
>>43
45: そうなんですか。 ありがとうございます
46:デフォルトの名無しさん
12/05/03 00:55:55.00 .net
68kの性能のいいディスアセンブラないですか?
例えばデータの直後に命令があったらそれを識別できるくらいのがありがたいのですが
47:デフォルトの名無しさん
12/05/12 20:56:41.58 .net
サブルーチンからメインルーチンヘジャンプ命令ってプログラム的には問題なんでしょうか?
たとえば
EXE START
LOOP IN BUF,LEN
CALL DISP
RET
DISP LD GR1,LEN
LAD GR2,1
CPL GR1,GR2
JZE LOOP
RET
BUF DS 256
LEN DC 1
END
これの場合風呂チャートはどう書けばいいでしょうか?
48:デフォルトの名無しさん
12/05/12 22:13:45.87 .net
何これ、CASL?
49:46
12/05/13 12:11:07.96 .net
>>47
CASL2です
50:デフォルトの名無しさん
12/05/15 15:50:00.32 .net
>>46
まず第一に、そのコード自体がまずい。
コール、リターンというのがどういう動作なのか理解してる?
コールは次の命令のあるアドレスをスタックに積み、ジャンプする。
逆にリターンはスタックから1つ取り出して、そのアドレスにジャンプする。
そのコードだとLOOPへジャンプする度にスタックを食いつぶしていくことになる。
本来ならループされた数だけ戻り先の処理が行なわれてしまい、戻った際の処理もおかしくなるところ。
(そのコードの場合は戻り先がたまたまRET…つまり、何もせずにリターンするために一応動くことには動くのだが)
51:デフォルトの名無しさん
12/05/19 14:27:41.30 .net
inline void __fastcall sincos( const float& angle, float& sin, float& cos)
{
_asm
{
fld angle
fsincos
mov edx, [cos]
mov ecx, [sin]
fstp dword ptr [edx]
fstp dword ptr [ecx]
}
}
これ正しい値を返さないんだけど、何か間違ってますか?(VC++2010EESP1)
52:デフォルトの名無しさん
12/05/19 14:32:51.37 .net
>>50
自分でトレースすりゃすぐに分かりそうなもんだが、何故人に訊く?
53:デフォルトの名無しさん
12/05/19 14:42:32.19 .net
fldの所でdword ptrは付けないの?
そのままだとtbyte ptrがデフォルトになっちゃうと思うんだけど
54:50
12/05/19 14:52:50.88 .net
angle 0.78539819
↓こうなる。何だよDENって。。
cos 1.0000000
sin 1.997e-039#DEN
↓正しくはこう
cos 0.70710677
sin 0.70710677
>>51
さっぱりわからんとです。ハード的なコアな問題じゃないかと思って聞いた。
>>52
fld dword ptr [angle]
こうしたが同じだった。
55:デフォルトの名無しさん
12/05/19 14:54:22.87 .net
>>53
悪い間違った
勝手にfldのサイズをインラインアセンブラが類推してdword ptrにしてくれた
正しくは
_asm {
fld dword ptr angle
fsincos
lea edx, cos
lea ecx, sin
fstp dword ptr [edx]
fstp dword ptr [ecx]
}
だね
movではアドレスではなく中身を取ってきてしまう
56:デフォルトの名無しさん
12/05/19 15:01:10.67 .net
また間違った 今起きたばかりで脳がボケている
&だから参照なんでアドレスが入っているんだね
だから最初のfldもアドレスを先にロードしてそこからさらに読み取ればうまくいった
_asm {
mov eax, angle
fld [eax]
fsincos
mov edx, cos
mov ecx, sin
fstp dword ptr [edx]
fstp dword ptr [ecx]
}
57:デフォルトの名無しさん
12/05/19 15:04:11.36 .net
>>53 DENはおそらくデノーマル数だろうな。
58:デフォルトの名無しさん
12/05/19 15:54:13.22 .net
>>53
>さっぱりわからんとです。ハード的なコアな問題じゃないかと思って聞いた。
ステップ実行すりゃ、一番最初の fld angle で失敗してることくらい一目瞭然だろ。
ひょっとしてデバッガの使い方分からんのか?
59:50
12/05/19 21:08:19.23 .net
>>55
そのコードで直りました!ありがとう!
>>57
うちのVCたんはレジスタ表示出来ないの
お茶目な奴なんだよ
60:デフォルトの名無しさん
12/05/19 21:16:04.76 .net
>>58
>うちのVCたんはレジスタ表示出来ないの
ツール(T)→設定(S)→上級者用の設定
にチェック入れてる?
61:デフォルトの名無しさん
12/05/21 02:07:11.52 .net
x86の浮動小数点演算って変な格好をしてるよなあ
8087というコプロセッサを使うために作られたアーキテクチャとは言えそのまま引きずってるし
SSE2を使うと精度は64bitに落ちるが一応倍精度演算出来るもんな
x64も最初はFPUをコンテキストスイッチで保存しない計画だったんでしょ
全部SSE2に切り替えようとした
でもどっから圧力が掛かったのか社内の意見で反発されたのか、64bitOSはFPUを保存する事にした
62:デフォルトの名無しさん
12/05/21 02:11:57.46 .net
あ、ちなみにSSE2には超越関数はもちろんないが、プログラムで組んでもFPUと互角か
FPUより速い場合が今のCPUでは普通
63:デフォルトの名無しさん
12/05/21 03:09:57.58 .net
>>60-61
日本語でおk
64:デフォルトの名無しさん
12/05/21 04:45:01.70 .net
>>62
意味が分からないなら無理に読まなくてもいいよ
65:デフォルトの名無しさん
12/05/21 05:14:03.65 .net
>>63
> 8087というコプロセッサを使うために作られたアーキテクチャとは言えそのまま引きずってるし
「~とは言え~し」の使い方が異常。
> SSE2を使うと精度は64bitに落ちるが一応倍精度演算出来るもんな
IEEE754でいうところのDouble precisionなのに何が「一応」なのか意味分からん。
66:デフォルトの名無しさん
12/05/21 05:54:25.35 .net
難癖付けるのだけはうまいな
Intelは互換性を重視したために今のような汚いアーキテクチャになった
これは意図的に選んだ道だ
いくらでも綺麗に設計しなおすチャンスはあったが敢えてそうしなかった
MSのVCのlong doubleが64bitであるようにFPUを切り捨てる計画は
かなり前からあったようだがIntelに押し切られるような格好でOSの設計
だけは譲られなかったのだろう
それからFPUの内部演算は全て80bitだ
だから64bitで計算するのと結果が異なる場合がある
67:デフォルトの名無しさん
12/05/21 06:11:06.67 .net
>>65
>Intelは互換性を重視したために今のような汚いアーキテクチャになった
8086の頃から汚かったゾ?
>これは意図的に選んだ道だ
「今のような汚いアーキテクチャになった」のは「結果」であって、「選んだ道」ではないが。
68:デフォルトの名無しさん
12/05/21 06:19:38.94 .net
>>65
>いくらでも綺麗に設計しなおすチャンスはあったが敢えてそうしなかった
432とか、80860とか、Itaniumとか、ハイエンド製品についてアーキテクチャを見直すチャレンジは何回かやってるよ。
69:デフォルトの名無しさん
12/05/21 12:43:10.15 .net
どこに言っても言葉尻だけ捉えて重箱の隅をつつくようなアホがいるから対応策は一つ
66 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
67 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
70:デフォルトの名無しさん
12/05/21 14:13:12.69 .net
>>67は言葉尻ではないよな
71:デフォルトの名無しさん
12/05/21 14:47:18.99 .net
69 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん
72:デフォルトの名無しさん
12/05/26 23:12:40.96 .net
スレ違だったらすみません
H8マイコンで、ボタンが押されるたびにLCDに表示されてるいる数を減らすのを作りたくて、ER4に MOV.W #D'5みたいに入れてそれをボタンが押されるたびに、一個づつ減らすように書いたのですが、そのER4の内容をLCDに表示させるのはどうすればいいんでしょうか?
73:デフォルトの名無しさん
12/05/27 02:45:41.91 .net
>71 日立…じゃなくて今はルネサスか…に問い合わせればきっと
トレーニングキットなり講習なりの案内はもらえるとは思えますよ。
数十万~数百万個とか使うのでなければ有償だとは思うけど。
74:デフォルトの名無しさん
12/05/29 04:40:40.39 .net
>>71 「LCDに表示させる」ってとこはLCDのデータブックを理解できると仮定して・・・
・ワークregにER0を使う。(ことにする)
HEX: DC '0123456789ABCDEF'
ER4をER0に移す
ER0を0000000FでAND
MOV.B (HEX,ER0),R1L で、16進の1桁をASCIIに変換できる
R1LをLCD表示用の変数にセット
ER4を右に4bitシフト
これを8回くり返せばER4の内容を表示用の文字列に変換できる。
75:デフォルトの名無しさん
12/05/30 01:13:11.99 .net
>>72
>>73
レスありがとうございます。>>73さんのやり方で表示できました。ありがとうございました!
76:73
12/05/30 01:22:20.91 .net
お役に立てて嬉しい
77:73
12/05/30 01:39:47.03 .net
あ、途中で書き込んじゃった・・・レジスタや変数の内容を表示したいのはよくあること
だから、dmp(変数)(長さは4とか16とか固定)、dmp(変数,長さ) とかの使い回し
できる関数にしておくといいよ。レジスタはその変数に代入してからdmp( )を呼ぶ。
cで製品を開発するときこういうのを組み込んでおいてずいぶん役に立った。
表示先はLCDの他に、uartのコマンド/報告で組み込むのをよくやった。
H8だったら最低2CHぐらいはuartが搭載されてるでしょ。
dmp <ff010><ret> と入力したら、そのCHに
FF010 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 <CR><LF>
と表示させる。上のはFF010番地に DC '0123456789ABCDEF' がある所を
ダンプした例ね。
78:73
12/05/30 02:16:37.21 .net
ここがASMスレなのを忘れて書いてしまった。
コンパイラによって違うけど、ルネのだと
dmp(変数)
MOV.L #変数,ER0
JSR dmp
dmp(変数,長さ)
MOV.L #変数,ER0
MOV.W #長さ,R1 (16bitで充分、8bitでも可)
JSR dmp
となります。
79:デフォルトの名無しさん
12/06/01 10:18:13.79 .net
返信遅くなりすみません
有益な情報ありがとうございます
是非この先使ってみたいと思います!
80:デフォルトの名無しさん
12/06/11 22:37:17.91 .net
すみません,アセンブラ単体でヒープ領域のメモリ確保ってできますか?
アーキテクチャはlinux 2.6 on EM64T(およびPIC30F4012です.)
(おそらく後者は不可能という結論は出ていますが,ついでなので質問です.)
前者は,call malloc等でC関数を呼べば実装できているんですが,
Cランタイム非依存のlinux環境下では,int 0x80のシステムコールのみで
ヒープ領域の確保,解放を行う必要性があると思っています.
(システムコールなく,CPU命令で直接ヒープ領域にメモリ確保できれば十分です)
わかる方いらっしゃるでしょうか
81:デフォルトの名無しさん
12/06/12 00:19:48.97 .net
>>79
>すみません,アセンブラ単体でヒープ領域のメモリ確保ってできますか?
できますよ。
>アーキテクチャはlinux 2.6 on EM64T(およびPIC30F4012です.)
どちらも当たり前にできますよ。
82:80
12/06/12 09:12:21.36 .net
>>80
それぞれのインストラクションコードってわかりますか?
ggり方の問題なんでしょうけど,探しても見つかりません……
83:デフォルトの名無しさん
12/06/13 10:29:17.85 .net
>>80
騙してやるなよ可愛そうだろ.
それとも本気で無知乙か?w
>>79
PICのアーキテクチャ見てみろ.heap……ってか,
レジスタ以外にメモリあるか? 別途メモリとか実装すればそれっぽいことはできるかもな.
そもそもシングルタスクなのにメモリ空間を分ける意味がわからないが.
AMD64はわからんが,linuxならシステムコールのリファレンスとか,
libcの逆アセンブルを見ればいいんじゃないか?あとはggれ
84:デフォルトの名無しさん
12/06/13 11:52:54.05 .net
>>82
無知乙
85:デフォルトの名無しさん
12/06/13 16:32:20.11 .net
ページのフラグ変更すればいいんじゃね?
86:デフォルトの名無しさん
12/06/13 16:57:26.71 .net
>>82
>PICのアーキテクチャ見てみろ.heap……ってか,
>レジスタ以外にメモリあるか? 別途メモリとか実装すればそれっぽいことはできるかもな.
「PIC heap malloc」とかでぐぐってみ?
>そもそもシングルタスクなのにメモリ空間を分ける意味がわからないが.
ハーバードアーキテクチャとタスクがどうこうは関係ない話だが? 本気で無知乙だな。
87:デフォルトの名無しさん
12/06/17 13:28:27.16 .net
初心者スレで、初心者を愚弄する奴は来るな!
88:デフォルトの名無しさん
12/06/17 13:42:22.46 .net
初心者スレってバカが知ったかでアドバイスするスレだったのか?
89:デフォルトの名無しさん
12/06/17 15:25:43.26 .net
>>86
「初心者を愚弄」って、>>82の
>それとも本気で無知乙か?w
みたいなこと?
90:デフォルトの名無しさん
12/06/29 16:22:44.16 .net
32ビットのフラットメモリモデルの場合なのですが、アドレスを記述する際にセレクタを
指定しなかった場合、実行時に使われるセレクタはDSで合ってますか?
91:デフォルトの名無しさん
12/06/29 17:26:44.55 .net
普通のアクセスは。
EIPによる命令フェッチはCSなのと、PUSHやPOPでのESPによるアクセスはSSだけど、
他に例外はあったかな。
92:デフォルトの名無しさん
12/06/29 17:32:00.51 .net
ebpはssだろうし
ストリング命令でのdiはesだと思う。
93:デフォルトの名無しさん
12/06/29 18:14:35.79 .net
フラットモデルは
CS==DS==SS==ESというキチガイモデル
LDTでプロセス毎のメモリ空間を確保
まあお陰で楽と言えば楽なんだが
94:デフォルトの名無しさん
12/07/04 01:17:53.26 .net
>>90-92
大変よくわかりました、ありがとうございます
95:デフォルトの名無しさん
12/07/06 01:32:49.84 .net
秋に基本情報を受けようと思ってるのでCASL2の勉強をしようと思うのですが、お勧めの参考書かサイトないでしょうか?
あとまったく知識ゼロの状態でCASL2を勉強して合格しようと思ったら
どれぐらいの期間かかりますか?(CASL以外の時間は含まず)
96:デフォルトの名無しさん
12/07/06 01:40:51.02 .net
>>94
何かひとつ実際のアセンブラが使えればCASLなんて屁でもないので
CASLの勉強なんて無駄なので止めなさい。
今使ってるPCのアセンブラでも勉強したほうがはるかに有意義だから。
97:デフォルトの名無しさん
12/07/06 08:45:26.33 .net
>>94
人による、としか。
CASL2自体を覚えるのはそんなに掛からないよ。
早い人ならそもそも試験会場で問題冊子に書かれた仕様と問題文から覚えちゃう。
苦手な人でも、一年やって仕様自体が頭に入ってない人は稀だろう。
問題となるのはそこからの応用力だから、そればかりは本当にその人次第だねえ。
応用できちゃう人は覚えた瞬間からほぼ全問解けるだろうが
応用の苦手な人は問題集で色んなパターンを覚えるしかない。
98:94
12/07/06 22:01:30.66 .net
レスありがとうございます
>>95
そうなんですか…CASLが勉強時間も短くて、試験にも通りやすいと聞いたので
選択しようと思ってたのですが、今後役に立たない知識ならば別のを選択したほうがいいですかね…
>>96
試験本番で仕様を読んで合格する人ってすごいですね…
99:デフォルトの名無しさん
12/07/06 23:20:43.78 .net
>>97
まあ、合格するまではやってみてもいいんじゃね
100:デフォルトの名無しさん
12/07/09 13:16:53.86 .net
すみません最近勉強しだした、ど素人なんですが
MAIN START
OUT BUF,LEN
RET
BUF DC 'Hello, World!'
LEN DC 13
END
Hello,Worldって表示させるだけなんですが、
BUF DC 'Hello, World!'
LEN DC 13
この二つを
MAIN START と OUT BUF,LEN の間に記述したら駄目なんでしょうか?
流れ的にはラベルBUFにHello,World、LENに13と宣言してからOUTで出力させるような気がするのですが
C言語とはアルゴリズムが全然違うんでしょうか?
私が買った参考書にも特に説明もありませんでした。
出力の後に宣言があるので、なぜそうなるのかどなたか教えてください。お願いします
ちなみにこのプログラムは以下のサイトから抜粋しました
URLリンク(www.officedaytime.com)
101:デフォルトの名無しさん
12/07/09 13:51:18.05 .net
アセンブラの場合、データ(BUF DC 'Hello, World!' / LEN DC 13)も、メモリの
その場所に置かれてしまうので、もしMAIN STARTの後に置いたら、
その文字コードを命令とみなして実行してしまうのでめちゃめちゃになる。
102:デフォルトの名無しさん
12/07/09 13:55:58.49 .net
>>99
>BUF DC 'Hello, World!'
>LEN DC 13
>この二つを
>MAIN START と OUT BUF,LEN の間に記述したら駄目なんでしょうか?
セグメントの記述をキッチリしてればおk
103:99
12/07/09 21:09:18.55 .net
>>100,>>101
なるほど、ありがとうございます
104:デフォルトの名無しさん
12/07/09 21:14:50.18 .net
>>102
なるほど、とか言ってるけど実際分かってないんだろ?
105:デフォルトの名無しさん
12/07/09 21:17:22.99 .net
>>103
うん
106:デフォルトの名無しさん
12/07/09 21:29:09.19 .net
>>103
私の勉強不足と理解力が無いだけなんで、理解できるよう努力します
107:デフォルトの名無しさん
12/07/10 00:15:24.71 .net
流れでアセンブラをプログラムしようとするやつ
108:デフォルトの名無しさん
12/07/10 00:21:33.24 .net
アセンブラ以外の言語はやらないのだろうか?
109:_
12/07/12 22:43:47.48 .net
_
110:デフォルトの名無しさん
12/07/12 22:57:27.69 .net
片山さつき「大津の事件の原因は日教組政権下におけるハングル授業
大津のいじめ自殺について、本当にたくさんのメール、ツイートいただきました。
【中略】
担任の先生の、前任地、滋賀大学付属中学における、ハングルの授業・・?の記事なども入手しました。
英語習得段階もまだまだ中途であるはずの中学校で、なぜハングルを教育する必要があるのか?
子ども達に選択の余地はあったのか?
いかなる方針で、誰のオーソライゼーションによってそのような教育が行われていたのか?
それだけでも、かなり変わっているな、と感じられましたし、
【中略】
教育の自主性とか教育現場不可侵、、などを超えてしまっている現実を、
手をこまねいて見ていた多くの関係者、、。
3年前に「日教組政権?」が成立してしまったことで、
そこに、ますます歯止めがきかない空気が、浸透してしまった、そんな可能性はないのでしょうか?
ソース
URLリンク(blogos.com)
ハングルの授業の資料
URLリンク(blog-imgs-53.fc2.com)
111:デフォルトの名無しさん
12/07/12 23:07:03.19 .net
>>109
大蔵省のおばちゃんいらね
112:デフォルトの名無しさん
12/07/13 01:18:34.37 .net
>>110
そんなにおかしいこと言ってないだろ?
大蔵省が気に入らないのか?
113:110
12/07/13 08:27:36.90 .net
>>111
気にいらね、増税、おまえうれしいのか?
114:デフォルトの名無しさん
12/07/13 10:07:42.62 .net
ν速中毒が国会議員になれるなんて胸が熱くなるな。
115:デフォルトの名無しさん
12/07/14 02:45:23.36 .net
増税は反対だが、行き過ぎたチョン教育がおかしいってのは何も間違ってないだろ
116:デフォルトの名無しさん
12/07/14 07:15:16.79 .net
国会議員が行き過ぎたバッシングで人気取りを狙ってるほうが、
1000倍狂ってる。
117:デフォルトの名無しさん
12/07/14 14:37:00.65 .net
しかしあれだな、CASLな人はCASLと書いて欲しいな
118:デフォルトの名無しさん
12/07/15 02:21:18.10 .net
>>115
韓国の方でしたか
それは失礼しました
119:デフォルトの名無しさん
12/07/15 07:28:14.94 .net
バカウヨはν速に帰れ
120:デフォルトの名無しさん
12/07/16 13:07:09.29 .net
ここ何のスレだよ・・・
121:デフォルトの名無しさん
12/07/18 09:06:45.66 .net
【大赤字】 韓国万博にK-POPスターを呼んでも客が来ないため、チケット69円で投売り開始
スレリンク(poverty板)
麗水エキスポ:1000ウォンの深夜入場券発行へ
麗水エキスポの入場者数が目標を大幅に下回っていることを受け、
韓国政府は1000ウォン(約69円)の深夜入場券を発行することを決めた。
URLリンク(www.chosunonline.com)
122:デフォルトの名無しさん
12/07/19 00:31:33.84 .net
話題を変えてしまってすみません。
戻り値が -1 である時に条件分岐したいのですが、
どうすればいいのでしょうか?
Linux x86_64でsyscallでopenを呼び出し、
ファイルオープンが出来なかったらエラーに飛びたいのです。
開きたいファイルが存在しない状態で実行ファイルを
実行したけれど、エラー処理に飛びませんでした。
# error check
cmp $-1,%rax
je _err
としても、
# error check
cmp $0xFFFFFFFFFFFFFFFF,%rax
je _err
としてもうまく行きませんでした。
123:デフォルトの名無しさん
12/07/20 01:41:07.82 .net
ENOENTは-1じゃねーぞ
124:デフォルトの名無しさん
12/07/20 23:06:25.48 .net
ありがとうございます。
-2 が戻るんですね。
戻り値が負であればエラーと見做せばいいんですね。
125:デフォルトの名無しさん
12/07/21 09:43:17.25 .net
欧州研究所が告白! 太陽光パネルで出力劣化しないのは日本製品とドイツ製品だけ!中韓メーカー発狂か
スレリンク(poverty板)
シャープ製太陽光パネル、「出力低下なし」お墨付き-欧最大の研究機関が評価
シャープは同社製の太陽光パネルに「PID」と呼ばれる産業用太陽電池特有の出力低下現象が起きないと欧州最大の研究機関に認められた。
フラウンホーファー研究機構(本部=独ミュンヘン)が欧州、北米、中国、韓国メーカーなどの太陽電池モジュール13製品を評価した。
欧州ではPID現象による太陽光パネルの出力低下が相次ぎ、品質問題として注目されている。PID現象が発生しなかったのは4製品だけ。
これまでに京セラ、ドイツの最大手Qセルズも現象が起きなかったと公表している。
詳細 2012/7/20
URLリンク(www.asahi.com)
126:uy
12/07/23 23:46:45.61 .net
この板は何もないなぁと常々思う
流石にITに夢見る奴も絶滅してしまったせいだろうか
プログラミングというものが、リアルで中学生位でも出来る奴が増えてきてるんだろうな
VBとか、BASICじゃなくてC++、C#関係を
そうやって一般人でも空気を吸うかのごとく扱えるようなジャンルになってくると
プロってものはいらなくなってくる
あとに残された金儲けの手段
127:は 煩雑で、未整理で、情報の収拾が難しい分野の技術 けど、そういったものも、いずれ徐々に俺みたいな奴がその得た情報で金儲けするわけでもなく 無償で情報ばら撒き始めれば市場も崩れる 後に残されるのは、工場勤務などとなんら変わらない 個人能力に左右されないお仕事 機械で自動化できる部分を、あえて人間にやらせるお仕事 それが大多数のプログラマの仕事になるんだろうよ
128:uy
12/07/23 23:53:39.98 .net
こうなってくるとゲームのような、ほとんどが再利用不可能なソースコードで構成されたプログラムを作ることと
なんら変わらない、所詮は再利用するかしないかどころか、
不必要なシステム、不必要なプログラムを、人間の労働力が余っているから仕事を与えさせて動かしているだけであって
それなら、ゲーム系に「無駄」を使ったほうがマシだよ
コピペで済むものを、わざわざ再開発していく
コピペで済まされたら、暇になっちゃうから
遠回りして、仕事してるフリをしろと
本当に悲惨な職業だと思う
129:uy
12/07/24 00:05:23.79 .net
結局、目的のためにプログラミングをしてるってのは不健康なんだと思うよ
手段そのものでストレスを発散できるようになり、
目的度外視で手段を楽しいと思わなければ、その者は不幸だろう
ありえないリソースをサイト上にアップしているにも関わらず、
あまりにもアクセス数の少ない技術系情報サイト
そういうものも、手段を楽しんでいなければ構築できはしない
結局は気づくしかない
人間の素の演算能力が高くなれば、プログラミング言語がどれであろうと構わないって事
結局、世界全体の技術力を高めるには、人間の平均スペックを何世代にも渡って向上させていくしかないんよ
技術力のないバカに気づかせる事よりも、自分のことだけ考えて生きてた方がマシ
130:デフォルトの名無しさん
12/07/24 19:38:45.58 .net
ながすぎる
131:デフォルトの名無しさん
12/07/27 00:17:08.91 .net
うううう
この試験のために参考書いくつか買ってるけど金がかかってしょうがない
専門学校やPCスクールに通うよりは遥かにましだけど、1万以上は軽く飛んだぜ
132:デフォルトの名無しさん
12/07/27 00:17:55.07 .net
基本情報のスレに書いたつもりが間違えてしまった
133:デフォルトの名無しさん
12/08/01 09:09:30.11 .net
俺馬鹿だからZ80のハンドアセンブルくらいが一番勉強になる
図書館で昔の書籍発掘しながら勉強してるよ
134:デフォルトの名無しさん
12/08/03 10:39:06.85 .net
10進数ってどうやって表示してんの?
内部的には2進数で管理してるんでしょ?
135:デフォルトの名無しさん
12/08/03 11:25:31.62 .net
どちらも整数であって、「2進数」とか「10進数」という数があるわけじゃないから。
2進とか10進というのは表記法の違い。
表示する時に、たとえば7セグメントデコーダに 8 を表示するなら、
全てのLEDを点灯させるとか。
136:デフォルトの名無しさん
12/08/03 14:13:28.73 .net
それを言うなら、現実では1進数じゃないか。それをどうやって10進数で表している?
137:デフォルトの名無しさん
12/08/03 19:10:57.51 .net
言いたいことはわかるが、位取り記数法としては1進なんてものはないので、
そう言うのは混乱させる元だと思う。
138:デフォルトの名無しさん
12/08/05 21:30:51.99 .net
独習アセンブラって本をわざわざ買ってちょこっとかじったけど、他の言語と何ら変わらないイメージを持ってしまった
アセンブラって直接CPUいじるイメージだったからなんか違うなー
と思い、マイコンのアセンブラプログラム(ハンドアセンブラしてる時代)の本借りて勉強したら、構造が単純だからスイスイ頭に入ってわかりやすかったし、機械を操作してる感じもあって非常に勉強になった
こういうことをしたくてアセンブラを勉強したかったのに、最近のアセンブラ教本は他の高級プログラム言語の本となんらかわりがいないのがなんかかなしいな
昔の本を読むってのも勉強になると思った
139:デフォルトの名無しさん
12/08/05 21:39:03.59 .net
いまどきのOS上で動作するアプリを作る程度の使い方なら、アセンブラも他の言語も大して変わらんだろう。
140:デフォルトの名無しさん
12/08/05 21:58:43.57 .net
うんそうなんだよね
OS上で動作するんだったら普通の言語でいい
オレはコンピュータが動作する仕組みが知りたいからアセンブラの勉強はじめたんだけど、独習とかの教本はピンとこなかった
そういう意味で昔の本のほうがピンとくるんだ
アセンブラでコンパイラ作る本とかあって、コンパイラがどういう構造でできてるかとか勉強になるから面白いんだ
141:デフォルトの名無しさん
12/08/05 22:10:40.75 .net
CPUの性能が現在の1/10000くらいの時代、少しでも処理速度を早く
したくて、自分のコードを書き換えながら実行するプログラムとか
アセンブラで作ってたなあ、なつかしい(遠い目
142:デフォルトの名無しさん
12/08/06 00:57:17.15 .net
>>139
自己書き換えプログラムか 今のでそれやったら命令キャッシュにうまく読み込まれなくて
ハングするんだったな
143:デフォルトの名無しさん
12/08/06 01:38:19.73 .net
>>136
これわかるわー
今のrichなユーザインタフェースのOSや機能満載の開発環境の上だと,初心者を
プログラミングの世界に導くのが逆に難しくなってきていると思う."hello world"
なんて画面に表示できたところで何がおもしろいの?ってな感じなんだろうな.
それよりも単純に画面をタップしてモンスターをやっつけたりするほうが子供たちには
楽しいんだろうよ.今の子供たちはかわいそうだと思ってしまう俺も年なのか.
144:デフォルトの名無しさん
12/08/06 07:39:54.12 .net
いきなり目に見えるものが作れるのは幸せじゃない
ドラクエやってゲーム作りたいって思って
じゃあ基礎のアセンブラやりましょうとかなったら
完成までの道のりが遠すぎて挫折する
今は仮想化が何重にもなっててCPUを意識したプログラムもわけがわからない。
Mac上にVirtualBoxでWindows入れてその中で動くQEMU用のコードを書いたときに
最終的に動くCPUやメモリ内容が想像しづらい
いまサーバ側で動くCのプログラム書いてるけどそれも動かすのVPSだしなー
テクニックとかは仮想でも生きるんだよね?
145:デフォルトの名無しさん
12/08/06 14:45:28.62 .net
>>141
大先輩ですねー
俺らんときはかろうじてポケコンが有りましたよ
あんまいいじってなかったけどw
本当にコンピュータのことを勉強するんだったらCPUを直接操作して、こうやって画面に出力して、こうやって入力してって基本的なことから学んだほうがいいような気もします
自分は、なんでPCてこんな動きするんだろ?OSってなんで必要なんだ?って疑問から入って、調べていくうちにどんどんわからないことが増えていって、最終的にはアセンブラだなって思ってアセンブラの勉強したけど結局他の言語と同じじゃんとなってしまいました
どちらかというとアセンブラより、ハンドアセンブラをしたほうが、勉強になる気がします
そっからはいって経験を積み上げていくほうが面白いと僕は感じました
146:デフォルトの名無しさん
12/08/06 19:54:32.61 .net
> 自己書き換えプログラムか 今のでそれやったら命令キャッシュにうまく読み込まれなくて
> ハングするんだったな
しないよ。ていうか、キャッシュはコヒーレンシを保たなきゃ困るんだから。
自己書き換えでトラブるのはキャッシュじゃなくて先読みバッファ。
Intelの場合Pentium以降はそのへんチェックしてて、書き換えた結果が即有効になる。
147:デフォルトの名無しさん
12/08/06 20:13:44.82 .net
>>144
先読みバッファって何? パイプラインではなくて?
「IA-32 Intel® Architecture Software Developer’s Manual Volume 3: System Programming Guide」
URLリンク(download.intel.com)
の「8.1.3 Handling Self- and Cross-Modifying Code」てとこ見ても、ジャンプ命令かシリアライズ命令入れれって説明で、
> Intelの場合Pentium以降はそのへんチェックしてて、書き換えた結果が即有効になる。
て感じではないみたいだが。
148:デフォルトの名無しさん
12/08/06 21:28:15.26 .net
正確にはプリフェッチキュー。
↓の中で Pentium って書いてあるところを検索して、その前後を見ればわかる。
URLリンク(service1.symantec.com)
149:デフォルトの名無しさん
12/08/07 03:53:05.21 .net
岩田聡氏はこういう文法を使って任天堂機を
作った訳ですね。
150:デフォルトの名無しさん
12/08/07 04:00:09.59 .net
>>146
情報古杉。お前馬鹿だろ。
151:デフォルトの名無しさん
12/08/07 07:30:37.86 .net
いや、ファミコン時代初期まで遡るなら、アセンブリ言語通り越してマシン語直打ち。
152:デフォルトの名無しさん
12/08/07 07:37:01.51 .net
>>149
TK-80の頃でもクロスアセンブラとか珍しくなかったが。
153:デフォルトの名無しさん
12/08/07 13:28:35.36 .net
どこかに珍しいとか書いてあったか?
症状から当たりを付けてダンプリストながめて直接手直しなんてのはザラだった。
154:デフォルトの名無しさん
12/08/07 14:07:30.05 .net
>>151
そんなの時代関係ないが。
155:デフォルトの名無しさん
12/08/07 17:46:25.83 .net
>>144
ふつーはパイプラインにのってる書き換え前の命令がそのまま実行される
キャッシュもユニファイドでなければinvalidしない限り反映されん
x86は互換性命で無駄に努力しとるが
156:デフォルトの名無しさん
12/08/07 22:33:11.95 .net
アセンブラだけでは高級言語との区別が分かりにくく
ハンドアセンブルまでしてこそ
「プログラムもデータも同じようにメモリに乗る」
のが判るのは確かだな
前にCASL2教えてくれって言われて説明してたらそこが解ってもらえないから
CASL2の仕様引っ張りだしたがニーモニックだけでオペコード載ってないでやんの
それがあったならノイマン型コンピュータの解説にも便利だろうに…
Win32のDEBUGコマンドはそれを分かりやすく示してくれてたのに
64で削られたのは残念だった
157:デフォルトの名無しさん
12/08/07 23:12:25.64 .net
>>154
ほんとそうだよね
ハンドアセンブルしてからようやくアセンブラがどういうものかわかる
nasmとかmasmとか、勉強したとき、ラベルやら変数やらでわかりやすく記述できるのはいいんだけど、それがCPUのなかで順次どういう風に処理されてるかわかりづらかった
Z80で自分でラベルとかつけながらアセンブラでプログラム作って、実際にHEXに変換するって作業をするとCPUとメモリとのやりとりがわかる
この経験をしておけばCのポインタとかすっごい理解しやすいと思うんだが…
158:デフォルトの名無しさん
12/08/08 05:24:04.18 .net
そしてポインタに + 1 すると、ポインタが指す先のデータのサイズ分増えることが
理解できなかったりするわけねw
情報処理技術者試験の出題範囲が提示されてる、実施要綱だかの資料に、
附録で参考資料扱いだけど、オペコード表は載ってる。
159:デフォルトの名無しさん
12/08/08 05:29:40.35 .net
>そしてポインタに + 1 すると、ポインタが指す先のデータのサイズ分増えることが
>理解できなかったりするわけねw
データサイズに応じてアドレスポインタ++ できるアーキテクチャってそんな多くないし、
あんまアセンブラと関係ないな。
160:デフォルトの名無しさん
12/08/08 07:06:28.80 .net
C言語のその動作って処理系定義だっけ?
161:デフォルトの名無しさん
12/08/08 18:10:41.92 .net
void *以外は規格で決まってる
162:デフォルトの名無しさん
12/08/09 08:43:37.95 .net
int型は16bitですか?32bitですか?
ビッグエンディアンですか?リトルエンディアンですか?
処理系定義だべ?
163:デフォルトの名無しさん
12/08/09 10:23:46.58 .net
ポインタに+1した時の動作の話をしてるんじゃないのか?
164:デフォルトの名無しさん
12/08/11 03:28:16.51 .net
>>133-135
メモリ上では2進データだけど
画面表示するときとか十進数で表示するけど
LEDとかで1桁の数字とか表示するとかなら固定パターンの出力でいいかもだけど
十進数で数桁あるのを表現するときってどうやってんの?(十進数の桁ごとに分割する方法?)
メモリ上のたとえば4バイトの符号ありの整数とか少数とか
165:デフォルトの名無しさん
12/08/11 04:44:30.97 .net
10進の表示:10で割った余りに 30h(=ASCIIのゼロ)を足して1文字表示、これを
商がゼロになるまでくり返す。32bitなら最大8回。
16進の表示:0000000FhでANDすると下4bit分の値(0~F)ができる。その値をオフセット
にして、"0123456789ABCDEF"の表引き(先頭からオフセットbyte先を読みとる)、
その値を1文字表示。元の値を4bit右にシフト。これを32bitなら最大8回くり返す。
166:デフォルトの名無しさん
12/08/11 13:11:08.51 .net
なるほど
ありが㌧クス
167:デフォルトの名無しさん
12/08/11 14:01:27.72 .net
>>163
いろいろ突っ込みどころがありすぎて困るが、uintをBCD(10進数って何だよw)
に変換するのに普通はそんな間抜けな方法は取りませんw
168:デフォルトの名無しさん
12/08/11 14:04:56.71 .net
>>165
↑具体例も示せない口先だけの屑
169:デフォルトの名無しさん
12/08/11 15:42:56.50 .net
>>165
>>166
の二名がどうやらクズのようです
170:166
12/08/11 15:55:16.18 .net
Cで書くと例えばこんな感じ
void putN(int n)
{
if (n >= 10) {
putN(n / 10);
}
putchar('0' + n % 10);
}
171:デフォルトの名無しさん
12/08/11 16:49:39.60 .net
>>168
商と剰余でするなら再帰せずに12バイトの配列用意した方がよくないか?
で、165が言ってるのはそもそも商と剰余を使わずにBCDで論理演算だけでやるんだ(キリッ
って事だろ
誰もBCDで扱いたいとは言ってないけども
172:デフォルトの名無しさん
12/08/11 16:55:59.63 .net
>>169
>再帰せずに12バイトの配列用意した方がよくないか?
どういう点でよいと言ってるのか分からんがそう思うならお前がそういう例を示せばいいだけの話。
173:デフォルトの名無しさん
12/08/11 17:01:04.66 .net
>>169
>商と剰余でするなら再帰せずに12バイトの配列用意した方がよくないか?
なぜ12バイト?
174:デフォルトの名無しさん
12/08/11 17:03:02.19 .net
>>169
>で、165が言ってるのはそもそも商と剰余を使わずにBCDで論理演算だけでやるんだ(キリッ
>って事だろ
>>165が言ってるのは 整数→BCD の変換だろう
175:デフォルトの名無しさん
12/08/11 17:17:53.68 .net
>>171
32ビットだと11桁が最大だろ?
URLリンク(ideone.com)
負数も入れて13になっちゃったけど
>>172
165は変換してそれを使うといいたいんだろ?
それがそもそも163とかからはお呼びじゃなさそうだったというのを書きたかったのだが
如何せん日本語が不自由だからな
176:デフォルトの名無しさん
12/08/11 17:20:32.04 .net
つか数え間違いしてるわw
どう見ても最大は10桁だなw
177:デフォルトの名無しさん
12/08/11 17:34:32.46 .net
>>173
URLリンク(ideone.com)
・0 与えたとき puts() が 2回呼ばれるとかロジックが汚すぎる。
・マイナスをサポートしてるのは偉いが、0x80000000 を与えると多分うまく表示されない。
他人に見せるサンプルとしてどうなのという気がする。
178:デフォルトの名無しさん
12/08/11 17:42:30.37 .net
>>173
>165は変換してそれを使うといいたいんだろ?
>それがそもそも163とかからはお呼びじゃなさそうだったというのを書きたかったのだが
中間形式は1文字/バイトで持とうがBCDで持とうが自由じゃね?
10桁くらいならメリットも小さいが桁がもっと多い場合にはメモリ使用量が少ないとか、デバッガでメモリダンプしたときに見易いとか、無理矢理考えれば BCD にも利点がないわけではない。
179:デフォルトの名無しさん
12/08/11 21:40:52.12 .net
10で割るって割り算ってどうやるんだっけか
180:デフォルトの名無しさん
12/08/11 22:56:05.10 .net
割り算のアルゴリズムって小学校低学年で習うだろw
最単純な符号なし整数の場合、まず除数と被除数のMSBが揃うまで除数を左シフトして...
後は分かるよね?
181:デフォルトの名無しさん
12/08/11 23:15:35.71 .net
今どきの小学校低学年の教科書はどうなっているんだ
182:デフォルトの名無しさん
12/08/12 03:42:47.35 .net
ということは10進数を表示するのって結構複雑なアルゴリズムになるわけか
183:デフォルトの名無しさん
12/08/12 05:49:21.37 .net
割り算命令が無いような古代の石だと確かに複雑だよ。8085でLSI-Cが無い頃に
仕方なく除算のコードを書いたことがある。7801にも移植できて、奇跡的にパツイチ。
184:デフォルトの名無しさん
12/08/12 06:27:02.26 .net
10で除算なんて大して複雑でない。
16bitの値を10で割るだけならこんなもん。8085で書いても30行くらいじゃないか?
unsigned div10(unsigned n, unsigned* mod)
{
unsigned ans = 0;
unsigned cmp = 10 << 12;
unsigned i;
for (i = (1 << 12); i > 0; i >>= 1) {
if (n >= cmp) {
n -= cmp;
ans |= i;
}
cmp >>= 1;
}
*mod = n;
return ans;
}
185:デフォルトの名無しさん
12/08/12 06:52:25.96 .net
試しに組んでみたら40行超えた。
cseg
div10: xra a
sta ans
sta ans+1
lxi d,10 shl 12
lxi b,1 shl 12
loop: mov a,l
sub e
mov a,h
sbb d
jcs skip
mov h,a
mov a,l
sub e
mov l,a
lda ans
ora c
sta ans
lda ans+1
ora b
sta ans+1
186:デフォルトの名無しさん
12/08/12 06:54:55.75 .net
続き: デバッグしてないから動かんかも。眠いし。
skip: ora a
mov a,d
rar
mov d,a
mov a,e
rar
mov e,a
mov a,b
rar
mov b,a
mov a,c
rar
mov c,a
ora b
jnz loop
xchg
lhld ans
ret
dseg
ans: ds 2
187:デフォルトの名無しさん
12/08/12 13:29:06.94 .net
>>180
というか、だから少なくとも除算がネイティブな機能として実装されてないようなCPUなら
10で割るなんて方法は取らない。
188:デフォルトの名無しさん
12/08/12 13:42:08.27 .net
>>185
具体的におねがいします
189:デフォルトの名無しさん
12/08/12 15:16:08.79 .net
次のものはどんなCPUでも比較的実装が簡単
- BCD同士の加算
- BCDの2のべき乗倍
- byte(nibbleでもいいけど) ⇒ BCD変換
だから、
0xAABBCCDDのBCD変換値は0x00AABBCCのBCD変換値と0xDDのBCD変換値から求められる。
0x00AABBCCのBCD変換値は0x0000AABBのBCD変換値と0xCCのBCD変換値から求められる。
...
あとは分かるよね
190:デフォルトの名無しさん
12/08/12 15:20:36.36 .net
>>185
ビデオゲームのスコア表示なんかだったら、数字一桁に1バイトやパックド10進数で数字2桁に
1バイトを複数バイト使って点数計算と表示してたりするけど、そういう特殊な話してんじゃないんだよね?
191:デフォルトの名無しさん
12/08/12 15:23:09.83 .net
>>187
で、例えば16ビットの整数の値を割り算使わないで10進数で表示するのってどうやるの?
C の printf() なんかで当たり前に実装されてる機能だと思うけど。
192:デフォルトの名無しさん
12/08/12 15:24:35.37 .net
>>187
>0xAABBCCDDのBCD変換値は0x00AABBCCのBCD変換値と0xDDのBCD変換値から求められる。
>0x00AABBCCのBCD変換値は0x0000AABBのBCD変換値と0xCCのBCD変換値から求められる。
>...
>
>あとは分かるよね
なんで16進数が出てくるんだかマジ分からん
193:デフォルトの名無しさん
12/08/12 15:25:07.60 .net
>>189
int⇒uint⇒BCD⇒Hex
194:デフォルトの名無しさん
12/08/12 15:25:24.86 .net
>>187
C や擬似コードでもいいんで具体的にご説明願います
195:デフォルトの名無しさん
12/08/12 15:26:20.07 .net
>>191
>uint⇒BCD
↑んとこ具体的にご説明下さい。
196:デフォルトの名無しさん
12/08/12 15:26:38.45 .net
>>190
流石にそこまで初歩から説明させるのは勘弁してw
っていうか、少しはそれを恥ずかしいことだという意識を持とうよ
197:デフォルトの名無しさん
12/08/12 15:27:15.48 .net
>>193
だから>>187に考え方が書いてあるじゃん
198:デフォルトの名無しさん
12/08/12 15:28:45.25 .net
>>194
>流石にそこまで初歩から説明させるのは勘弁してw
>っていうか、少しはそれを恥ずかしいことだという意識を持とうよ
お前、具体的な方法も例示できないバカって思われてるの理解してる?
199:デフォルトの名無しさん
12/08/12 15:30:50.83 .net
>>196
バカにバカと思われても何とも思わない。
馬鹿だろお前。
200:デフォルトの名無しさん
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バイト分のローカル変数領域をスタックに確保