アセンブラヽ(`Д´)ノモルァ
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNGアセンブラ… (・∀・)イイ!
http://pc.2ch.net/test/read.cgi/tech/1002267809/
0002えへへ
NGNGよくやった
ほめてつかわす
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006えへへ
NGNG前スレに次スレのリンク貼るの忘れたな>1
まあしょうがないか
0007えへへ
NGNG全スレって、アホか。
00081000
NGNG計算間違いだった・・・。最後に
v w
(゚ω゚)/ \(゚δ゚)<ジーンギスカーン!
/( ) ( )ゝ
<'\ / >
やりたかったのに。
00091
NGNG騙された・・・むしろ犯された・・・2ニ
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG<(゚ω゚) <うっ!
( )\
/'>
v
(゚ω゚)> <はっ!
/( )
<'\
v
<(゚ω゚)> <うっ!
( )
/'>
v
(゚ω゚)/ <はっ!
/( )
<'\
v w
(゚ω゚)/ \(゚δ゚)<ジーンギスカーン!
/( ) ( )ゝ
<'\ / >
0012デフォルトの名無しさん
NGNG(゚ω゚)/ \(゚δ゚)<心スレワッショイ!
/( ) ( )ゝ
<'\ / >
0013警告
NGNGかなりのアホが混じってる
情報理論くらい習ってからものを書けと言いたくなる連中が多い。
間違いだらけだぞ。初学者は注意したほうがいい。
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGせめて1つぐらい、どのレスが間違ってるのか指摘してくれよ。
> 注意したほうがいい。
これだけじゃ何が正しくて何が誤りなのかわかんねーじゃん。
そんな無意味な警告イラネーヨ。
0016デフォルトの名無しさん
NGNGそういう意味からも知っておいて損はないと思う。
ただ、特殊な分野を除いてアセンブラでプログラムを組みたくない。
能率が悪すぎる。
001713
NGNGわざとだよ。長々と有用な警告して私の何の得になる?
具体的に挙げると昔から煽りあいになるだけだから、自分で推して知れ。
ただ間違いがあることさえ気づかないのは問題だからな。それだけだ。
001813
NGNGすみません。むしゃくしゃしていたのでああ言いたかっただけです。
今後気をつけます。
0019デフォルトの名無しさん
NGNGわざわざ「一つぐらい」って書いてるだろ?
誰も長々と有用な警告すれとは言ってないよ。
>>私の何の得になる?
だからそんなあんたの警告は無意味だって言ったんだ。
002017
NGNG0021デフォルトの名無しさん
NGNG('_' ) ああ、そのにおいがプンプンしたレスだったもんな。
0022デフォルトの名無しさん
NGNG>すでに騙り煽りが始まってるしな。(ワラ
を言うための>>17の自作自演に1000カプリコ
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNGアセムプイ!
↓
(゚д゚)ウマー
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG一個ぐらい上げてくれよ
0028デフォルトの名無しさん
NGNG「まえスレ」「ぜんスレ」
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG「警告」って・・・。バカジャネーノ。
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG003331
NGNG0034デフォルトの名無しさん
NGNGまるでアセンブラやる人間が変人ばかりみたいだ。
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNGうるせーんだよ!ばーか!
時計か?あん?まんこか?
みんこか?むんこか?
まんこ
みんこ
むんこ
めんこ
もんこ
ま〜〜ん〜こ〜〜〜
0038>37
NGNG自分の厨房っぷりをさらけ出しているようなもんだ。
0039デフォルトの名無しさん
NGNG0040バイク板の鬱な藁人魚
NGNG再度書き込みますスマソ
いま、PC/AT用のM$-?OsのIPLを解析しているのですが、
INT 1Ehの飛び先アドレス([0000:0078]:[0000:007A])をポインタにして
参照される、DISKBIOSへのパラメータブロックの内容が分かりません。
ExDEBで覗いてみても、ベクタ1EはNoSpecialUseと出てきて参考になりません。
どなたかDISKBIOSパラメータブロックの詳細をご存知の方
いらっしゃいましたらお教えください。
ヨロシコお願いします。
0041Mukiki
NGNG今の時点では変人しかいませんが、なにか。
ちなみにわし変態です。(w
0042デフォルトの名無しさん
NGNGMASM32
http://www.movsd.com/masm.htm
NOWSMART ASSEMBLER
http://homepage2.nifty.com/nowsmart/
多摩ソフトウェア LASM Ver2.32 体験版
http://www.tamasoft.co.jp/
DOS x86命令 MASMヘルプファイル
http://homepage1.nifty.com/radio_tech/
アセンブラ入門
http://www.d1.dion.ne.jp/~ecb/assembler/assembler00.html
0043デフォルトの名無しさん
NGNGhttp://www.tkcity.net/~nobusan/index.html
のどっかでIPLだかMBRだかの解析をしていたような気がします。
あと、8.4GBの壁を越えるためのBIOSだましのソフトを解析するのもよろしいかと。
もうやってるかもしれませんが。
関係ないけどこのスレッドがx86限定な名前じゃなくてちょっと安心しました。。
0044
NGNG0045バイク板の鬱な藁人魚
NGNGどうも有り難うございました。
うーん。ただ、肝心な部分が書いてないっすね。
以前、PC-98でOS組んだときは山のように資料があって
楽だったのですが、PC/ATのBIOS触るのは殆んど初めてなので
難儀してます。なんかイイ書籍とかHPあったら教えてください
>x86限定な名前じゃなくてちょっと安心しました
そーっすね。最近わたしも、V850とかHS-3とかのアセンブラを
勉強してます。
送り元(S)と送り先(D)が逆なのが気持ち悪いです・・・(藁
IPL解析のほうは、ディスク上のBPBの内容がPC-98のM$‐?OSと
同じことに気づき、大体完了しました。
相変わらずINT1E周りは詳細不明のままですが・・・(鬱
BIOSからのカーソルの制御ってどうやってやるんだろう??
とか、GV-RAMのマッピングとか、分からないことがたくさんあって
大変です。
0046バイク板の鬱な藁人魚
NGNGしっかし、ここ伸びないっすね
いっそのこと”アセンブラでPC/AT用OSを書く”刷れとか
立ててみていいっすかね、なんて書いてみるテスト
0047デフォルトの名無しさん
NGNGアプリケーションプログラマのOSに対する複雑な感情が
出てきて、イイスレにはならないだろうと予言。
0048バイク板の鬱な藁人魚
NGNGなんだかなぁ
そんなもんですかね。シミジミ
複雑な気分っス
0049デフォルトの名無しさん
NGNGRalf Brown's Interrupt List
http://www.ctyme.com/rbrown.htm
OSが組めるなら読解も楽勝でいけるでしょう
0050バイク板の鬱な藁人魚
NGNG0051デフォルトの名無しさん
NGNGFDD パラメータ (サイズ 11 bytes)
+0 Step Rate,Head Unload TIme DFH (b7-b4:rate, b3-b0:time)
+1 Head Load Time, DMA Mode 02H (b7-b1 time, b0 DMAを使わない)
+2 Motor Off Time(単位は55ms) 25H
+3 セクタ長 02H(512bytes)
+4 End of Track 08H, 09H, or 0FH
+5 Gap Length 1BH
+6 Data Length FFH
+7 Format時のData Length 50H or 54H
+8 Format時のData Pattern F6H
+9 Head Settling Time(単位 1ms) 0FH
+10 Motor On Time(単位 125ms) 08H
0052バイク板の鬱な藁人魚
NGNGおわあ、有難うございます。これっす!!
ああ、よかた。これでIPLが完全に掌握できる!(*o*)/
ただ、IPLが
/IPLによってつくられるDISKBIOSパラメータブロック(0000:7C3E-0000:7C48)
0000:7C41 db Sec/TrackB ;Sec/Trackのコピー(=12h)
(= +4 End of Track 08H, 09H, or 0FH))
0000:7C52 BF3E7C MOV DI,7C3E
0000:7C55 B90B00 MOV CX,000B
0000:7C58 FC CLD
0000:7C59 F3 REPZ
0000:7C5A A4 MOVSB
0000:7C61 8B0E187C MOV CX,[7C18] /[7C18]=0012(=Sec/Track)
0000:7C65 884DF9 MOV [DI-07],CL /[7C41]=12(Sec/Track)
というように、+4の所にトラック当たりのセクタ数を書いてるのが気になります。
私の計算がずれているだけかもしれないので、後で、ダンプして調べて見ます。
走も有難うございました。
0053バイク板の鬱な藁人魚
NGNG005443
NGNG>なんかイイ書籍とか
もうもってるかもしれませんが、とりあえず
http://www.oadg.or.jp/
にDOS/Vアーキテクチャの仕様書がハード/ソフトともにあります。無料。
ダウンロード時に登録させられますが、とくにどうなるということは
ないようです。
ただ、これによるとint 1Ehはシステム予約になっていて詳細不明ですが。。
0055バイク板の鬱な藁人魚
NGNGどうも、毎回ありがとです。ちなみに、うちの環境では、3.5MBのほうのPDF
が、壊れてて開かないのですが???あれれ?
0056デフォルトの名無しさん
NGNGABIOS for IBM(R) PS/2(R) Computers and Compatibles:
The Complete Guide to ROM-Based System Software for OS/2(R)
0057バイク板の鬱な藁人魚
NGNGIPLから、IO.SYSに制御が渡された時点でのint1Ehの中身です
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A
DF 02 25 02 12 1B FF 54 F6 0F 08
+4以外は51氏の記載どうりなのですが、+4は、ブートセクタ上の
Sec/Track情報をIPLが書き込んでいます。
BIOSが、EndOfTrackかSec/Trackかを自動判別して利用する
ということでしょうか?
用途はどちらも同じと思われるし・・・
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGと言ってみるテスト
0060バイク板の鬱な藁人魚
NGNGいいっすよ、仕事のついでに・・・
誰か手伝ってくれるなら尚良いんですが・・・
0061デフォルトの名無しさん
NGNG0062バイク板の鬱な藁人魚
NGNGなるほど、そうなんだ。
もれ、ずっとPC-98だったからなぁ
>>59
っで、どんなのキボーンするよ??
0063デフォルトの名無しさん
NGNGXサーバ
0064バイク板の鬱な藁人魚
NGNG藁藁
まぢ?
Unixはなぁ。苦手だなぁ。
VGAとX鯖の仕様を全部分かりやすく教えてくれたら、(紙媒体キボーン藁)
コーディングはするけど。
もうちっと使いやすいのにしようぜ。
って、漏れ以外のひとに、今更使い道あるのか知らないけどねぇ。
0065デフォルトの名無しさん
NGNG0066バイク板の鬱な藁人魚
NGNG本買ってきて勉強汁!ゴルァ
といいたい所だが、
rep リピートプリフィックス
直後のストリング命令をCXが0になるまで繰り返す
とりあえず、アスキーの”はじめての8086”でも買ってきなさい
若しくはフリメをさらしなしゃい。いろいろ教えたゲルから。
0067デフォルトの名無しさん
NGNGINT 1Eも書いてあるよ。
http://www.vector.co.jp/soft/data/prog/se015018.html
VGA/V-TEXTはフリーソフト書いたり、仕事でもいくらか書いたことがあるから
それなりにはわかるけど。。。
0068バイク板の鬱な藁人魚
NGNGえっと、これは>>49とおなじかな?
なにはともあれ、どうも有り難うございます(^o^)/cd10
006967
NGNG0070デフォルトの名無しさん
NGNGありがとぅ
0071バイク板の鬱な藁人魚
NGNGバッチいコードで申し訳ないが、Repの参考例
.186オプション必要、ディレクションフラグクリアーのこと
DOS/V機のT-VRAMを掃除する(ディスプレイのクリアー)
サブルーチソ
disp_clr: pusha
push es
mov ax,0b800h
mov es,ax
xor di,di
mov ax,0720h
mov cx,07d0h
rep
stosw
pop es
popa
ret
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNG((;゚Д゚))ガタガタブルブル
0074デフォルトの名無しさん
NGNG0075記念カキコ
NGNGld hl,vram+vsize
ld de,0
ld b,(vsize/16)-1
di
ex sp,hl
loop:
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
djnz loop
ex sp,hl
ret
0076記念カキコ
NGNG0077デフォルトの名無しさん
NGNG妙に違和感があるのはなぜだろう…。
0078新米
NGNG21 EB F5 0A 0D 20 20 61 20 70 75 73 68 65 64 21
20 28 5E 2D 5E 29 20 0A 0D 24
できたっす!debugで組んだっす!
0079デフォルトの名無しさん
NGNGadd r1,r1,(getglobs+8)&0xff0000
add r1,r1,(getglobs+8)&0xff00
add r1,r1,(getglobs+8)&0xff
RISCは面倒
0080鬱な藁人魚
NGNGDOSのFATとDIRエントリをファイルとして残しつつ、
独自のファイルシステムを載せるという、○刃の?
メンドクサイ藁
あと、昨日IntelのPentiumファミリーデベロッパーズマニュアル下巻
を自費にて購入。読みづらいけど、使える。|(^o^)/"イイ!!
メンドクサイのがお好きな人には尚お勧め(藁
0081アセンブラAX
NGNGZ80と 8086と SH-4 しか触ったこと無いですけど
でも ほとんど忘れてしまったので また勉強しなおします
今度は何を叩こうかな〜
ワンダースワンを叩こうかな? 開発セット売ってるみたいだし
80186互換機らしいけど メモリマップとか 載ってますかね?
OSも作れるのかな? やっぱ 石に入ってるかな?
ちょっと調べてきます
あげとこ♪
でわ
0082デフォルトの名無しさん
NGNGex sp,hlなんてあったっけ。
ex (sp),hlとかld hl,spがあったのは覚えてるんだが。
>>79
そんな巨大な即値が使えるのなら、何で分解するのかがわからん。
getglobsが外部リンケージで、リンカがへぼだったとしても、
mov r1,getglobs
add r1,r1,8
でだめなのか?
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGループカウンタは8ビットでいいのか?
vsizeは16の倍数なのか?
なんで-1するんだ?
1イテレーションで32バイト書きこんでるように見えるのだが?
>>83
デバッグはどうするんだ。ニモニックくらい覚えれ。
0085デフォルトの名無しさん
NGNG新人教育でアセンブラを必修とすべきだ。
コンピュータの概念の全てが、アセンブラの中に詰まっている
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNG高級言語の概念以外はな
0088デフォルトの名無しさん
NGNG厨な質問でスマソ
0089デフォルトの名無しさん
NGNG何かの時間待ち(I/O, FPU, etc)
delay slotに入れるものがないときの詰め物
あとでパッチ当てるための遊び
ループの先頭のword alignのためのpadding
nopは効果のない命令にアサインされていることもある
例えばx86では nop と xchg (e)ax, (e)ax は同じオペコード。
0091バイク板の鬱な藁人魚
NGNGExdebで検索掛けるとExdebの作者が公開している資料もろもろ
が手に入るよ。Exdeb自体も結構使えるからお勧めっス
バグがあったような気もするが・・・
009289
NGNG・
・
・
やっぱり地道にいこう。
0093アセンブラAX
NGNGC++のクラスライブラリには インラインアセンブラ 相性悪いね
コンパイラの最適化の邪魔しちゃうみたい
キャッシュ、先読み、パイプライン 等も考慮して書くなんて 大変です・・・
やっぱ 最近のCPUは アセンブラ 辛いわ・・
でも MMXを使う時は アセンブラのメリット出ますね
どうやって ビジネス系の仕事でMMXを使うか・・ わたしの課題
アセンブラ使って 何か作りたいな〜
0094デフォルトの名無しさん
NGNGまあ実際そうなんだろうけど。
ところでみなさんの偏見でかまわないのだけど
アセンブラの難易度というのはどれくらいなの?
言語と比べていただけるとわかりやすくて幸いです。
ex:Perlと同じくらい簡単。
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNG単純なので書くのは簡単。
単純すぎて思った機能を実現するのが大変
煉瓦を一つ一つ積み上げて家を建てるような。
0097バイク板の鬱な藁人魚
NGNGんで、質問っす。今から68kの汗、覚えて何か役に立つかなぁ?
外部バスとか使いやすいですか?
ってーか80x86汗使いからのクラスチェンジは大変という噂が・・・
どうなんでしょうか。
0098デフォルトの名無しさん
NGNGMPUとしてはもう作ってないですが、
ASICに組込まれたエンジンとしては世の中に存在はします
>80x86汗使いからのクラスチェンジ
その違いが、よりシンプルな印象と取れるか貧弱と取れるかが評価の分かれ目
0099アセンブラAX
NGNGきゃっする よりは覚える価値があると思います
0100バイク板の鬱な藁人魚
NGNGレスさんくす
どっかに68k汗の解説HPか、txt転がってないかなぁ。
検索したら関係ないHPイパーイ出てきて裁ききれなひ(汗
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNGC+++クラスライブラリ:CISC
俺ってチャレンジャー。
0103バイク板の鬱な藁人魚
NGNGチャレンジャーだ。がむばれ
0104デフォルトの名無しさん
NGNG死んでください。
0105デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNGおことわりします。
0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNG0112バイク板の鬱な藁人魚
NGNGmov ah,09h
mov dx,offset Mes01
int 21h
xor ax,ax
int 21h
Mes01 db 0dh,0ah,"Thanx!!",0dh,0ah,'$'
0113デフォルトの名無しさん
NGNG日本人が設計したらしいけど、もうダサダサなんだよね。
とくにプリプロセッサの .aif .aelse .aendi って気持ち悪すぎ。
あと、左から右へ代入する表記もやる気を無くすよ。
0114デフォルトの名無しさん
NGNGいけないんじゃなかったけ。
Intel系みたいにマイクロコードに落とし込んでも
使いやすくしたら良かったんじゃないかと思ったりする。>sh*
C で書くならどっちでもいいけど。アセンブラはちときついかなと思ったり。
0115デフォルトの名無しさん
NGNGそれより、無理矢理16ビット長にしてるから、逆汗してデバッガで追いかける
ときには見にくくてしょうがない。とりあえず、Cのソースをエディタで開いて
追ってるけどつらいわ。
call/retは一応あるよ。ただ、命令長が16ビットだから、命令のなかに
コールアドレスは含まれない。基本的にPC相対指定でジャンプアドレス
を格納したメモリを指定して、そっからロードしてジャンプとかになる。
これを逆汗でみたときはさもありなん。
0116バイク板の鬱な藁人魚
NGNGV800系は如何?
って使ってる人自体少ないかモナー
0117
NGNG10年前なら東芝やNECの第一線級でもマトモな乗算器も組めない有様
だったけどねえ。
今はやれる事すくないかもな。
Hashをハードで組むとかどう?
0118110
NGNGVHDLやらVerilogなんてものは話で聞くぐらいだった日々。
A1図面にぎっちり書かれたラッチをおいつつ、旧CPUの解析・・・
ま、小規模なものだったけどね、さすがに。
でも、いちばんつらかったのは、ロジックより内蔵LCDドライバ
の特性の維持の方だったけどな。温特、負荷特でちゃんとした
特性でなくてなぁ・・・。コンパレータがなぁ・・・うぅっ
いまはすっかりソフト屋だけどね。
0119デフォルトの名無しさん
NGNG0120113
NGNGそうそう命令長が16ビットなのも嫌だねぇ。
なんでもPC相対で遠くから読みだしてんだから。
言語設計がセコすぎだよ。
0121藁人魚
NGNGプロテクトモードで動作しているOSってBIOSは、どう扱っているんだろう?
もしかして、仮想8086モードにぶち込んで動かしてるとか?
或いは殺してるんだろうか?
0122デフォルトの名無しさん
NGNGBIOSに入ればよろし。x86ならコールゲート使えばいいんだっけ?
0124デフォルトの名無しさん
NGNGPCI BIOSとかは32bit BIOSがあるらしいが。
0125デフォルトの名無しさん
NGNGpalmプログラマの中では現役。
俺はRISCが気に入ったので、もうCISCには戻りたくないが。
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNG会社が保てるかどうかが問題かもしれんけど。
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG新聞か何かの記事で見たなあ
速度遅いから、最近のPDAでの採用が減ってるらしい
0131デフォルトの名無しさん
NGNG事でしょうか。つーか早くARMのpalm出せ。
0132仕様書無しさん
NGNGつーかPocketPCとPalmを比較する時にCPUのクロックで比較して
PocketPCの方が速いと思い込んでいるのではないかと。
まあ、速いのは間違いないが。
0133デフォルトの名無しさん
NGNGコンセプトが違うよね。
一方はミニWindowsを。
もう一方は必要最低限の電子システム手帳を。
0134デフォルトの名無しさん
NGNGそーいやこんなのが発表されましたな
ttp://www.zdnet.co.jp/mobile/0204/17/n_oqo.html
0135デフォルトの名無しさん
NGNGいい本ないですか?
0136デフォルトの名無しさん
NGNG基本情報技術者直前対策。
0137135
NGNG教えてもらいたいと思いまして...
0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNG仕様書。と。
0142デフォルトの名無しさん
NGNGあれ、PalmSourceでいろいろ小細工するみたいなことを以前に聞いたけど、
どうせ問題があとからいろいろ出るような気がする。
0143デフォルトの名無しさん
NGNGDOS環境で。
お願いします。
0144デフォルトの名無しさん
NGNGシステムコール使うかBIOS叩くかポートから直接制御するか。
0145デフォルトの名無しさん
NGNGArmはバイエンディアンなので。
PPCもバイエンディアン。
0146デフォルトの名無しさん
NGNGKY-80(Z80上位互換CPU)について知ってる人はいませんか?
ポート割付が不明なので、コードが理解できません。助けて・・・
0147デフォルトの名無しさん
NGNGBIOS経由は遅いと聞くので、できればポートから直に読み取るケースの方を教えていただけませんか?
なかなか情報源がなくて…。
0148142
NGNGバイにしても、システム作るときにどっちか決めるんだよね。
オレ、SHしか使ったことないからARMはよく知らないんだけど。
去年聞いただけだからアレだけど、ARMをリトルエンディアンで使うという
話だったんだよなぁ。質問の時間に、やっぱり突っ込んでいた人いたけど・・・
なんで同じエンディアンにしなかったんだろ? 互換性考えたら、普通は
エンディアンを同じにしておくと思うけど。
0149デフォルトの名無しさん
NGNGキー入力速度を考えれば、そんなに速くなくてもいいと思う・・・
あと、USBキーボードはどうするの? たぶんLegacyインターフェイス
エミュでI/Oポートまでエミュしてないと思うよ。
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNGgetchあたりのソース読め
0153デフォルトの名無しさん
NGNG68000(X68K)を少しかじった事があるのですが、ペンティアム以降の
資料を書店で探したけど全然ないんですね。
友人に「金出して買え」と言われるものの本屋にないなんて。
開発をWindowsに移行したいのだけど手始めに撫でるだけでもx86系の
概念に触れておこうと思ったのに。
ニーモニック自体は、386教本で十分って事なんでしょうか?
0154デフォルトの名無しさん
NGNGマイクロソフトのサイトからDLできるよ。
0155デフォルトの名無しさん
NGNG今の時代に近い事をやるべき。と言ってみるテスト
0156デフォルトの名無しさん
NGNGここのpdf全部DLして見れ。
http://www.intel.co.jp/jp/developer/design/pentiumiii/manuals/index.htm
0157デフォルトの名無しさん
NGNGMSのサイトにも情報あったっけ?
まことに申し訳ないですが、URLきぼーん
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG書籍は386までのしかないの。
0160デフォルトの名無しさん
NGNGhttp://www.ascii.co.jp/books/detail/4-7561/4-7561-0213-1.html
0161153
NGNG>>156 モノを教えてくれて有難う。 取り敢えずReGetに渡して、
今夜は寝ます・・・30時間近く寝てない・・・。
0162デフォルトの名無しさん
NGNG章を読みたいときはどうも。。。
最近の印刷所ではPDFデータで入校できるんだけど、有志で印刷代
だして印刷、製本・・・ってのは、やっぱり著作権の絡みで駄目かなぁ・・・ヤパーリ
0163デフォルトの名無しさん
NGNG会社で印刷するとタダ。
0164カヲル
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGもっともそれはx86に限らず大部分の32ビットCPUに言えるけど。
0167デフォルトの名無しさん
NGNGおじさん怒っちゃうぞ!!
0168デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNGで行きつくところまで行きついてしまってMASMで開発しています。
実に合理的理由があってやってるのだけど、周りにどう思われるか想像に固くない。
あなたの周りにJavaの開発にMASM使ってる人が居たら暖かい目で見守ってあげましょう(藁
0171デフォルトの名無しさん
NGNGついでにバイトコードアセンブラも作ってください・・・。
0172デフォルトの名無しさん
NGNGjasminとか。
まあバイトコード自体使えないけど。
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGワラタ
0175デフォルトの名無しさん
NGNG合理的理由って何よ?
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGnativeコードで実行とか?
0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNGPen3で動かした場合とまったく同じ挙動を示すのかどうかということです。
計算結果は同じでなければなりませんが、たとえばある変更によって
Pen3では速度が向上するがAthlonでは効果がないとか、そういった
ところがどうなっているのかが疑問です。
0182デフォルトの名無しさん
NGNGZ80知ってりゃATMEL AVRなんて30分もあれば理解できるはず。
(PICはやや特殊だから嫌い…)。
わざわざC使うまでもない制御なんていくらでもある。
0183デフォルトの名無しさん
NGNG携帯Javaと見た。
0184デフォルトの名無しさん
NGNGアセンブラ…ヽ(`Д´)ノウワァン
にしましょう!
0185デフォルトの名無しさん
NGNG果たして次スレはあるのだろうか。
0186デフォルトの名無しさん
NGNG0187名無しさん@Emacs
NGNG0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNG0192start!
NGNG0193デフォルトの名無しさん
NGNGexit(-1);
0194デフォルトの名無しさん
NGNG確かに組み込みなら現役ですね。といっても過去の遺産をずるずると
ひきずっているだけのものがほとんどですが。
>>わざわざC使うまでもない制御なんていくらでもある。
これはどうかと・・・逆のような気がします。わざわざアセンブラで書くまでもない、と。
事実、バイト先でも時間と暇があればできるだけCで一から書き直してます。
0195デフォルトの名無しさん
NGNG>事実、バイト先でも時間と暇があればできるだけCで一から書き直してます。
時給稼ぎのために、アセンブラで済むコードをわざわざ手間暇かけて
(機械語的に)無駄の多いコードに書き換えてるんですか?
#「コンパイラで最適化すれば良いじゃん」ってのは無しね
きっと、まともな制御ソフトなんて書いたこと無いんですね。
0196デフォルトの名無しさん
NGNG新規なら慣れたほうが作りやすいだけの話。
その後の保守も考えるならCのほうがリスクが低いかな。てなところでしょ。
0197194
NGNG196さんの言うとおり、「その後の保守」これに尽きます。
実際アセンブラでぐちゃぐちゃ書かれたせいで割を食うのは
書いた人ではなく、その後始末をする人ですから。
ぼくの仕事もそんな後始末が多いです。ちょっとした仕様変更なんかも
ものすごい重労働になってしまいます。だからこそバイトに
やらせるんでしょうが・・・。
Cで「わざわざ」書き直すのも、その後の仕様変更を見越してのことです。
>>きっと、まともな制御ソフトなんて書いたこと無いんですね。
いきなりこういうことを言える神経を疑います。
0198182
NGNGROM容量を気にするような場面は少なくなってきていますし。
まぁアセンブラも書き方次第で可読性はかなり上がるとは思うのですが…。
0199デフォルトの名無しさん
NGNG消えている、と思ってました。(or 思ってます。)
ごめん。言いたい事、書いちゃて。
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNGゲームボーイ (;´Д`) アセンブラ
0202デフォルトの名無しさん
NGNGすぐイパーイ
0203デフォルトの名無しさん
NGNG>
> いきなりこういうことを言える神経を疑います。
>>202の言ってるような機能が制限されたハード環境で開発したり、
信号のタイミングをシビアに制御するようなことを>>194はしてないってこと?
制御ソフトの要求仕様に対して、オーバースペックのハードを使ってるのなら
可読性を優先できるかもしれないけど、必ずしもそうじゃないでしょ。
0204デフォルトの名無しさん
NGNGちゃんと理解してる人の書いたアセンブラは可読性高いと思うけどな。
アセンブラに限らず、他の言語でも同じだと思うけど。
0205194
NGNGそれなりの理由があればアセンブラで開発することもありますが、
最近はオーバースペックのハードが多いです。
>>わざわざC使うまでもない制御なんていくらでもある。
僕はただ、これに反応しただけなんで。
アセンブラじゃなきゃダメならそうするしかないですし。
ちなみにぼくはバイトといっても時給じゃないんで、わざわざ
時間かけても給料増えないっす・・・。むしろ損。
外注先の下請けってなもんです。学校行ってると、時給制じゃ
ろくに稼げないんで。
0206デフォルトの名無しさん
NGNGROM/RAM、液晶ドライバ&キー入力I/F込みで1チップ100円の世界。
0207デフォルトの名無しさん
NGNGICEとロジアナでデバックするような代物ではないのね。
0208194
NGNG僕はソフトウェアの方の人間なんで、ハードウェアを
さわらせられるとおもしろい反面、気を遣うし壊しそうで怖いです。
0209デフォルトの名無しさん
NGNGがんがれ
0210デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1014138664/29n
0211デフォルトの名無しさん
NGNG0212名無しさん@Emacs
NGNGrts
あれ?サブルーチンから正しく戻れません。
0213デフォルトの名無しさん
NGNGpush bc
ret
endm
なんての思い出した
0214デフォルトの名無しさん
NGNGニーモニックとは?(・_・)
0215デフォルトの名無しさん
NGNGTurboAsmだっけか? REPEATってマクロあったよな
あれ便利だったんだけどNASMで似たような事できん?
0216デフォルトの名無しさん
NGNGセマフォを実現するにはどうしたらいいっすかヽ(`Д´)ノモルァ
LDCWS や LDCWX を使うそうなんですけど、
int semaphore = 0, ret = 0;
int*p = &semaphore;
int*r = &ret;
while(ret == 0){
__asm__ __volatile__ (
"ldcws 0(%1), %0" : "=r" (p) : "r" (r)
);
}
これでちゃんと wait 出来てるんでしょうか?(;´Д`)ハァハァ
0217逝って良しの1
NGNG0218216
NGNG意味不明のコンパイルエラーがでるんスよ(;´Д`)
#include <pthread.h>
とすると、
/usr/include/dce/cma_ux.h でなんかシンタックスエラーがでます(;´Д`)
fork じゃ調べられないですよね?
もう少しがんばってみます(;´Д`)ハァハァ
0219デフォルトの名無しさん
NGNGある構造体があって、+=とか*=とか演算子がオーバーロードされてまして
それが3DNow仕様と普通のCのFPU仕様の2種類作ったんですが、
(3DNow版はオーバーロード関数内に_asm{}。)
インライン展開しないと3DNow版の方が速いんですが
展開するとC-FPUの方が3倍ぐらい速くなってしまいます。
これってどうしてでしょうか?
関数の中に_asm{}があるとインライン展開での最適化に支障が出る場合があるんでしょうか?
またインライン展開された部分のアセンブラコードが見たいんですが
どうやってそのアドレスを知ればいいんでしょうか?
0220デフォルトの名無しさん
NGNGインライン展開されてないのでは? > _asm{}
0221219
NGNGなんだか凄い結果ですが、ある計算をした場合
こんな感じになります。
リテール時のコードが見たいんですが
どの部分がインライン展開されたとこなのか
わかんなくて困ってます。
3DNow版
デバック 280.68クロック
リテール 16.86クロック
C-FPU版
デバック 289.51クロック
リテール 6.28クロック
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGプロジェクトの設定で、アセンブラコード吐き出させるから、
それで見てみれば?
[プロジェクトの設定]->[C/C++]->[ファイルリスティング]
0225219
NGNGBSCファイルはちょっと使い方がわからなかったので
MAPファイルを使わせてもらいました。
それで、コンパイラ最適化を無効でインライン展開有りだと
3DNowもC-FPUも普通に展開されていることがわかりました。
しかし最適化を速度重視にすると、どこに書いてあるのか
わからなくなります。
とりあえず、もっと勉強して調べてみたいと思います。
0226216
NGNGおとなしく sem_ 系の排他制御を使います。
0227基本
NGNG汎用レジスタってのはとりあえずわかるけど
0228すれ違いですが
NGNGいいと評判だったLions'CommentaryっていうUNIXのコードの解説本を買いました。
Cのところはなんとかわかりそうなのですが、PDP-11/40というマシンの
アセンブリが全然わかりません。(アセンブリはどのマシンでもわかりません。)
あまり深入りしたくはないのですが、せめてOSが起動するところまでの意味は
わかりたいと思います。
参考書なり、WEBなり、どなたかアドバイスしていただけないでしょうか。
よろしくお願い致します。
0229デフォルトの名無しさん
NGNGLILOのコードでも読めばわかるのでわ?
で、その解説誰か、教えて?
0230デフォルトの名無しさん
NGNGK6やPenIIだと、ロード/ストアユニットがあるので
mov eax, [mem]
mov ebx, [mem]
のようにメモリからのロードを続けて配置すると
1カウント、パイプラインがストールすると思うんですが
Athlonには、そのユニット自体ないので競合によるストールは起こらないんですか?
またPenIVはどうなんでしょうか?
0232230
NGNG違うだけ言われても・・。
0233デフォルトの名無しさん
NGNGジサクジエンの臭いがするぞ
そんなに注目してもらいたいのか?
0234デフォルトの名無しさん
NGNGストールしてもいいじゃないか。
0235_
NGNG0236230
NGNGパイプラインじゃなくてスーパースケーラでした。
MOVでメモリからレジスタにロードする場合
ロードユニットを使いますよね?
CPUがスーパースケーラで2命令同時実行出来るとして
その2命令が、MOVとMOVなら双方ともロードユニットを使うので
競合して同時実行出来ないと思うんですが、この認識は間違ってますか?
0237235
NGNG>アライメント(alignment)というのはメモリに変数を置くときの置き方のことだ。
>たとえば 32 ビットマシンでは int は当然 32 ビットを使うが、普通はどこから
>でも 32 ビットとれるわけではなく、「4 の倍数バイトから」とか「偶数バイトか
>ら」というふうに決められている。
>なぜかというとそのほうがメモリアクセスを高速化できるからだ。
同時に実行できないと言うのは正しいけど、その命令が隣り合ってるから
パイプラインがストールするとは限らない。
昔のPentium (P5) ならストールするけど。
0239デフォルトの名無しさん
NGNGsub esp,esp
0240デフォルトの名無しさん
NGNGMASMはデカいのアセンブルできないし、LASMはNT系でハングる事がある。
0241デフォルトの名無しさん
NGNGTASM
0242デフォルトの名無しさん
NGNGサンクス、使えるか調べてみます。
0243242
NGNGで、ゴルァメール出してみたら、再現しません。だと。
メモリ外アクセスやからそんときのメモリの状態によって
でたりでなかったりするのは分かるが…
そんなアセンブラ売り出すなよ〜仕事増える。
ちなみに無意味なマクロ挟んだら直ったりします。
dummy_00 proc
dd 0
endp
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNGhttp://www.wotsit.org/とか
0256242
NGNG確かに多いかも。
でも、LASMなら通るんですよ。
>>248
86用の実行ファイルではなく、独自の仮想マシン用のコード吐くために使ってます。
1セグメントは軽く超えてます。
あと、>>249の脳では理解できない使い方をしてるので、
私は馬鹿なだけって可能性ももちろんあります。(藁
0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNG宿題がどうしても解けません。
JAVA CASL2なのですが。教えてください。
問題は。
A>BならばX=A-Bとし A<=BならばX=B−Aとする。A=10、B=20とせよ。
となっています。
一応
START
LD GR1,A
CPA GR1,B
JPL PLUS ;Aが大きいとき
LD GR2,A
SUBA GR2,B ;B>A
ST GR2,GR3
JUMP OWARI
PLUS LD GR2,B
SUBA GR2,A
ST GR2,GR3
OWARI LD GR0,A
DMEM MSG,GR1,GR3
RET
A DC 10
B DC 20
;DUMP
MSG DC '*MEMORY*'
END
こんなpgを書いてみたんですがうまくいきません。
ご指導願います!!
0260デフォルトの名無しさん
NGNGですが、今度は次のaにセットした値が プラスならansに4を
0ならANSに2を
マイナスなら1をセットするPGを考えてます。
でも、これであってるはずなんですけど、なぜかうまくいきません。
pgは↓です。
START
LD GR0,DATA
CPA GR0,ZERO
JPL LAB1
JZE LAB2
JMI LAB3
LAB1 LD GR1,FOUR
ST GR1,ANS
JUMP OWARI
LAB2 LD GR1,TWO
ST GR1,ANS
JUMP OWARI
LAB3 LD GR1,ONE
ST GR1,ANS
OWARI DMEM MSG,DATA,DATA
RET
ZERO DC 0
FOUR DC 4
TWO DC 2
ONE DC 1
DATA DS 1
ANS DS 1
SIGN DS 1
;DUMP
MSG DC '*MEMORY*'
END
エラーメッセージは
H:\casl2>java CASL2 T33
CASL�U Assembler -V1.03(2001/04/25)- ( Date : 2002/6/26 )
オブジェクトプログラムを T33.obj へ出力しました。
END CASL�U Assembler.
H:\casl2>RUN T33
H:\casl2>java RUN T33
COMET�U Emulator -V1.03(2001/04/25)- ( Date : 2002/6/26 )
Illegal Address PR:002D(NOP) Adr:002E
END COMET�U Emulator.
と でてしまうんです
わかりますかねぇ?
0261248
NGNG0262デフォルトの名無しさん
NGNG正解!
0264デフォルトの名無しさん
NGNG関数(私が書いたものではありません)を使おうと思ったのですが、マルチ
スレッドのプログラムでこれを使用する場合、当然CPUが一つの場合だと、
そのインラインアセンブラ中で使用されているレジスタ等は複数有るわけ
がないのでこの関数が再入可能になるように排他処理を施す必要が出てくる
(スタックしか使ってない普通の関数なら排他不要ですが)のではないかと
思ったのですが、この認識で正しいでしょうか?
0265仕事さぼり
NGNGスレッド切り替え時に
システムが自動的に
レジスタなどのコンテキストは保存するはずだから、
その必要はないと思います...
0266ザンゲ野郎
NGNGjsr LABEL
とする所を
lsr LABEL
とタイプしていてなかなかバグが見つからなかったのはヒミツ。
0267仕様書無しさん
NGNG勉強汁!
キーワード「ディスパッチ レジスタ コンテキスト」で
検索汁 (゚Д゚)ゴルァ
マルチスレッドであろうと無かろうと、
マルチタスクだったりするし、
ふつーは割り込みもケアする必要がある。
たしかに >>265 氏の御説のとおり
「システム」か何か(仮)が良しなにケアしてくれるが、
その「システム」がどこまでヤってくれるのかを
理解しておかないと危険。
あと、レジスタを使わないでスタックだけ使えると
思ってるのか (#゚Д゚)ゴルァ!
しかもレジスタの読み書きについて排他処理すると
再入可能になるのか (#゚Д゚)ゴルァ!
CPUが1つしかないと「レジスタ等」も
1つしかないのか (#゚Д゚)ゴルァ!
三度のご飯のお供に Z80 をどうぞ。
0268デフォルトの名無しさん
NGNG026944x
NGNG拡張子‘asm’はアセンブラのソースファイルですよね。
これを実行ファイルに変換する方法はどうすればよろしいのでしょうか。
どうか、よろしくお願いします。
0270デフォルトの名無しさん
NGNGMASM
>>268
なんとなく同意。
027144x
NGNGありがとうございました。
0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNG初心者だががんばっているやつがいる応援したくなる。
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGttp://headlines.yahoo.co.jp/hl?a=20020706-00001022-mai-bus_all
0279アセンブラは知りません。
NGNGint aa,bb;
_asm{
push 1
push 1
push 1
push aa
ret 4
mov eax,dword ptr [ebp-14h]
mov eax,dword ptr [eax]
mov eax,dword ptr [eax]
mov dword ptr [ebp-280h],eax
push 1
}
WinMainの最初のほうに貼り付けたら落ちました。なぜですか?
0280デフォルトの名無しさん
NGNGpush命令はdword値をpushするのに対し、ret n はword値を破棄する
からじゃない?
だから 0x00010001uにreturnしようとして落ちる。
0281デフォルトの名無しさん
NGNG宣○レコード:点数レコード(整数型:番号,点数,文字型:名前)
言○整数型:sts,合計
部○手続:レコード入力(ファイル,レコード,状態)
|○手続:データ出力(合計)
|●レコード入力(点数ファイル,点数レコード,sts)
|●合計=0
処■sts=0
理┃合計←合計+点数
部┃データ出力(合計)
|┃レコード入力(点数ファイル,点数レコード,sts)
|■
フローチャート作るソフトはあるけど、擬似言語書けるソフトも作れそう?
0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNGナニソレ
0284デフォルトの名無しさん
NGNG富士通とか日立とか、汎用機の世界では10年以上前からあるぞそんなの。
結局ソース修正のほうが圧倒的に楽なんで元の木阿弥になるんだが大抵。
0285デフォルトの名無しさん
NGNGそーなんだぁ〜
>>283
基本情報技術者試験で擬似言語の問題が出てきてるんです、はい。
ま、他の学校の誰に聞いても
「そん何とっても役にたたん!」
とか言われるのがオチなのは気のせいか・・・
0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNG0288デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNG、このスレで?
が残ります。
0291デフォルトの名無しさん
NGNG質問の核心が残りましたね。
0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNGz80とかから勉強した方が効率はいいですか?
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGZ80は既に遺物だから、86からやった方がいいよ。
大体、試験環境を持ってるの?
PC-8801などの8ビットマシンを持ってるなら別だけど。
0296293
NGNGそうなんです、それが引っかかっていたんです。
既に環境がないのでz80の勉強といっても本を読むことしか出来ないので・・・
まだ何も手をつけていないので要領がわからなかったのですが
C++の勉強にCの知識が前提になるのと同じようなイメージで捕らえていたのですが
関係ないんですね?
0297デフォルトの名無しさん
NGNG●いきなり 386/486から初めてOK 86の知識も不要
●Z80は結構windows上のシュミレータも豊富
最初はコンパイラの出すコードを眺めるのが一番だよ
後はインラインアセンブラの使い易いコンパイラで少しづつ使ってみる
お勧めは Delphiパーソナル 無料だけどインラインアセンブラは
使えるし、コンパイル&goも早いから勉強には楽
0298デフォルトの名無しさん
NGNGtasm.exeとか付いてこないし
0299デフォルトの名無しさん
NGNGtasmを使わなくても1パスでインラインアセンブラが使えるから便利だという事でしょ
もちろんtasmに比べたらアセンブラとしては貧弱だけど
今時アセンブラだけで全部組むなんて無意味なんだし
ただ、Cコンパイラのように、アセンブル、リンクを使う経験値は稼げないね
0300293
NGNG使いやすい部類に入るのでしょうか?
0301デフォルトの名無しさん
NGNGインラインで使う用途にしては十分だけど、それ以上には向かないと思うよ。
誰かが書いてるかもしれんが、Cコンパイラの吐くアセンブリコードを見ると
勉強になるよ。最適化オプションの効果を見たりするのも意外に楽しい。
0302デフォルトの名無しさん
NGNGIntelCPUのメモリ上の 01 00 00 00 を 00 80 00 00 にする命令は
ありませんか?
bswap で挟むのは無駄な気がするのです。
0303デフォルトの名無しさん
NGNGでも Cで x:=(x<<31) | (( unsigned ) x >>1);
とやっても、相手がメモリなら殆ど速度変わらないよ
0304デフォルトの名無しさん
NGNG302はlittle endianのマシンで
byte[4] = { 01, 00, 00, 00 }; を
byte[4] = { 00, 80, 00, 00 };
にしたいんだからそれだとダメ。
>>302
> bswap で挟むのは無駄な気がするのです。
気がするだけだと思う
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNGBYTE単位で SHR + RCR * 3 とか…。
素直にBSWAP使った方が速そうだけど。
>>305
kernel.org
ttp://www.kernel.org/pub/software/devel/nasm/
0307デフォルトの名無しさん
NGNGgetできました。ありがとうございます。
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG字句解析なんてやってらんねーだろうし、
命令選択に幅がある場合の最適化なんてことをやりだしたら
カナーリの高級言語じゃないと厳しいのでは?
0313デフォルトの名無しさん
NGNG0314304
NGNGsub al, al
rcr byte ptr [mem+0], 1
rcr byte ptr [mem+1], 1
rcr byte ptr [mem+2], 1
rcr byte ptr [mem+3], 1
;rcr al, 1
;or byte ptr [mem+0], al
;この2行を有効にするとローテートになる
逆向きはrcrの代わりにadcを使おう。
でもbswapのほうがいいと思うよ。
シフト数が2以上なら迷わずbswap。
以下蛇足。
元データが何なのか知らないけど(グラフィックか?)
計算中はそのアーキテクチャ上で扱いやすいデータ形式にしておくのが
定石じゃないかな。
0315302
NGNGそうです。 グラフィックです。
1bppの画像をdword単位で操作したかったのです。
bswap使います。
0316303
NGNGモノクロビットマップデータを全体に1ピクセル動かしたい
バイト単位に
m[0] m[1] m[2] m[3]
76543210 76543210 76543210 76543210
C7654321 07654321 07654321 07654321 ->0
という事だけど、 高速にする為にDWORD単位でやる方法はないかという事だね?
となると、メモリの入出力速度に制限されるから、BSWAPが遅いといってもそれほど
問題にならないと思う。
どうしてもというなら
33333333 22222222 11111111 00000000
23333333 12222222 01111111 C0000000 ->3
for...
{dt:=m[i];
m[i] = ((dt >> 1) & 0x7f7f7f7f) | ( (dt<<15) & (0x808080)) | cf
cf:=(dt >>17) & 0x80;
}
0317デフォルトの名無しさん
NGNGおぉ。それ、SSE2で128bit単位でやると速そうだね。
0318デフォルトの名無しさん
NGNG実は「はじめて読むマシン語」という本を勢いで勝ってしまい
全て読み終えて理解も出来たのですが
当然のことですが読み進めていくうちにとても古いアーキテクチャーの物だと気がつきました
そこで次に「はじめて読む486」という本を購入しようと思っているのですが
その本の冒頭に「8086などを理解していることを前提に書かれています」という内容の記述があります
「はじめて読む486」を読んだ方がいましたら教えてください
「はじめて読むマシン語(Z80)」から「はじめて読む486」に進むのは無謀でしょうか?
0319manko_chinko ◆c2rpKRNM
NGNGはじめて読む8086をかってみれば?
良書だし安い
0320318
NGNG「はじめて読む8086」は大変評判良いですね
実はそれを買おうと思って間違えたんです・・・
本のタイトルを正確に記憶しないで「はじめて読む・・・」という部分と
マシン語の本であるというあやふやな記憶を組み合わせて購入してしまいました
その書店に「はじめて読む8086」が置いてあれば気が付いたんですけど
あいにく「はじめて読むシリーズ」はマシン語、アセンブラ、486、MASMと8086だけが見当たりませんでした・・・
読み始めてすぐに間違いに気が付いたんですがせっかくだから読みきってしまいました、時間の無駄だったかな・・・
1600円くらいケチケチしないで買い直すとしますか・・・
0321はじめて読むマシン語
NGNG( ・д・)…
0322デフォルトの名無しさん
NGNGアタ━━━(゚∀゚)━━━!!
0323ろうひ男爵
NGNGから読んだ方がよいですよ。
はじめて読む486は、ユーザーレベルアプリケーション以上のモノ
保護機能とか割り込みとかの本なので。
初めて読む8086を読んで、
拡張されたレジスタを理解(16bitから32bitへ拡張)+拡張された命令を理解
すれば、オーケーです。
windowsなら、特に割り込みの事を考える必要はないし、
exe386やrun386でも、システム側がやってくれるしね
0324デフォルトの名無しさん
NGNG0325デフォルトの名無しさん
NGNGhttp://store.borland.co.jp/bcsuite/index.html
昔 TASMを単体で買った時より廉いような気がする・・・
高くて買えなかったCodeGuardや あんなに高かった PowerPack もついてるし
0326デフォルトの名無しさん
NGNGmov ax, [bp+si]
↑
こういう使い方のレジスタの組み合わせってどのくらいありますか
0327デフォルトの名無しさん
NGNGDEBUGは出来る。そういうもんなんでしょうかね?
0328デフォルトの名無しさん
NGNG386でいろいろ拡張された分を無視するとそんなにない
0329デフォルトの名無しさん
NGNGアセンブラだけならC++ Builderに付属してる(w
0330デフォルトの名無しさん
NGNG16ビットレジスタだと
[offs]
[BX+offs]
[SI+offs]
[DI+offs]
[BX+SI+offs]
[BX+DI+offs]
SS:[BP+offs]
SS:[BP+SI+offs]
SS:[BP+DI+offs]
32ビットレジスタだと
[reg+offs]
SS:[EBP+offs]
[n*reg+reg+ofs]
(reg=EAX, EBX, ECX, EDX, ESI, EDI, なし)
(n=1, 2, 4, 8)
0332デフォルトの名無しさん
NGNGESP も使える。
0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNG気合の入ったCコンパイラが吐くコードのほうが、素人のアセンブリソースより
すごいことはあるんじゃない?
0335デフォルトの名無しさん
NGNG移植するときには有利なんじゃない?
03360ページ
NGNGたしかにそう。GCCで最適化レベルを最高にして出力された
アセンブラコードを読むと、かなり気合が入っている。
#VCは、最適化レベル上げるとバグッたコードをかなり吐くのでそこが不安。
Cコンパイラのコンパイルオプション(PIII用のコードを吐くようにするとか、最適化レベルとか)を適切に設定すれば、かなり速度は上がるはず。
それでも、物足りなければネックになっているモジュールだけハンドアセンブルで最適化。
0337デフォルトの名無しさん
NGNGハンドアセンブル…直でマシン語書くのか。
せめてアセンブラぐらい使えよ。
0338デフォルトの名無しさん
NGNGgccの最適化はCWにも劣るレベル。
全然気合いなんか入っちゃいないよ。
VCも5とかそれ以前はバグコードを吐いたけど、6はマトモ。
7(.NET)はちょっと物足りない感じだけど、やっぱりすごい。
0339デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNG皆の好みはどれ?
0341デフォルトの名無しさん
NGNG0342逝って良しの1
NGNGsh設計した奴は素人。
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNG0345takebe youta(正規表現
NGNG0346デフォルトの名無しさん
NGNGインラインアセンブラしまくって最適化の邪魔するんだよ
きまってんだろまったく。
0347takebe youta(正規表現
NGNG> きまってんだろまったく。
それは、誰が決めたんですか?
0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNGむむっ鋭い突っ込みお見事。
0352デフォルトの名無しさん
NGNG現在某参考書にちょっと載ってた
movq, punpcklbw, punpckhbw, paddwなど数種類の命令しか分かりません
0353デフォルトの名無しさん
NGNGがオススメ
0354デフォルトの名無しさん
NGNG御親切にどうもです
0355デフォルトの名無しさん
NGNGなんかx86らしくないと思ったのは漏れだけ?
0356デフォルトの名無しさん
NGNGEEX,EFX,…,ELXだったら、萌える。
0357デフォルトの名無しさん
NGNGadd eex, egx
adc efx, ehx ; 128bit加算 キター
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNGmov eax, fffffffffffffff0h
and eex, eax
ふーん。めんどうなのね。
オペコードの節約になるからRISC的には正しいのかも。
0360デフォルトの名無しさん
NGNGまさか、プレフィクス?
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNG苗苗〜
0363デフォルトの名無しさん
NGNGそりゃつまらんなあ
0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNG完全64bitモードあるじゃん。モエモエ。
よくわからなかったのが、従来の32bitアプリが
64bitレジスタにアクセスできるのか、ということ。
ちょっとだけおいしいかもしれん。ちょっとだけ。
0366デフォルトの名無しさん
NGNGレジスタが馬鹿ほどあって面白そうだし。
0367デフォルトの名無しさん
NGNGカーネルモードでないと64bitモードに移れないから、
従来の32bitアプリじゃ64bitの機能は使えないでしょう。
0368デフォルトの名無しさん
NGNG32bitプロセス(?)が、ヘンテコリンなprefix付けて64bitレジスタに
アクセスできるのかなあ、と。
0369デフォルトの名無しさん
NGNGその64bitレジスタにアクセスするのに必要なREXプレフィックスは、
32bitモードでは別の命令(INC,DEC)に割り当てられているので、無理。
0370デフォルトの名無しさん
NGNGそうなのか、残念...
0371デフォルトの名無しさん
NGNGal, ah
↓
ax
↓
eax
↓
rax
↓
(゚д゚)ウマー
な訳だよ、諸君!
どう思うよ?
0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNG既存のOS動かないし。
0374デフォルトの名無しさん
NGNGRAXのRって、何よ?
Rabi-en-RoseのRかな?
0375デフォルトの名無しさん
NGNG0376デフォルトの名無しさん
NGNGromance
0377デフォルトの名無しさん
NGNGでなくてはいけないのでしょうか?またMS-DOSはプロテクト
モードで実行させることは出来ないのでしょうか。
0378デフォルトの名無しさん
NGNG詳しくは以下参考
ttp://www.intel.co.jp/jp/developer/design/pentium4/manuals/index.htm
0379デフォルトの名無しさん
NGNGすみません勉強不足でした。おっしゃる通り、仮想8086モード
に移行出来れば、MS-DOSの上で動く16ビットアプリケーションも
動かせる様です。しかしMS-DOSのシステムコールが、なぜリアル
モードで動くのかが分りません。システムコールを実行する為には
メモリの保護などを行わなければ危険だと思うのですが...
0380378
NGNG作った当時は16bitCPUしかなかったし、
メモリ保護とかそんな意識がCPU自体になかっただけでは?
また、参考なるかどうかはわからんけど、一応。
ttp://www.atmarkit.co.jp/fsys/pcencyclopedia/001jp_pc_history01/jp_pc_hist02.html
0381デフォルトの名無しさん
NGNG× CPU自体
○ インテル
0382デフォルトの名無しさん
NGNG皆さん「クプ」と呼んでいるのですか?
「シーピーユー」と呼んでいるのは世界で僕だけですか?
0383デフォルトの名無しさん
NGNGクプにきまってんじゃん
0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNG0387378
NGNG訂正ありがと。
後、俺もクプだと思うよ。
流れからいくと。
0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG0391manko_chinko ◆c2rpKRNM
NGNG0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNGiAPX432
0394デフォルトの名無しさん
NGNGSCSIとかもエスシーエスアイとか言ってそうだな(藁
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNGトクプピなのにな。
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNGトクッピ だろ。
0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNG0402デフォルトの名無しさん
NGNGいーえーえっくす
0403デフォルトの名無しさん
NGNGhttp://www.hct.zaq.ne.jp/pcgate/pc/dictionary/C/CPU.htm
http://computers.yahoo.co.jp/dict/semicon/mpu/221.html
http://www.ne.jp/asahi/futohen/sankaku/h078.htm
http://www.hi-net.ne.jp/~iarum/hachidata/word.html
どれがお好み?
0404デフォルトの名無しさん
NGNG0405デフォルトの名無しさん
NGNGTCP/IPだからトクピプだ。
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG0409デフォルトの名無しさん
NGNGttp://23ku.net/~realdoll/MyLife/PersonalComputer.htm
まだイスドゥンなの?(クプ
0410デフォルトの名無しさん
NGNG自分の場合TCP/IPはトクピップで話さないと
会話が成り立ちません。
0411デフォルトの名無しさん
NGNG0412素朴な疑問
NGNG書いてあるんですけど、これって要するに TLB は 4K,2M/4M のPTEが
一つのTLBでシェアされるっていう意味なのでしょうか?
AthlonとかはTLBは 2つあるみたいですよね。
0413デフォルトの名無しさん
NGNGそういう意味なんじゃない?
0414デフォルトの名無しさん
NGNG↑にある6502(?)のソースからnesファイルを作りたいのですがどうすればできるのですか?
0415デフォルトの名無しさん
NGNGスーファミか。65816カスタムだね。
0416デフォルトの名無しさん
NGNGファミコンだと思うのですが…
どうすればnesファイルを作ることができるのでしょうか?
0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNG65816のアセンブラはあるの?
0419デフォルトの名無しさん
NGNGhttp://user.parknet.co.jp/wanisan/whp_lib/wsfcp.htm
0421デフォルトの名無しさん
NGNGこれはアセルンブルできないよ。
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNGえっ、そうなんですか?でもゲーム製作技術板のスレではできてたみたいですけど…
0425デフォルトの名無しさん
NGNGじゃあ、そっちで訊いたらええんちゃうん?
0426デフォルトの名無しさん
NGNG廃人宣言みたいな質問はやめろ(藁
0427デフォルトの名無しさん
NGNGわかりました。ありがとうございました。
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG文字列の扱いが楽だし、IDEモドキに組み込むのも楽だし
0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNGint abc(int x,long y);
ってCの関数をアセンブラで書くと
_abc proc near
push bp
mov bp,sp
mov ax,[bp+4]; 引数x の取り出し
mov ebx,[bp+6]; 引数y の取り出し
mov ax,dx; 戻り値のセット
pop bp; 終了
ret
_abc endp
となると書いてありました。C関数の引数は右から積むんですよね?
なんで、[bp+4]が引数Xになるんでしょうか・・・
long も int も4byte ですよね?
素人丸出しでごめんなさい。だれか教えてください。。。
スタックの絵を描いてみればわかる。
その例ではintは2byteのようだな。
0435デフォルトの名無しさん
NGNGスタックはアドレスの大きいほうから小さい方に
伸びてるのわかってほしい。
0436デフォルトの名無しさん
NGNG>>434
えーと、y,x の順で積んでから、
bp を積んでいるんですよね?
てことは、bp のサイズは4byte なのでしょうか?
それなら納得できます
その関数からどうやって戻る?
0438デフォルトの名無しさん
NGNGretがそうなのではないのですか?
どこに戻る?
0440デフォルトの名無しさん
NGNGIPレジスタ+BP だからXの位置まで4バイトなんだ。
合ってますか?
0441デフォルトの名無しさん
NGNGつまりret でIPレジスタの分をPOPして
もどるってことですか!
なるほど!!
ありがとうございました。
0442デフォルトの名無しさん
NGNG変態じゃん
つまらんことをわざわざ書くお前が変態
0444デフォルトの名無しさん
NGNGZ80っていうことは,ないですよね・・・
0445デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNGアセンブラだけなわけないじゃん。
効率悪すぎだから併用よ♪
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNG0451変態
NGNG0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNG自社開発フルカスタムCPUは、マジで泣きそうになるよ。。
0454プログラマ・ペレ
NGNG私ならそう(略)
0455453
NGNGもう2度とやりたくないな。まともなデバッガすらなかったし・・・頼りはメモリ
やレジスタ表示用7セグLEDだけ。メモリ参照時のアドレス打ち込みは、トグル
スイッチでパチパチ(;´Д`)
こんなのは三国人にやらせときゃいいんだ(w
今はSH-3+Cで快適開発〜。アセンブラもたまに使うけどね。MMUの
制御とかブート部分でちょこっとだけ。
0456デフォルトの名無しさん
NGNGMMUの制御って、隣家に任せればいいんだと思ってた...
0457デフォルトの名無しさん
NGNG戉ホ6\J%ゥJ^マ・鰰5・紛ォUソ/ン��鄂ラ=_9x,オp゚竡・s峨wOマJ%ニ・肉|5畢\8・羚ヌ・t、イ)
ゥノd�靼莚・・=u^-フ・'8・c・Z・K・&悌?n攪椢O'L、邁ケャdmFGフ%サ,ヲ・シ^三Nフ;コ・臚シlマmc・S仮・ノノアIyO‥rjrb�ト莚夏トエァ*ナァヌA・ツZ&・
Y・dイ\.゚>N$m\テ絳ナ苹ぎ嵐�、|k訪゙W・ォ議乳暇iWェ�k u択B`・\D�Θ・nVタコU@9トキ・]。゚「wキマbオロtkD・)圦5エ・、愍'#kI
良・ミスム:ケoocmWWヨクDサ・uGOナ・ャ蟯eヌ・c1ソ�I・#ヤ「・チRキウ76:Pナァ・Rャエ/ツ梦nk3Bコ・
ウネナLソ+~$帽・・メUowF纓オ$トp0ワnョュロ6_aイ=侠ォュ已瓜タoミ・ネoメ. %・3「DぼTヲG・ョ>亨ャ」S・{
r@ー\・歳ユ�゚ウヨサ#TsHCヘgノ「.M5コケ|キヘNlーbIニ&W゚ミ進z、癬\ヤI。B,セ巛抛[淺賄go
s・・ヒk]lアッJ0攤2雜C腑ス・閘ィ・件・ヤ讒・コCeHyYー芻ヌ・w剥gヨ嘱ヒ 井セ・ィテ
これってなんていう機械語ですか?
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGたしか1970年代あたりにSmalltalkの出力がバイトコードでやられている
というのをどっかの論文か何かで読んだ覚えがある。そこにははっきり
した起源は不明って書かれていたような気がした。
あやふやですまんです。
詳しい起源は知らんが、PascalはP-CODEだったし、
Bもスタックマシンの中間コードをinterpretしてたらしい。
0461デフォルトの名無しさん
NGNGサンクス。
0462459
NGNGまだみてるかわからないけど、前に書き込んだ情報のソースがみつかったので、
参考までに(やっぱ前の書き込み微妙にまちがってるし)。
http://www.brl.ntt.co.jp/ooc/spa98/proceedings/020_yamazaki.html
0463デフォルトの名無しさん
NGNG/* 32bit segment func */
void __far func(ushort sel,ulong num);
/* メイン関数は16bit セグメント上にあるものとする */
void main(){
void (__far *pFunc)();
ushort sel = AllocateSel();/*セレクタ値の取得*/
/* これがわからん */
pFunc = (void (__far*)())(((ulong)sel<<16 + (ushort)func);
RealToProto(); // real mode to protect mode
aFunc(a,b); // 32ビットセグメント上の関数を呼ぶ。
ProtoToReal();// protect mode to real mode
}
MSDOSのC言語処理系だと、__far 属性の関数は
従来どおりにセグメントアドレスとオフセットアドレスで指定
するから、それに対応するため、16bit セグメントから
32bit セグメントのコードをcall するための
テクニックなんだそうだが、よくわかんないです。
とくにこの部分。
pFunc = (void (__far*)())(((ulong)sel<<16 + (ushort)func);
関数ポインタに「セレクタ値:オフセットアドレス」
をセットしておくための処理らしいのだが、よくわからんです。
どなたか、ご教授ください。お願いします。
0464デフォルトの名無しさん
NGNGmov ah,09
mov dx,109
int 21
int 20
db '(・∀・)やん♪', 0a, 0d, '$'
これでコンソールに文字列を吐けますが
このmov ah,09ってファンクションコール(システムコール?)ですよね?
これの一覧が載ってるWebサイトありますか?
あとLinuxにもこういう仕組みありますか?
もしあるなら是非書籍かサイトを教えてください。
おながいしますm(_ _)m
0465デフォルトの名無しさん
NGNG> あとLinuxにもこういう仕組みありますか?
ある。int 90hだったと思う。
0466デフォルトの名無しさん
NGNGRalf Brown's Interrupt List
ttp://www.vector.co.jp/soft/data/prog/se015018.html
0467デフォルトの名無しさん
NGNGttp://www.linuxassembly.org/
0468名無しさん ◆glaITM9U
NGNG0469デフォルトの名無しさん
NGNG0470名無しさん ◆glaITM9U
NGNG0471デフォルトの名無しさん
NGNG0472名無しさん ◆glaITM9U
NGNGっていうか、CASLが開発で使われたりすることはあるの?
初心質問スマソ
0473デフォルトの名無しさん
NGNG開発以前に今時1語16bit×64KWの計算機なんて誰も作らんと思われ。
0474デフォルトの名無しさん
NGNG組み込み環境ならあるいは……
いや、その場合は 8bit に行くのかもしれないけど
0475デフォルトの名無しさん
NGNGあるのだろうか?
0476デフォルトの名無しさん
NGNG情報処理試験専用で、実社会では役立つこと1つもなしのプログラム言語?
0477デフォルトの名無しさん
NGNGというか、CASL程度だと 普通に組み込みの仕事してたら 事前に何も知らなくても
使えるから、フルイとして適当だという事。
だから、わざわざCASLを勉強しなさいって意味ではないんだよ
0478デフォルトの名無しさん
NGNGつーか、そのまえに質問の方法を勉強すべきでしょ。どの点がわからない
のか、まったくもってわからん。よくわからんです、とは具体的に何がわか
らんの?
まぁ、スレ違いの質問のような気もするけどね。
0479デフォルトの名無しさん
NGNGって8086ではダメなんや。
フーンだ!!
0480デフォルトの名無しさん
NGNGMOV CL,2
SHR AX,CL
0481デフォルトの名無しさん
NGNG引っこ抜いてV30に挿し換えれば使えるようになるよ!
0482デフォルトの名無しさん
NGNGmov a,0 と
どっちが小さいのでしょう?
前者は1バイト、後者は2バイトだと思うのですが・・。
あと、どっちが早いのでしょう?
0483デフォルトの名無しさん
NGNG0484manko_chinko ◆c2rpKRNM
NGNGxorだと思う
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNGmov aで2バイト、0が4バイト(32bitCPUだから)なのですか?
>>484私もxorのほうが小さいと思っています。
>>485雑誌等でよくみる表現に合わせているつもりです。
0487デフォルトの名無しさん
NGNGレジスターならXORではないの?
0488デフォルトの名無しさん
NGNGどうも、
CXを使用している場合はつらい!
186ならOKなのにね!
x86の宿命なのかな!!
0489デフォルトの名無しさん
NGNG俺は一応意味はわかるけどね..たぶん,>>463は初めて読む486を読んでるんだろう
答えを言えばプロテクトモードではセレクタ値を使うから V86で
関数のアドレスを selector(16bit):offset(16bit) に設定しておいて
これを call するとき selector:offset でうまく設定したセレクタ値の
セグメントとオフセットの組が利用されるんだろうと..
でも, 厳密には 16bit 用にコンパイルした x86 コードをプロテクトモードで
どうなるか解釈する必要があるから -S で出力したリアルアセンブラコードを intel の
コード表でデコードしなきゃならない。
そこまでして見直すのは面倒だし、勘違いしてたら赤面なんで書かなかった(w
あの説明だと AllocateSel() がまず不明だ..
セレクタ値用のメモリを gdt あたりに割り当てるっつーことなんだけど
本読んでないとわからないわな.. まぁ>>463 はてきとーにがんばってくれ..
0490デフォルトの名無しさん
NGNG0492489
NGNGども。本当は俺もはっきりわかっているか不明なので
教わりたかったんだよね...。
本の156pのRealToProto()関数ではCSにセレクタ値0008Hをロードしてるでしょ。
それで153pのSetUpGDT()関数では0008HのディスクリプタをSmallSeg
(16bitセグメント)にしている。(ここがミソ)
それで16bitセグメントのプロテクトモードで call far を呼ぶと 16bit だから
フツーに segment:offset コールでありながら(スタックにも戻りアドレスを
16bitで積む) segment だけがセレクタ値とゆー妙な状態で呼び出せるらしい...。
だから 32bit セグメントを呼ぶときは (sel << 16) + offset(16bit限定) に
なるということで...。
俺はこんな風に解釈してるんだけど、間違ってるかもしれない...。
間違ってたら非常にマズーだね(w
ツッコミ歓迎ッス...
0493489
NGNG32bitセグメント限定ってわけではないっすね...
0494デフォルトの名無しさん
NGNGZ80って32ビットCPUだっけ?
つーか雑誌とかって何?
アセンブラはCPUによってまったくニーモニックが違うことくらい理解してる?
0495デフォルトの名無しさん
NGNG> Z80って32ビットCPUだっけ?
8ビットだって。
往年の名 CPU で、組み込み分野などで広く使われたほか、パソコン MSX や
NEC の PC-88 シリーズ、ゲーム機セガ・マスターシステムなどで使われた。
確かゲームボーイも Z80 互換じゃなかったかな。
0496デフォルトの名無しさん
NGNGわーってるって。486のアフォに皮肉で言ってるだけなんだから
0497デフォルトの名無しさん
NGNGごめんなさい。。
今手元に「はじめて読むマシン語」という本がありましてそこに
「現在、多くのパーソナル・コンピュータはその心臓部にz-80という8ビットの
CPUを使っています」と確り書いてあります・・
mov a,0が6byteとおっしゃるのはどういう計算に基づいているのか、
わからないあまり血迷って適当なことを書きました。
aを使っているのもこの本の影響です(雑誌ではありませんでした・・)
ニーモニックについては、
本や雑誌によって表記が結構違うので
(たとえばレジスタは私の手元にある本ではA,B,・・・ですが
「日経ソフトウェア」という雑誌にはeax,edx等になっています)
環境によって全然書き方が違うんだなあとは思っていたのですが
CPUによってニーモニックが違う、という明確な認識は持っていませんでした。。
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNG> CPUによってニーモニックが違う、という明確な認識は持っていませんでした。。
それは、何か重要なことをすっとばして勉強してる気がする。先に進む前に、
ヘネシー&パターソンの「コンピュータの構成と設計」とか読んでみた方が
良いかも。
0500デフォルトの名無しさん
NGNGCPUによって命令が違う、そして命令の名前(ニーモニック)が違う。
0501デフォルトの名無しさん
NGNG奥付の発行年をよく見ようね。
本に書いてある「現在」はその頃の事だから。
0502デフォルトの名無しさん
NGNG「はじめて読むマシン語」は「初めて読む8086」という題名でリメイクされてます
題名が違うので別の本だと思うかもしれませんが内容を8086に移行したようなもんです
0503デフォルトの名無しさん
NGNG>>498??
>>499定本みたいですね。読んでみます。。でも高いですね・・。
ブックオフとかにもなさそうですし。
コンピュータ関係の古本を扱う本屋ってないのでしょうか・・・
見つかるまで定価で買います。
>>500 CPUによって命令の内容がそんなに違うものなのですか。
CPUが違っても一番小さい単位の命令は同じような内容なのだと思っていました。
>>501 問題はz-80が8bitということだと思ったので引用しました。
今のパソコンは32が主流なんですよね。
>>502 「はじめて読むマシン語」を購入する時8086とかと迷ったのですが・・
そういう事情があったのですか・・
0504デフォルトの名無しさん
NGNG買っといたほうがよかったかもね
ところで、nasm と「インテルアーキテクチャソフトウェア
デベロッパマニュアル」中巻をダウンロードして、適当な
コード書いてブルーバック拝んでみるっつー選択肢はないの?
0505デフォルトの名無しさん
NGNGコンピュータ関連の古本を多く扱う店はありますよ
神保町の古本屋街にあります
0506デフォルトの名無しさん
NGNG0507500
NGNGどのCPUも同じような命令を持ってはいるが、例えば最もよく使う
転送命令でも単語として move を使うものや、load/store を使う
ものがあり、分岐命令も jump だったり branch だったりする。
省略のしかたも微妙に異なるので、結果的にCPU毎にプログラムが
非常に違った見え方をする。
こんな説明よりアーキテクチャの違うCPUのコードを見るほうがはやい。
0508デフォルトの名無しさん
NGNGhttp://www.arcpit.co.jp/xasm_0.htm
0509デフォルトの名無しさん
NGNG古本なんだから当たり前だろ
0510デフォルトの名無しさん
NGNG>>504
>パソコン上でアセンブラ叩きたいだけなら 498 の書いてる本
>買っといたほうがよかったかもね
初心者ですがハードウエアのことも知りたいです、
べつにアセンブラだけ、というわけではないです
それでも「コンピュータの。。」も読んだ方がいいと思うのですが・・。
実はおっしゃっている意味がよくわかりません・・
>ところで、nasm と「インテルアーキテクチャソフトウェア
>デベロッパマニュアル」中巻をダウンロードして、適当な
>コード書いてブルーバック拝んでみるっつー選択肢はないの?
この選択肢は初心者には凄く難しく感じられるのですが・・
御免なさい、これから検索かけてみます。
>>505そうですか!ですが私は関西にいるので交通費が高くついてしまいます・・
>>507自分で書いているコードと書籍で見るコードは書式が違うって思います・・
多分CPUが違うんだと思うんですが・・
>>508う、難しそう、明日目を通します。
0511デフォルトの名無しさん
NGNGPCがどうやってグラフィックを出すか直感的にわかったりするし、
I/Oポートを叩くとどうなるかもわかったりする。昔の本を買う気なら
そういう選択肢も考慮してもいいかな。中古の98もヤスイし。
どうしてもWindows噛んでると、わかりにくいからねぇ、ここらへん。
0512デフォルトの名無しさん
NGNG( ´Д`)/<先生!VRAM直叩きってどうやればいいんですか?
_ / / / \_____________
\⊂ノ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄||
.|| ||
0513デフォルトの名無しさん
NGNGVRAMのアドレスに代入
0514VRAM
NGNG0515デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNG( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ VRAMVRAMVRAMVRAM!
(_フ彡
0517デフォルトの名無しさん
NGNG(;´Д`)/<先生!結局よくわからないのですが・・・・。
_ / / / \_____________
\⊂ノ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄||
.|| ||
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNG∧_∧ /
(#・∀・)/つ=・~< まずDOSを極めろや
/ ノ \
/ /\ / ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
_| ̄ ̄ \ / ヽ \_
\ ̄  ̄  ̄ ̄ ̄ )\__)\
||\ θロ ` ⌒ドン. \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG先生のバカー!
DOSなんて使いたくないよお・゚・(ノД`)・゚・
0522デフォルトの名無しさん
NGNG∧_∧ /
(#・∀・)/つ=・~< 煎ってよし
/ ノ \
/ /\ / ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
_| ̄ ̄ \ / ヽ \_
\ ̄  ̄  ̄ ̄ ̄ )\__)\
||\ θロ ` ⌒ドン. \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
0523デフォルトの名無しさん
NGNGアセンブラ始めてみたんだけど、ごく基本的なところで詰まってます。
以下のソースをmasm32でML /c して、link16でリンクしてるんですが、
Win2000のDOS窓で何も表示されないままコマンドプロンプトに戻ってしまいます。
どうしてなんでしょうか??リンカはどっかから拾ってきたものなんですが、
リンカの使い方がおかしいんでしょうか?
ちなみにCPUはcerelon700です。
===
_TEXT segment byte public use16 'CODE'
assume cs:_TEXT,ds:_TEXT,ss:_STACK
START:
movax,cs
movds,ax
movAH,02h
movDL,30h ; 0の文字コード30をDLに代入。
INT21h ; ここで表示させたい。
INT20h
_TEXTends
;ダミーのスタックセグメント
_STACKSEGMENTSTACK
MOJIDB'dummy','$'
_STACKENDS
endSTART
0524デフォルトの名無しさん
NGNGちなみに、このスロットプログラムはちゃんと動くんですが・・
===
_TEXT segment byte public use16 'CODE'
assume CS:_TEXT,DS:_TEXT,SS:_TEXT
TOP: MOV BL,30h
START: MOV AH,02h ; 1 moji output to stdout
MOV DL,BL
INT 21h
MOV AH,06h ; 1 moji input from console
MOV DL,0FFh
INT 21h
JNZ BTM
MOV AH,02h
MOV DL,08h ; 08h=BackSpase moji
INT 21h
INC BL
CMP BL,39h
JA TOP
JMP START
BTM: INT 20h
_TEXT ENDS
END
0525523
NGNGもう少し考えてからまたきます。
0526デフォルトの名無しさん
NGNGあてずっぽうだけど、'0'を表示した後改行してないので、プロンプトに隠れて
見えなくなってるだけだったりしない?
'0'の表示に続けて、0Dh (CR), 0Ah (LF) と表示してみたらどうでしょう?
0527523
NGNGリプライ、感謝です。
movAH,02h
movDL,0Dh
INT21h
movAH,02h
movDL,0Ah
INT21h
を追加してみたら、「NTMDVは不正な命令を検出しました」と
出てDOS窓上(Win2000)で止まってしまいました。もうちょっと考えてみます。
デバッグの方法についてまた質問するかも知れませんが、よろしくお願いします。
#よくみたら、スタックセグメントの中身が普通じゃないですね(笑)。
この部分は DB 100h DUP (?) にしておきました。関係ないと思いますが、一応。
0528デフォルトの名無しさん
NGNGこれってありですか??
なんでなしだと思う?
0530デフォルトの名無しさん
NGNG(ごめん覚え初めて1日目)
word ptrは16ビットだが?
0532デフォルトの名無しさん
NGNGスレよごしてごめん。
0533デフォルトの名無しさん
NGNG書くときはmov si, ecxでもいい
siのサイズが分かってるんで
0534デフォルトの名無しさん
NGNG0535523
NGNGcとアセンブラのリンクにおけるNEAR CALL/FAR CALLついての質問です・・
cでmian(){}を書き、その中からアセンブラで記述したsum()という関数を
呼び出すことを考えています。
#main() と sum() は main.c sum.asm というファイルに記述し、
>gcc -c main.c
>ml /c sum.asm (←masm32というアセンブラです)
にてオブジェクトファイルを作り、最後に
gcc -o main.exe main.o sum.obj(*1)
することを念頭に置いてます。
一方、PROCを呼ぶとき、NEARかFARという指定がありますが、
これは、リンクのあとで main() と sum() が同一(コード)セグメントに
あればNEAR、そうでなければFARだと理解してます。
ですが、main()とsum()が同一セグメントに置かれるか否かは
事前にはどうしたらわかるのでしょうか?もしくは指定できるのでしょうか?
ちなみに、
gcc -S main.c
として吐き出されたファイルは、call _sum というnear callに
なっていました。
0536523
NGNG一応知ってます。
ということは、cとアセンブラを最後にリンクする場合には、もしかして全てFAR CALL
になるんでしょうか?
0537523
NGNG理由はわかりませんが(?)、終了コードを間違いを直したら正常に動きました。
>INT 20h
のところを
>mov AH,4Ch
>int 21
が正解のようです。Win2KのDOS窓やMS-DOS6.2で動作しました。
INT 20h のままだと、DOS6.2では 0 が表示されるものの、コンソールに戻ってこずにハングアップします。
INT 20h は「初めて読む8086」のスロットプログラムからパクって来たのですが、
これが行けなかったみたいです。
ちなみに、0Dh OAh を出力すると、もう1行改行が入りました。
何bitのプログラムを作りたいのだ?
0540デフォルトの名無しさん
NGNGう。えーとですね、dos窓で動かしたいのでたぶん16bitです。(?)
あれー、でもmasm32が出すのは32bitなのかな?
もしかしてたまたま動いちゃってただけ?
ちょっと吐き出されたバイナリを読んで、考えてきます。
ヒントどうもでした〜。
0541デフォルトの名無しさん
NGNGdebugだとrでいけたですよね
0542デフォルトの名無しさん
NGNGこんどアセンブラにかかわりそうなヨカン
0543デフォルトの名無しさん
NGNGいろいろあるよ。
0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNG書き込めばいいんじゃないの
0546デフォルトの名無しさん
NGNGARMのがいいなぁ。
ボヤキでスマソ。
0547デフォルトの名無しさん
NGNG催促のプログラムだぜ。
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGもし誰か分かる人がいらっしゃったらお願いします。
0550デフォルトの名無しさん
NGNG少数点が無い場合ならわかるのですね?
少数点は一般的には
1)指定した所に ある事にして計算する
1.15形式とか呼びますね
掛算した結果は a.b*c.d =(a+c).(b+d)形式となります
1.15形式同士なら 2.30形式になります。
2)どこにあるかをメモリ上で指定して行う
浮動小数点形式という方法です
3)特殊なコードで少数点をあらわす(ASCIIコードのまま計算するとか)
0551デフォルトの名無しさん
NGNG必要があって参考書を探しているのですが、なかなか見つかりません。
今手元にあるのはCQ出版社の「ARMプロセッサ」という本なの
ですが、これ以外に良い参考書はあるでしょうか?
もしありましたら教えていただけないでしょうか。お願いします。
0552デフォルトの名無しさん
NGNG英語は読めますか?
これ以外にまともな資料は知らん。
StrongARM とかのマニュアルにもニーモニックの解説とかないし。
なにか規制があるんじゃない?
0554デフォルトの名無しさん
NGNGどうもありがとうございます。
a.b*c.d =(a+c).(b+d)って2.3*4.1=(2+4).(3+1)
って意味でしょうか?
0555名無しさん@Emacs
NGNGちょっと高いが。
http://www.jp.arm.com/kk/kk_shop.html
0556デフォルトの名無しさん
NGNGそうです。
5bit同士の掛算なら結果は10ビットになります
10進で考えると判り易いでしょう
12.345*1234.5 = 152399.025
0557551
NGNG英語は基礎的なものしか読めないです(^-^;
>>553
ARM Reference Manual ですか。調べてみることにします。
>>555
9500円ですか…でも必要なことは載ってそうなので購入を
検討してみます。
みなさんありがとうございました。
0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNGモトローラの 68000 シリーズじゃない?
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG> モトローラの 68000 シリーズじゃない?
68000 シリーズなら 680x0 と言うし、68340 なんかなら 683xx と言うだろうね。総称する時は、68K だよ。
まあ、単に 680x0 を間違えただけじゃない ? 68x00 でググッたら、316 件もヒットするからね。(680x0 なら、約65,000件ヒットするが...。)
0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNGword=16bit
double word=32bit
quad word=64bit
じゃないの?(ちがうかもしれない)
0567デフォルトの名無しさん
NGNGありがとうございます。
おかげさまで計算のプログラムは出来ました。
現在計算結果の10進数表記を書いています。
0568デフォルトの名無しさん
NGNG激しくおっぱいでした。
いやありがとうでやんした。
0569デフォルトの名無しさん
NGNG何の計算に使うの? 数値計算?グラフィック?
0570デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNGhttp://pc.2ch.net/i4004/kako/1008/10084/1008433236.html
の608程度じゃ達人とは言えないかなぁ、やっぱり…。
0572デフォルトの名無しさん
NGNG学校の課題です。
ようやく終わりました。ヽ(´∀`)ノ
数式をcaslコードに変換するコンパイラを作りなさいという課題でした。
どうもありがとうございました。
0573デフォルトの名無しさん
NGNGそこで、Intelのアセンブラでsbbっていうオーバフローフラグ見てくれる減算があるって、
なーんだ簡単じゃねーかと大喜びしたのもつかの間、途中でアドレスの演算しちゃうと
オーバーフローフラグが変わってしまうし、ループまわしても分岐の確認の為にオーバフロー
フラグ変わっちゃいますです。だれか助けて。
0574デフォルトの名無しさん
NGNGネタか?
0575デフォルトの名無しさん
NGNGネタじゃないです。
0576デフォルトの名無しさん
NGNG> なーんだ簡単じゃねーかと大喜びしたのもつかの間、途中でアドレスの演算しちゃうと
> オーバーフローフラグが変わってしまうし、ループまわしても分岐の確認の為にオーバフロー
> フラグ変わっちゃいますです。だれか助けて。
アドレス演算って何やってんのかわからんけど、±1 なら INC 使えばいいし、もっと複雑な奴なら LEA とかじゃダメなん ?
ループは、そのものずばりの LOOP 命令使えばいいと思うが...。
どうしてもって言う時は、SAHF/LAHF, PUSHF/POPF で一時退避しとくと言う手もあるし...。
0577デフォルトの名無しさん
NGNGフラグを保持しようとしてる目的は一体何なんだ?
0578デフォルトの名無しさん
NGNGおひょ、LOOP命令なんちゅうもんが有るのかぁ。ありがとうです。
INC、DECは使えると思ったんですが、Loopの戻りをどうすっか悩んでました。
>>577
引き算してオーバフローした時に次の桁から1引きたいんです。
int a[4],b[4]
a[0]-b[0]このときオバーフロしてたら、
a[1]-b[1]から1を引く
てな感じで。。。
0579デフォルトの名無しさん
NGNGその間にmovを入れてもフラグは不変だし。
0580デフォルトの名無しさん
NGNG2つまでならOKなのですが、3ッつめ以降で詰まっちゃって。
sub a[0],b[0]
sbb a[1],b[1]
までは大丈夫なんだけど、
sub a[0],b[0]
sbb a[1],b[1]
ここからが問題になって。
sbb a[2],b[2]
添え字をじか打ちしてやればいいんだけど
数が多くなると嫌だから...
0581デフォルトの名無しさん
NGNG0582581
NGNG0583581
NGNGならSBBよりSETBとかの方が速いかもね。
0584デフォルトの名無しさん
NGNG普通は最初の sub を特別扱いしたくないので、キャリー (オーバーフローじゃねーぞ、オーバーフローは別にある) フラグをクリアしてからループを組む。
CF = 0
while(0 < len--){
sbb *a,*b
a++;
b++;
}
みたいな感じでやる。
>>583
> 間に別の条件分岐を入れたいということ?
> ならSBBよりSETBとかの方が速いかもね。
SBB ... Integer Subtraction with Borrow
SETB .. Set Byte on Condition (CF = 1)
どう間違えたら、「SBB より SETB」 とか思えるんだ ?
0585デフォルトの名無しさん
NGNGはあ?
> 間に別の条件分岐を入れたいということ?
こう書いてあっても理解できんかったのか?
SBBの代わりにSETB+SUBを使う手もあり
ということなんだが。
0586デフォルトの名無しさん
NGNG> はあ?
なんか言い訳してるみたいだけど、訳わからんし...。
次に書く時は、ちゃんとコード書いてからにしてくれ。
0587デフォルトの名無しさん
NGNGなら前もって「自分は読解力が足りないのでコードでお願いします」
と書いとけ。後から現れて勝手に誤解してる奴の言うセリフではない。
0588デフォルトの名無しさん
NGNG恥かしい時は黙った方が良いよ。
SETB+SUBを使ったコードがどれほど助長になるか位は
素人でも分かる。
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG試しにあなたがSETB+SUBを使うという条件において最善のコードを書いてみて下さい。
0591デフォルトの名無しさん
NGNG> SETB+SUBを使ったコードがどれほど助長になるか位は
助長って何だろ?
583はループ中に別の(フラグ変更を伴う)処理が
入っているのなら という前提だろ。
その場合は無理にpushf/popfなどを使ってsbbするより
setbでCFをレジスタに入れてsubする方が速い
と言っているのだと思うが。
583の説明不足と、584の理解力&経験不足で両成敗だな。
0592デフォルトの名無しさん
NGNG>setbでCFをレジスタに入れてsubする方が速い
これってsbbを1回実行する代わりに、subを2回実行するってこと?
次のCFはどうやって生成するの?
0593デフォルトの名無しさん
NGNGそうだね。あまり効率が上がらないね。
INC/DECはCFは変化しないし LEA なら何も変化しないから
折角アセンブラを使うなら、これを組み合わせて実現すべきだね
でも、多倍長なら高級言語で100進か千進で書く事をお勧めするよ。
0594デフォルトの名無しさん
NGNG10000進法?かなC++で、int一つに10000まで記述する方法で一回書いたんですが、
やっぱ遅いッス。10000の桁あふれを10000で割ってみる事で調整したのが
敗因と解ったような気がしてるんですが。
桁あふれの調整を割り算以外でやるとなると、引き算しかなくて。
引き算の手間隙考えるとアセンブラの勉強も兼ねてアセンブラの方が
ええかなぁと思ったのでアセンブラで書き始めています。
0595デフォルトの名無しさん
NGNGそりゃ遅いのはしょうがないよ。
1、普通は毎回桁溢処理というか正規化をしない方針でいいんじゃないの?
2、足算の場合、毎回正規化するなら割算でなく引算でいい
0596デフォルトの名無しさん
NGNG毎回正規化しない方法が思いつかないんですよね。
どんな方法取られてます?
0597デフォルトの名無しさん
NGNGだったら、2万回くらいの加減算算では正規化するひつようはないですね?
0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNGほほぉ。足し算だけ2万回してるって言うのが保証されるプログラム用途かぁ…
僕の用途だと難しいですね。数値計算のある問題に特化したプログラムの事なのですか?
でも、それなら作るのは簡単。なるほどね、色々面白い。
0600デフォルトの名無しさん
NGNG違うよ。 だから、加減算が2万回以下なら正規化しなくていいって事は
非正規化カウンタみたいなのを1ワード増やしておいて
正規化カウンタが例えば100回を超えたら正規化するようにしておけば
毎回正規化する負荷 > 1ワードのカウンタ +100回に1回正規化する負荷
でしょ?
それから掛算の時とかは途中結果でキャリー処理をせずに最後に正規化をかければいいから
掛算まで考えると、これはそんなに遅くない筈
0601デフォルトの名無しさん
NGNG> 試しにあなたがSETB+SUBを使うという条件において最善のコードを書いてみて下さい。
結局あんたは、書けないわけね。
>>591
> 583はループ中に別の(フラグ変更を伴う)処理が
> 入っているのなら という前提だろ。
つーか、>>583 で...
> 間に別の条件分岐を入れたいということ?
とか勝手に勘違いしてただけだろ。
そもそも、「多倍長整数演算」と言う範疇で話が進んでいたんだから、違う方面に進むんなら説明しないとわからんぞ。
せめて、「SBB より SETB + SUB とかの方が...」と書いてくれ。
0602デフォルトの名無しさん
NGNGSETB EAX
何か処理
ADD EAX,-1
SUB src,dst
0603デフォルトの名無しさん
NGNGSETB EAX でCFの反転を保存して
何か処理して
ADD #-1,EAX でボロー復元して
SBB か
0604デフォルトの名無しさん
NGNG> SETB EAX
お前、SETB 使ったこと無いだろ。
せっかく >>584 に書いてやってるんだから、ちゃんと見ろ。
>> SETB .. Set Byte on Condition (CF = 1)
^^^^
EAX なんか指定できるわけねーよ。
そもそも、>>602 のコードが何をしたいのかわけわからんし...。
0605デフォルトの名無しさん
NGNGSBB EDX,EDX
とか使わない?
0か-1になるけど。
0606デフォルトの名無しさん
NGNGCFの復元は
ADD EDX,EDX とか
SHR EDX,1 とか
p5のころはペアリング次第で最速だったと思うけど最近のCPUではわからない。
0608デフォルトの名無しさん
NGNGこんなんでどう?
SETB BL
何かの処理
NEG BL
SBB src,dst
>>605
PentiumIIIの場合、
SBBは2マイクロOPS
SETBは1マイクロOPS
0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNGmov eax, [ebp+fffffefc]
楽勝ですが何か?
0611デフォルトの名無しさん
NGNG69 69 69 69
mov mouth,penis
mov pussy,mouth
0612デフォルトの名無しさん
NGNG8ビットのZ80位なもんだろ
今時のRISC(CISCもどき)は
コード並び順序を仕様に沿ってやらないと、
パイプラインが乱れて実行速度が落ちるだろ
こんなアセンブラ、
やってられまへん
0613デフォルトの名無しさん
NGNGアウトオブオーダを知らんのかね
コンパイラが SIMD まで全部最適化してくれるならアセンブラなんて
触りたくもないけど速度が倍違うとやらないわけにはいかんのよ
0614デフォルトの名無しさん
NGNG> CFの復元は
> ADD EDX,EDX とか
> SHR EDX,1 とか
これでどうやったら、CF が復元できるんだろう...。
>>607
> 結局というか、もともとx86アセンブラはある程度読めるけど
> 書くのは出来ないから振ってみただけなんだが
自分では書けないけど、人のコードは批評したいわけね...。
0615デフォルトの名無しさん
NGNG俺たち2ちゃんねらーなんだけど、何か?
0616605&606
NGNGCF=1の場合
SBB reg,reg でreg=not 0になる
ここに適当な処理
ADD reg,reg でCF=1にもどる
CF=0の場合
SBB reg,reg でreg=0になる
ここに適当な処理
ADD reg,reg でCF=0にもどる
レジスタをひとつ犠牲にするのが問題。
レジスタのは貴重だし、Pentium3ではSETBの方が効率がよいらしい。
>>608さん、情報ありがとう。
0617614
NGNGなんか俺、勘違いしてたみたい。CF の復元はできるね...。
> レジスタをひとつ犠牲にするのが問題。
レジスタを犠牲にするのはSETB も同じだし、どっかに保存するしかないから当然だと思う。
> レジスタのは貴重だし、Pentium3ではSETBの方が効率がよいらしい。
それにわかりやすいし...。
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNGちなみに、無料では手に入らないですかね?
0624デフォルトの名無しさん
NGNG割れろ。
0625デフォルトの名無しさん
NGNGPS2 の VU (ベクトル演算ユニット) とか、最近の DirectX のシェーダーとか。
いちおうコンパイラも出てきつつあるんだが、まだまだ辛い日々でございます。
0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNG割れろって?
>>626
NASMって何ですか?
0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNG割れる方法。
友達にC++Builder6 ProfessionalかDelphi6 Professionalを持っている
人を探す。
その人の家に生CD-Rを持参。
以降略。
0631デフォルトの名無しさん
NGNGMASMなんて昔いくらしたんだっけ?
0632デフォルトの名無しさん
NGNGへ?
0633デフォルトの名無しさん
NGNGなんか制限なかったっけ?
0634デフォルトの名無しさん
NGNGたしかDDKは無償配布が終わった筈
0635デフォルトの名無しさん
NGNGどっかにあったよ、でも、もしかして・・・
ガクガク((((;゚д゚)))))ブルブル
0636デフォルトの名無しさん
NGNGMZ?PE?わかりません・・・(-_-
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNGそうだったのか、すらんかった。いや、入手済みだからいいんだが。
MASM は、まだ vcpp.exe か vcpp5.exe を落とせば手に入るな。
0639デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/vstudio/downloads/tools/ppack/download.asp
アンインストーラが無いのでアンインストールにはいったんVC6をアンインストール
しなければならないってことですよね。
あと、SPのバージョンによってDLするものが違うということは、
仮にSP6なんてのが出たらまた変更しないとダメなんだろうか、とか。
このへんどうなんでしょう。
0640デフォルトの名無しさん
NGNG実はインストールしたこと無いからそこんとこは知らんのよ。
vcpp /C /T:c:\tmp
とかすればインストールせずに MASM が取り出せてウマー!
というか、現在 MASM の最新版はこの VCPP に付属の Ver.6.15 だ。
0641デフォルトの名無しさん
NGNGそれで取り出せるならDLしてみようかなぁ
0642デフォルトの名無しさん
NGNG他人から見たら意味不明の定数をコード中に埋め込むことです。
0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNGINT 21
0645デフォルトの名無しさん
NGNGほうけいしゅじゅちゅでもするの?
0646デフォルトの名無しさん
NGNG整形しますが何か?
0647デフォルトの名無しさん
NGNGそれってMASMがフリーで手に入るってこと?
0648デフォルトの名無しさん
NGNG0649デフォルトの名無しさん
NGNGでさっそく落として>>640の方法で取り出した。
今ml.exeが目の前にあるよ(゜Д゚) ウマー
8086マクロアセンブラ入門という比較的新しい本にサンプルをDDKで動かす例があるけど
本に記載されてるページ(MSのDDKのページ)に行っても落とせないんだもの。
アマゾンかどっかの書評でもそんなことが書いてたなぁ。
0650manko_chinko ◆GLc2rpKRNM
NGNGmicrosoftのftpサイトにいくと落とせると思う
0651デフォルトの名無しさん
NGNGどこ?ここ?ftp://ftp.microsoft.com/developr/masm/
テキストしか置いてないけど。
0652デフォルトの名無しさん
NGNG32ビットCPU、というかPentium以降を前提とした
入門書ってあるの?
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNGftp://ftp.microsoft.com/softlib/MSLFILES/
あとDLしてないんだけどDDKもあるぽい。
http://www.microsoft.com/ddk/download/98/BINS_DDK.EXE
http://www.microsoft.com/ddk/download/98/98SETUP.EXE
0655デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNGhttp://download.microsoft.com/download/win98SE/Install/Gold/W98/EN-US/98DDK.EXE
ネタ元
http://people.freenet.de/Power-Info/Windows98_DDK.htm
0658デフォルトの名無しさん
NGNG秋月の 16F877 ICEキットのtutrialさえうまく走らない。
詳しいサイトないかな。2年くらい前にすごく懇切丁寧なサイトを
見た記憶があるんだけど、消えたのか、見つからないや。
0659デフォルトの名無しさん
NGNG↓ここはいいよ
電子工作の実験室 (PIC、マイコン、ラジコン、EDA、VHDL、CPLD)
http://www.picfun.com/
0660658
NGNGレスありがとう。でもそこは何回も見たんだ・・・。
俺はじめたばっかりの厨なんだ。ごめんよ。
辞めた先輩に、途中の仕事丸投げされたんだ。
秋月のICEキットで書き込もうとしたらなんかエラーが出て
README.ICE見ろって。見たら SLEEP instruction したらダメだって。
で、具体的にどーしたらいいんじゃーってトコで定時になったから
帰りマスタ。土曜日だし。来週からまたがんがるよ(´・ω・`)
0661デフォルトの名無しさん
NGNGのみと書いてあるのですが、なぜショートジャンプしか出来ないのでしょうか?
0663デフォルトの名無しさん
NGNGそういう設計だからです。
でも確か、アセンブラ機能かマクロで ロングジャンプでも勝手に処理してくれるようになってたような
0664デフォルトの名無しさん
NGNG「8086 のアーキテクトが、条件ジャンプはほとんどショートジャンプの範囲に収まるし、万が一収まらなかったら、jmp との組み合わせで対処すりゃいいじゃん。」と思ったから。
0665デフォルトの名無しさん
NGNGわかりました。そういう設計なんだと考えることにします。
0666テンプレ(色んな所に貼ってね)
NGNG◆フジテレビ転じてニダテレビに抗議しよう◆
http://ex.2ch.net/test/read.cgi/news/1035557590/
◆フジテレビへの抗議のメールフォームはこちら◆
http://www.fujitv.co.jp/cgi-bin/response/2002mail_j.pl?from=index
◆電話や葉書での抗議はこちら◆
http://www.fujitv.co.jp/jp/faq/kaitou/answer2.html
◆放送番組向上協議会(向上協)放送と青少年に関する視聴者からの意見◆
http://homepage2.nifty.com/kojokyo/kojokyo/index.html
◆首相官邸への抗議先◆
http://www.kantei.go.jp/jp/forms/goiken.html
◆キム・ヘギョンさん会見:フジテレビが釈明コメント(言い訳)◆
http://corn.2ch.net/test/read.cgi/news2/1035642345/
横田めぐみさんの父、滋さん(は25日、東京都港区のフジテレビで、
孫のキム・ヘギョンさん(15)が出演したテレビ番組について
「警察の取り調べのようでかわいそうだ。何のためのインタビューなのか、疑問だ」と話した。
http://www.sankei.co.jp/news/021025/1025sha123.htm
上記の通りフジテレビは15歳の女の子も視聴率の餌にする鬼畜放送局です。
我々日本国民は断じてこの様な下劣な報道を放置しておくわけにはいきません。
断固、抗議しましょう。
http://www53.tok2.com/home/vbc/cgi-bin/upload/source/up0285.jpg
フジのアホ編集が「会見泣き」のテロップを出した瞬間(ネタじゃないよ)
0667デフォルトの名無しさん
NGNGついでに、何故そういう設計がありうるかというと、
ショートのほうが命令が小さいし速くできるから嬉しい
という面があったの。そうでないと不便な方を選ぶ意味はないよね。
0668デフォルトの名無しさん
NGNG命令長くなるけど。
0669デフォルトの名無しさん
NGNGhttp://www.microsoft.com/ddk/download/98/98SETUP.EXE
http://www.microsoft.com/ddk/download/98/98BLDENV.EXE
http://www.microsoft.com/ddk/download/98/98SAMPLES.EXE
http://www.microsoft.com/ddk/download/98/98LEGACY.EXE
http://www.microsoft.com/ddk/download/98/98SPECIAL.EXE
http://www.microsoft.com/ddk/download/98/98DOCS.EXE
0670デフォルトの名無しさん
NGNGその後の処理をさせたいと思い、PREFETCH(NTA,0,1)を使ったプログラムを
書きました。なかなかの効果があったのですが、この命令を入れた
プログラムってAthlonでも動くのでしょうか?_
現在は、この命令を使うかどうかはSSEを使えるかどうかでチェックして
いるのですが、これだと当然SSE付きのAthlonでも実行されてしまいます。その
時、Athlonがintel用のPREFETCH命令を実行できなかったら当然まずいことになる
訳で……。
私がAthlonマシンを持っていれば、自分で確かめられるのですが、残念ながら
持っておりませんので、ご存知の方がいらしたら、教えていただけませんでしょうか?
0671デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNGhttp://www.tamasoft.co.jp/lasm/install.html
のとおりにアセンブルし、hello.exeは作られたのですが、
helloを実行しても何も表示されません。
なぜでしょうか?他にもやることがあるのでしょうか?
0673デフォルトの名無しさん
NGNGhttp://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/22466.pdf
Athlonがなくてもこのへんを見ると
AthlonでPrefetch*ができることがわかるよ
0674673
NGNGちゃんとintel用のPrefetch*と同じオペコードだから問題なし
0675670
NGNGご親切に感謝します。ありがとうございます。
そうですよね、CPUメーカーのサイトに行くのが当然ですよね。なのに
俺ときたら……。先ほど、紹介していただいたPDFとIntelの命令表の
PDFを見てきました。これで安心してPrefetchが使えます。
本当にありがとうございました。
0676デフォルトの名無しさん
NGNGうざすぎ市ね
2度とム板に来るな
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG検索してもでてこないので。
0683デフォルトの名無しさん
NGNGアセンブラの命令サイズは主にオペランドの数に依る、と思うのですが、
●でしょうか×でしょうか?
レジスタを触るかメモリを触るかにも依るとは思いますが。
あと、
ldrがmovより重いのはメモリを触るから、で●でしょうか?
あと、
パリティフラグってどういう目的で使用するのでしょうか?
立っているビットが奇数か偶数かを判断する必要がある場合ってどんな場合なのでしょうか?
0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG> アセンブラの命令サイズは主にオペランドの数に依る
それも理由の一つだが、命令セットの設計の方が大きいと思う。
固定長の RISC と可変長の CISC だと話が違うし、最近流行りの
VLIW だと一塊りのメモリに複数の命令をパックするわけで。
ただ、現実的な 32bit RISC プロセッサに限定すれば、それが主な
要因だろうね。実際 ARM 系のプロセッサなんかは 3 オペランドの
32bit 命令セットと、2 オペランドの 16bit 命令セットを持ってるし。
0686デフォルトの名無しさん
NGNG> ldrがmovより重いのはメモリを触るから、で●でしょうか?
そうだね。
> パリティフラグってどういう目的で使用するのでしょうか?
> 立っているビットが奇数か偶数かを判断する必要がある場合ってどんな場合なのでしょうか?
あんまり使い道なさそうな気がするけど…。
昔は、データのシリアル転送でエラーが起きていないかどうかチェックするのに、
パリティビットを付加したりしたので、そのエラーチェックに使用するとか。
実際、パリティフラグなんて付いてないCPUの方が多いんじゃないかな。
Z80やx86くらいしか思いつかない…。
0687デフォルトの名無しさん
NGNG1個の誤りを検出出来る。
0688デフォルトの名無しさん
NGNG>>685
質問が不明瞭でごめんなさい、
同一CPUで使われている命令のサイズの違いについて伺っていました。
>ただ、現実的な 32bit RISC プロセッサに限定すれば、それが主な
>要因だろうね。実際 ARM 系のプロセッサなんかは 3 オペランドの
>32bit 命令セットと、2 オペランドの 16bit 命令セットを持ってるし。
なので↑で納得いきました。
>>686
>あんまり使い道なさそうな気がするけど…。
私も使ったことがありません。
>昔は、データのシリアル転送でエラーが起きていないかどうかチェックするのに、
>パリティビットを付加したりしたので、そのエラーチェックに使用するとか。
転送前後でデータの立っているビットの数が異なっていなければ
正常転送とみなす(ゲームのセーブデータのサムチェックとちょっと似ている)、
ということかと思ってしまいましたが
それでは確実ではないような・・
>実際、パリティフラグなんて付いてないCPUの方が多いんじゃないかな。
ならあまり気にする必要もなさそうですね・・
>>687
1個の誤り、とは・・・?
0689デフォルトの名無しさん
NGNGなぜ使えないんだろうか?
1をadd、1をsubとか書いているらしい。
0690デフォルトの名無しさん
NGNGプログラム的には無くても困らんからな。
アーキテクチャの小さなマイコンだとその分のオペコードを別の命令に割り当てたいかもしれん。
そうでなくてもいまどき実行速度も変わりゃしねぇし、オペランドの分メモリ節約する意味もねえし、専用の命令付ける方が無駄かもしれん。
0691デフォルトの名無しさん
NGNGMIPS とかのこと? そりゃ inc なんて命令を付けなくても
addiu $1, $1, 1
で済むからでしょう。
単純な命令セットにすれば命令デコード処理が単純になり、パイプラインの
速度が稼げる。重複した命令を持つのは、アセンブラコードを書くプログラマ
にとっては書きやすくなるけど、ハードウェア的には単なるムダ。
ハードウェアは単純に代わりにコンパイル・アセンブル時に苦労しろ、そう
すれば安価で高速なチップが出来る、というのが RISC の基本思想です
から。
ただし実際問題として、それではあまりにアセンブラプログラマが大変なの
で、RISC の場合にはアセンブラが高機能になってます。たとえば MIPS で
32bit 即値をレジスタの設定するには
1. 即値を上位 16bit に読み込み、下位 16bit を 0 クリアする。
2. 即値を下位 16bit と or をとる。
と二命令必要なんだけど、アセンブラのソースでは
li $2, 0x003f0000
と一行です。アセンブル時にアセンブラがこいつを 2 命令に分解してオブ
ジェクトファイルに書き込みます。
0692デフォルトの名無しさん
NGNGCISC だと、良く使う命令を短いオペコードに割り当てることで、メモリ使用量を
節約するってアプローチはアリだわな。0 セットとか +1, -1 なんかは、その筆
頭候補でしょう。
さすがに最近は組み込みでも ARM クラスの CPU を使える案件が多いご時
世なんで、もはや「忘れられた技術」になりつつあるけど。
0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNGなんですよね?
0695デフォルトの名無しさん
NGNG意味不明。
CPUの効率とは何か、なぜそういう思うのか述べよ。
0696デフォルトの名無しさん
NGNGPentium 4では、なるべくinc,decをつかわずに、1をadd、1をsubとか書けって
インテルは言ってるよ。
0697デフォルトの名無しさん
NGNG厳密には add 1 と sub 1 とは違うよね。
キャリーフラグが立たない。
といっても、その違いを利用することは
あんまないと思うけど。
最近の(といってもかなり前からだが)x86 は
特化された命令は手を抜いて
汎用的な命令を高速化する傾向にあるみたいね。
キャッシュの向上とHDDとメモリの容量増加で、
命令サイズ抑えるより汎用的な命令を強化する方向に動いてるのかね。
0698デフォルトの名無しさん
NGNG最近は x86 のような一見 CISC に見えるプロセッサでも、中身は RISC に
なってる。Pentium 4 なんかは x86 命令を、RISC 風の単純な命令に分解
した上で内部で実行してるんだが、このとき
単純・使用頻度のな命令は複数の RISC 風の命令に分解し、効率的に実行
複雑・使用頻度の低い命令は分解せずに、マイクロコードを読んで実行
となってるらしい。詳細な内部命令セットは公開されてないから、推測まじり
だけどさ。
プロセッサの周波数が GHz に達する今日、そうやって RISC の設計を採り
入れてパイプラインを深くしないと速度が出ないんでしょう。
0699デフォルトの名無しさん
NGNG的を射たツッコミだな。
>>694
それぞれの CPU には、それぞれの「効率」というか「目標」がある。
たとえば組み込み市場で広く使われている ARM であれば、ある程度の速度
に加えて
低消費電力
16bit メモリバスでも十分な性能を発揮できること
なんてのが重要な目標だし、一方でゲーム機向けの CPU であれば
32bit 浮動小数点演算が高速に実行できること
が重要。
目標が違えば、当然、最適な命令セットも違ってくる。あとは
歴史的事情、あるいは後方互換性
コンパイラ技術の進化
プロセッサ設計理論の進化 (パイプライン, スーパースカラー, etc)
なんてのも大きな要因だね。一時期 RISC で流行った遅延分岐命令なんての
は、パイプライン化の賜物ですな。
0700デフォルトの名無しさん
NGNG>>690
>アーキテクチャの小さなマイコンだとその分のオペコードを別の命令に割り当てたいかもしれん。
確かに!
>そうでなくてもいまどき実行速度も変わりゃしねぇし、オペランドの分メモリ節約する意味もねえし、専用の命令付ける方が無駄かもしれん。
そういえばそうなんですよね。重複命令っていう時点で無駄ですよね。
今はmov a,#0もeor a,aも変わらないとかいう話を聞いたことがあります。
>>691
>単純な命令セットにすれば命令デコード処理が単純になり、パイプラインの
>速度が稼げる。重複した命令を持つのは、アセンブラコードを書くプログラマ
>にとっては書きやすくなるけど、ハードウェア的には単なるムダ。
>ハードウェアは単純に代わりにコンパイル・アセンブル時に苦労しろ、そう
>すれば安価で高速なチップが出来る、というのが RISC の基本思想です
>から。
incやdecのほうがオペランドがすくないし、直値を扱わなくて済むから
addやsubより良いはずだと思いこんでいました。
でもハードウェアの視点から見れば確かに、incもdecも無駄ですね・・
>ただし実際問題として、それではあまりにアセンブラプログラマが大変なの
>で、RISC の場合にはアセンブラが高機能になってます。たとえば MIPS で
確かに、レジスタに数値をコピーするだけの処理に2行書くのは辛いですね
16bit同士の足し算の場合アセンブラソースは一行だけれども
レジスタ上では(?)
下8bit同士を足して桁上げが生じたらキャリーフラグがたって
それが上8it同士の足し算のさいに算入されるとかいう意外と複雑?な処理が
なされているという話しを思い出しました・・
0701デフォルトの名無しさん
NGNG>>692
>CISC だと、良く使う命令を短いオペコードに割り当てることで、メモリ使用量を
>節約するってアプローチはアリだわな。0 セットとか +1, -1 なんかは、その筆
>頭候補でしょう。
incやdecもそういうアプローチのひとつなんでしょうね。
>さすがに最近は組み込みでも ARM クラスの CPU を使える案件が多いご時
>世なんで、もはや「忘れられた技術」になりつつあるけど。
古いんですか(失笑)
>>693
>あと、フラグまわりがどうなってるかも関係すると思う。
たとえばどのフラグなんでしょうか?CFとかでしょうか?
>>696
>Pentium 4では、なるべくinc,decをつかわずに、1をadd、1をsubとか書けって
>インテルは言ってるよ。
了解しました・・inc decは不要なんですね・・昨日まではあったほうが絶対便利だと思っていたのに
>>697
>x86 の(しか知らんけど)inc と dec は
>厳密には add 1 と sub 1 とは違うよね。
>キャリーフラグが立たない。
立たなくても問題無いんですか・・
>最近の(といってもかなり前からだが)x86 は
>特化された命令は手を抜いて
>汎用的な命令を高速化する傾向にあるみたいね。
>キャッシュの向上とHDDとメモリの容量増加で、
>命令サイズ抑えるより汎用的な命令を強化する方向に動いてるのかね。
らしいですね・・。
私は末端プログラマですがこういう考え方を質問されたときなど参考にさせていただきます。
皆さん非常に納得させられるご意見でした。有難う御座いました
0702M68000シリーヅ
NGNG1〜8のどれかを足したり引いたり出来る命令があるので
1だけしか足したり引いたり出来ない命令は意味がないのでありません。
0703デフォルトの名無しさん
NGNG0704694
NGNG曖昧でごめんなさい。
なんでCPuごとにわざわざニーモニック(というか命令セット)が違うのか、と
疑問に思っていたのですが、計算速度の向上やメモリの縮小のため、
不要な命令を省いたり、必要な命令を加えたり、しているのだろう、と
いうことに気づいたのです。あたりまえなのでしょうけど。
699さん
ありがとうございます!
そうです、目的を実現するために最適な命令セットを作っているようですね。
>歴史的事情、あるいは後方互換性
>コンパイラ技術の進化
>プロセッサ設計理論の進化 (パイプライン, スーパースカラー, etc)
>なんてのも大きな要因だね。一時期 RISC で流行った遅延分岐命令なんての
>は、パイプライン化の賜物ですな。
このあたりは勉強不足なので詳しくはわかりませんが
コンパイラ技術や設計理論が向上すれば命令セットにも変更がある、というのはわかります。
0705695
NGNGまぁ意味は判らんでもないけどな。
ニーモニックって言われたら
同じ転送命令なのにCPUによってたとえばmovとかldという違いがなぜ生じるか
って意味に読めるからな。
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNGかなりむかーし、デバッガでニモニック弄ってたのですが、
今、WIN2000で動くものをアセンブリ言語で作りたいと思った場合
アセンブラの他に何が必要なのでしょうか?
アセンブラはMASM32と言うのをゲトしたんですがPSDKとDDKというのも
あった方がいいのでしょうか?
MicrosoftからはWIN2000用?は落とせないみたいなのですが。
0708デフォルトの名無しさん
NGNGヘルプ集
0709デフォルトの名無しさん
NGNGお手軽に始めたいなら
Delphi 6 Personal (のインラインアセンブラ) + Turbo Debugger
0710デフォルトの名無しさん
NGNGフリーで揃えたいのですがDelphi 6 Personal ってフリーでしょうか?
DirectX使うのに、directX-SDK要るというのは分るのですが、プラット
フォームSDKとDDKって何をする時必要なのか分らないのです。
0711710
NGNG0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG0715710
NGNGいろいろ憶える事あるなぁ
0716デフォルトの名無しさん
NGNGアセンブラだけだとしんどいと思う
0717デフォルトの名無しさん
NGNGなのですが、設計者の趣味(or信じた神様)の違いによるというのもあり。
0718デフォルトの名無しさん
NGNGイバラの道に見えるかもしれないけど、どのみちアセンブラは苦労するから大
した差じゃないさー。でも、gdbは他のIDEものより格段につかいにくいかも...
0719デフォルトの名無しさん
NGNG1、D6パーソナルをインストール
2、新規作成->その他->コンソールアプリ
3、begin を asm に書き換える
4、asm 〜 end 間にアセンブラコードを書く
5、F9 で実行する
0720デフォルトの名無しさん
NGNG関数を作るといい
x*3を返す関数の例
{$APPTYPE CONSOLE}
function test(x:Integer):Integer;
asm
mov EAX,x
mov EDX,3 ;
mul EDX ;
end;
begin
writeln(test(3)); //<----関数 test の呼び出し
readln; // コンソールが閉じないよう改行を促す
end.
0721707
NGNGアセンブリ言語が難しいと言う前にアセンブラがごちゃごちゃで挫けそうです。Cもしかり。
TASMとMASMの日本語マニュアルないときついっす。
0722デフォルトの名無しさん
NGNGこれのWin32版ほしいなぁ。
0723デフォルトの名無しさん
NGNGhttp://guriponn.tripod.co.jp/trans/nasmdoc0.htm
これは途中までだけど人の手による翻訳
http://www.bekkoame.ne.jp/~bero/docj/nasm/nasmdoc0.htm
こっちは機械翻訳
>>707には関係ないかもしれないけど。
もし初学者なら書籍が必要だと思う。
0724デフォルトの名無しさん
NGNG書籍は当時買った物が今でも推奨されているのはなんか感慨深いなぁ。
ここで挙がってないみたいだけど、
「8086 ASSEMBLY LANGUAGE」著.西村義孝 SOFTBANK
は良書だと思います。
0725707
NGNGたったこれだけの事をやりたいだけなのに、先へ進めません。
0726デフォルトの名無しさん
NGNGそれはアセンブラでやるようなことではないでしょう
0727707
NGNGこれだけならおっしゃる通りです。僕もそう思います。
他のどの言語でも出来るでしょう。でも僕はアセンブラを覚えたいのです。
Packed Fileですがエンコードされてます。そしてそのロジックは公開されて
いるものでは無いのです。(多分)
プログラムをトレースしてデコード部分見つけたので、これを利用してファイル
出力するプログラムを作りたいのです。
ぶっちゃけエロゲーの吸出ししたいと。(w
0728デフォルトの名無しさん
NGNGそういう事なら、Delphiのインラインアセンブラを使えばいいでしょう。
デコード部分をアセンブラの関数にして、
入出力とフロントエンドをDelphiで書けばいいと思います。
0729デフォルトの名無しさん
NGNGsusie plug-in にすれば、とりあえずデコード部分を関数化するだけですむな。
デバッグが少々難しくなるが。
0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNGcl(VC6/VC7)はアセンブラ吐けないし、
gasはニーモックと変数名しか吐かないのに
ボーランドはいい仕事してますなぁ
0732デフォルトの名無しさん
NGNGは?
0733デフォルトの名無しさん
NGNGどうやったんだろ?HPの社員だってよ。
http://kanto.machibbs.com/bbs/read.pl?BBS=tama&KEY=1035908898&LAST=100
55 名前: 日本HP社員 投稿日: 2002/11/17(日) 19:45 ID:JA/HP.9.
毎日、通勤で使うので早く作って欲しいっす。
ところで、私のID、自社名を出してみました。
仕事柄、ちょっとした小技です。
0734デフォルトの名無しさん
NGNGほっとけ。
きっと割れ厨だ。
0735デフォルトの名無しさん
NGNGなんで割れ?
0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNGんなのマニュアル(オンラインだけど)見ればすぐわかる
割れ厨はMSDNのCDなんて落とさないだろ
0738Warez
NGNG0739デフォルトの名無しさん
NGNG同意。F1で出ないヘルプなんて。
とか思ったがJava使い出してブラウザ開いておくのも大使立てまではないと思った、。
0740デフォルトの名無しさん
NGNG追記
×どうやったらいいのかな?
○どのツールがお薦めですか?
0741デフォルトの名無しさん
NGNG0742デフォルトの名無しさん
NGNG486の次だから586にしようとしたんだけど、数値だけだと商標とれなかったり
したので、penta (5の意味。ペンタグラムとかペンタゴンとかのアレ)に、
接尾辞 -ium をつけた合成語。
0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNG吐ける
0745デフォルトの名無しさん
NGNGいちいち、ペンティアムプロセッサといった表記をしている。
あと、Intelかどうかはわすれたが、すでにヘクシアムとか、
セプティアムはとられてるというのを聞いたことがある。
0747デフォルトの名無しさん
NGNGPentiumPro からがi686
P4も基本アーキテクチャ同じじゃないのか?
0748デフォルトの名無しさん
NGNGあれは別だろう。
CPUIDも違うし。
0749デフォルトの名無しさん
NGNGゲームボーイエミュレータ(ex.rew)でグラフィックとか文字とかを表示させて
その実行動作を色々試してみたいんだけど、
その辺のやり方を書いたサイトとかってどこかある?
色々探したんだけど、イマイチいいところがなくて…
0750デフォルトの名無しさん
NGNGこのスレを見るうちに、昔PC-8801FEのZ80アセンブラでプログラムを組んだことを思い出して
最近懐かしくなって、またやりたくなってきました。
0751bloom
NGNGhttp://homepage.mac.com/bloombloom/
0752デフォルトの名無しさん
NGNG普通のシフト&算術シフトで十分・・
あとAFフラグって桁借り、桁上がりが生じた場合にたつフラグなのでしょうか?
7+8=15とか
27+99=122とか
0753デフォルトの名無しさん
NGNG多バイトの数値全体をシフトしたい時など、最初の1バイトはシフト、後は
キャリーフラグを通したローテートを使う。
AFフラグは、ニブル(4ビット)毎のキャリーフラグのようなものかな?BCD
演算に使うと書いてあるけど。
0754デフォルトの名無しさん
NGNG「すずめ愛好会」で検索すれば資料は見つかる
アセンブラでゲームプログラミングの解説サイトがあるのなら、むしろ俺が知りたい
0755デフォルトの名無しさん
NGNGどうでもいいが、Pentium4をP4と書かれるとおいおい、と思うのは俺だけ?
昔、初代PentiumをP5とか言ってたな、懐かしい
0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNGかまぼこキーボードじゃないのか?
0759デフォルトの名無しさん
NGNG実際、たとえばMIPSにはローテイト命令がない(もちろんシフト命令はある)。
C言語にもシフト演算子があってもローテイト演算子はないわけで、なきゃ
ないでそれほど困らないということなのかな。
0760デフォルトの名無しさん
NGNG昔は解説サイトがいくつかあったんですけど、今はほとんどないです。
この辺でも参考にどうぞ
日本語
http://asattae.virtualave.net/gb/index.html
http://www.geocities.co.jp/Playtown/2004/gbdk_j.htm
http://code-gb.hp.infoseek.co.jp/
英語
http://www.devrs.com/gb/asmcode.php
今はそれなりに詳しく書いたサイトのデータが見つかったら、もしよかったら編集してアップしますね。
0761760
NGNG0762デフォルトの名無しさん
NGNG簡略セグメント定義ではだめな場合ってどんな場合ですか?
0763デフォルトの名無しさん
NGNGAFは加減算後のBCDのアジャスト命令で、9より大きい桁があった時に立つ。
つまり、04hと06hを2進加算すると0Ahになるけど、これをアジャストすると、
アンパックBCDの場合 0100h になって、桁上がりがあるからAFが立つ、
ていうような感じ。
0764デフォルトの名無しさん
NGNGCODESEGMENT
ASSUMEDS:CODE,CS:CODE,ES:CODE,SS:CODE
.186
ORG100h
START:
movah,2
movdl,'A'
int21h
movax,4c00h
int21h
CODEENDS
ENDSTART
こんなソースを打ってみて、ml /c test.asm というのは上手くいくんですが、link test.obj でこけます。
ソースはホームページのサンプルを参考に打ったので間違いないと思うんですが、どうしたらうまくいくでしょうか?
0765デフォルトの名無しさん
NGNG0766manko_chinko ◆GLc2rpKRNM
NGNG0767デフォルトの名無しさん
NGNG>.186って・・・
0768754
NGNGサンプルプログラムは、http://www.d1.dion.ne.jp/~ecb/assembler/assembler00.html このページを参考に打ってみました。
これからガリガリと勉強していきたいとおもってます。
よろしくです。
0769デフォルトの名無しさん
NGNGWarning no stack segment
というエラー(じゃ無いんだが)が出るとか?
メッセージはよく覚えてないので、微妙に違うかもしれん。
0770デフォルトの名無しさん
NGNG0771754
NGNG他に、いい開発環境があったら、教えて頂けないでしょうか?
0772デフォルトの名無しさん
NGNG0773manko_chinko ◆GLc2rpKRNM
NGNG0774デフォルトの名無しさん
NGNGアセンブラを勉強するだけなら D6パーソナルでいいんじゃない?
0775デフォルトの名無しさん
NGNGいいからお前はだまっとれ。
0777754
NGNGC++とか入手して、__asm { } 内に記述した方が早いでしょうか;;
インライン・アセンブラ とかいって出来るような事が書いてありました
0778もまずにパピコ
NGNGEXE2BINなりがいるんじゃないの。
0779デフォルトの名無しさん
NGNG0780>>778へ。/?くらいやろうな
NGNGMicrosoft (R) Macro Assembler Version 6.15.8803
Copyright (C) Microsoft Corp 1981-2000. All rights reserved.
ML [ /options ] filelist [ /link linkoptions ]
/AT Enable tiny model (.COM file) /omf generate OMF format object
/Bl<linker> Use alternate linker /Sa Maximize source listing
/c Assemble without linking /Sc Generate timings in listing
/Cp Preserve case of user identifiers /Sf Generate first pass listing
/Cu Map all identifiers to upper case /Sl<width> Set line width
/Cx Preserve case in publics, externs /Sn Suppress symbol-table listin
/coff generate COFF format object file /Sp<length> Set page length
/D<name>[=text] Define text macro /Ss<string> Set subtitle
/EP Output preprocessed listing to stdout /St<string> Set title
/F <hex> Set stack size (bytes) /Sx List false conditionals
以下略...
0781デフォルトの名無しさん
NGNGlink通ってからexe2binじゃなかったっけ?
exeのままでも動いたような記憶があるが。
うーん、最近はnasmで間に合わせてるんで全然覚えてない。
0782デフォルトの名無しさん
NGNG昔のリンカはそうだった。
MASM 6以降からそんな必要は無い。
ml /AT aaa.asm
で一発。
リンクまでやってくれる。
>780でも先頭に出てるだろう。
0783デフォルトの名無しさん
NGNGとりあえずイソテルニーモニックなインラインアセンブラがすぐ使える
フリーのコンパイラは
Borland Delphi 6 Personal
http://www.borland.co.jp/delphi/
Digital Mars C and C++ Compilers
http://www.digitalmars.com/
使い方はマニュアル見るなり、ぐぐるなりすれ。
0784デフォルトの名無しさん
NGNGニーモニックが違うけど gcc も加えておいてくれ。
0785デフォルトの名無しさん
NGNG僕もMASM32でやってみたけど同じくリンカでこけました。
オプションの意味もエラーの意味もわからないので打つ手無し。
TASM&LINKなら通りました。
僕も最近始めたんだけど(707っす)処理系擬似命令の違いで
かなり躓いてます。
プログラマの隠れ里はアセンブラにMASM32使ってるんでTASM
持ってないならそっちがいいかも。
0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNGオレも同じく。今日はヒマだから、これに取り組んでみるよ。
0788デフォルトの名無しさん
NGNG配置やセッションの知識はC言語使えば判ってくるだろうし
0789785
NGNGインラインアセンブラは擬似命令通ります?
やりたい事をどうアセンブリ言語で組み立てるのか、アルゴリズムが解らないと
悩むのならわかるのですが、それ以前で躓いてます。
数学習いに行ったら英語で教えられたって感じ?
あちこちサイトまわったけどみんなそんな感じでした。
COMファイル作るのに”ASSUME、ORGはおまじない”ってのは愛嬌だと思えても、
説明無しに擬似命令使(いまく)って、
mov ax,4c00h
int 21h
じゃ、何を教えたいんだろう?と思ってしまう。
0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNG目的は?
1、COMの16bitバイナリを作りたい
2、アセンブラ言語を使い、勉強したい
1なら、確かに擬似命令を勉強しないとダメですね。 リンカの概念(セッション等)も必要です
2なら、D6パーソナルのインラインアセンブラで良いと思います。
擬似命令はDB,DW,および DD 疑似命令しかありませんから悩む必要はありません。
またDelphiはリンカまでを1パスで行いますから、セッションとかのややこしい概念も必要ありません
0793デフォルトの名無しさん
NGNGhttp://www.nifty.ne.jp/forum/fdelphi/faq/00286.htm
http://www.nifty.ne.jp/forum/fdelphi/samples/00789.html
0794デフォルトの名無しさん
NGNGhttp://www.cpuid.com/
0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNGDOSでやるか、ドライバを書くか、NTサービスを登録して I/Oをスルーさせるか
0799デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNGCPUの命令を直に使える。
ってそのままだが(w
0801デフォルトの名無しさん
NGNGftp://ftp.microsoft.com/softlib/mslfiles/lnk563.exe
↑これを使えばリンク失敗しないと思われ。
0802デフォルトの名無しさん
NGNG0803789
NGNG>>792,>>796
初心者対象にした「アセンブラでプログラミング」の解説サイトのサンプル
が通らないのです。処理系擬似命令の違いで。
>>764さんが参考にしたサイトでも、NOWSMART ASSEMBLER,MASM32,LASMを紹介
しておきながらサンプルはTASMでやってたりするんです。
>>764のリストですがTASM環境、MASM環境なら通りますが、MASM32では通らな
いのです。インラインアセンブラは問題外ですよね。
これは一例で、ほとんどがアセンブリ言語でプログラミングと称していても
サンプルは処理系依存の擬似命令を使いまくっているわけで、この為
Turbo/Macroアセンブリ言語でプログラミングになっていて、それでいて
その部分を説明していないんだから、何を教えたいんだろう?と思うのです。
0804デフォルトの名無しさん
NGNG窓環境とかで使うとすれば画像処理にMMX/SSEあたりを使うぐらいしか思いつかん
スマン、当方エロゲヲタだ(藁
0805デフォルトの名無しさん
NGNGある程度しかたないさ。「アセンブリ言語でプログラミングと称し」ている時点で、言語だもん。
「ニーモニックでプログラミング」なら少しはどうにかなるかもしらんし、ならんかも。
0806デフォルトの名無しさん
NGNG0807764
NGNGどうもありがとうございます!!
実行ファイル出来上がりました
A とでるだけの処理ですが、
print "A" や printf("A"); System.out.println("A"); なんかよりよっぽど感動がありました。
これから、一生懸命頑張ります!!
0808デフォルトの名無しさん
NGNG>ある程度しかたないさ。「アセンブリ言語でプログラミングと称し」ている時点で、言語だもん。
その言語の説明もしてないから
>何を教えたいんだろう?と思うのです。
と、言っているのでは。
0809デフォルトの名無しさん
NGNGMASMのデバッガはCODE VIEWですが、MASM32はどうなってるんでしょうか?
オプションで吐くデバッグ情報って処理系依存ですよね?
0810デフォルトの名無しさん
NGNGもしいれば、とっても簡単でいいのでサンプルを示してもらえませんか?
自分でも簡単なプログラムを組んでアセンブルしたんだけど、
エラー(ORGやらRELやら)が出てきてもその内容が良く分かりません。
どうかよろしくお願いします。
0811デフォルトの名無しさん
NGNGCのソースコンパイルするのとなんも変わらないですよ
GBDKのexampleフォルダの中にspace.sってサンプルとmake.batがあるから、それを見てみるといいです
0812764
NGNGデバッカがあって初めて、動きをが把握できると思っているのですが・・
ご指導お願いいたしますm(__)m
0813デフォルトの名無しさん
NGNGソースレベルデバッガか、アセンブラのデバッグには
あんまり使い易くないと思うのは漏れだけ?
Win32ならTD32がフリー。
http://www.borland.co.jp/cppbuilder/freecompiler/
のTurbo Debugger
0814デフォルトの名無しさん
NGNGデバッガいいよね。
DOS CONSOLE ならwinは標準でDEBUG.EXE ってのを持ってるよ。
WIN用ならBorlandのTurbo Debuggerってのあるよ。(無料)
http://www.borland.co.jp/cppbuilder/freecompiler/turbodebugger.html
他にも色々あるけどこの辺からどぞ。
話変わって、MAsmEd って、なんか良さげなIDE見つけたんだけど、使ってる人
居ますか? うちじゃ(WIN2000)PROJECTが作れない、CONSOLEが上手く動か
ないんですよぉ。
0815814
NGNG809も僕なわけですがMASM32ならCode View系のデバッガが欲しいとこ。
TASMならTurbo Debuggerでいいんだけど。
0816814
NGNG書き忘れましたMAsmEdのURLです。誰か検証お願いしますぅ。
0817デフォルトの名無しさん
NGNG学習用ならこれで十分かも?
0818814
NGNGRATSでIPLから追っかけてた日々が懐かしかったり。
0819814
NGNGこれ状況感知型ヘルプって言うのかな?
わからない擬似命令とか選んでF1でヘルプ見られてとってもグッ!
お騒がせしました。
0820デフォルトの名無しさん
NGNGx86のout命令使いたいんですが、
ポート表とか解説してあるサイト知りませんか?
0821810
NGNGどうもありがとうございます。
アセンブラソースを発見し、エミュレータで実行もできました。
ソース内容を見て研究してみます。
また分からないことがあったら質問させてください。
0822デフォルトの名無しさん
NGNGひょっとしたら、ここにあるかも
http://www.oadg.or.jp/
0823デフォルトの名無しさん
NGNGRalf Brown's Interrupt の "Ports"の所に一覧がある。
http://www.oopweb.com/Assembly/Documents/InterList/VolumeFrames.html
WinHelp版
http://www.vector.co.jp/soft/data/prog/se015027.html
0825デフォルトの名無しさん
NGNGhttp://gamble.2ch.net/test/read.cgi/slot/1037629418/l50
0826デフォルトの名無しさん
NGNG「ここから16bitステートのコードを書きますよ」という意味だと思いますが
.textはどういう意味なんでしょうか?
0827デフォルトの名無しさん
NGNGhttp://www.mit.edu/afs/sipb/contrib/doc/specs/ic/cpu/arm/thumbquickref.pdf
の命令表に
Rd Rs Hd Hs というような英文字がありまして前二つは
ディスティネーションレジスタ、ソースレジスタ、だと思ったのですが
HdとHsのHの意味がわかりません・・
しかも表をみると
RがlowレジスタでHがhighレジスタ、という風にもよめます。
なんでRがlowなんでしょうか・・
教えてください・・
0828デフォルトの名無しさん
NGNGhttp://www.ueda.info.waseda.ac.jp/~watanabe/Unix/mmx_3dnow/
0829デフォルトの名無しさん
NGNGARM7TDMIなどでは、普通
ARMステートではR0-15
ThumbステートではR0-7
を使う
ThumbステートではR8-15をHighレジスタH0-7として一部の命令で使用可能。
これと区別するためR0-7をLowレジスタと呼ぶこともある。
0830デフォルトの名無しさん
NGNG対象のアセンブラはなんだ?
普通「ここからtextです」ね。なお、textというのは命令のことなのです。
0831」 ■┏┓■Ly酉~~
NGNGエラーメッセージすら出ないし、アセンブラも落ちることってあるんすね。(DOSなのに……
6.0買えってことなんでしょーか。(´・ω・`)ションボリック
0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNGMASM の最新版が欲しいのなら >>639-640
0834デフォルトの名無しさん
NGNGでもDOSでは動かない罠。
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNGdpmiだけでは無理だった気がします。
wdosxとかいうのと併用すれば動くかもしれませんが。
0837デフォルトの名無しさん
NGNG安いアセンブラ買ってきた方が早い気もするが。
0838835
NGNG探せば6.0とかもあるかも。
0839デフォルトの名無しさん
NGNG0840デフォルトの名無しさん
NGNGオペランドサイズが違う。
E**は32bit演算、Eが付かないのは16bit演算。
ダッタトオモウ
0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNG.3 2 1 0 :バイト番号
□□□□ eax
■■□□ ax
■■■□ al
■■□■ ah
白いところを使うと思いねぇ。
0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG誰か教えて!
0847デフォルトの名無しさん
NGNGありがとうございます。
英語ですか・・・ ちょっと難しい・・・
0848デフォルトの名無しさん
NGNGそこからは落とせなくなったはずだが。
Win98DDKならこのスレに直リンがある。
0849デフォルトの名無しさん
NGNGシフトするのめんどいし
0850デフォルトの名無しさん
NGNG禿同。
今はパーシャルレジスタストールなんてのがあるので、あまり使いたくないが。
386の頃には欲しかったな。
せめて386でバイトスワップ命令付けといて欲しかったよ。
0851デフォルトの名無しさん
NGNGP4なら原則としてパーシャルレジスタストールはないよ。
0852デフォルトの名無しさん
NGNG何故なんでしょうか?そのほうがコードが小さくなるからですか?
0853デフォルトの名無しさん
NGNG指定するためのビット数が確保できなかったからじゃないの?
結局「コードが小さくなるから」ということになるが…。
0854名無しさん@Emacs
NGNGPDP-10でガリガリやってた時代を思いだすよ。
ただそれだけです。
0855デフォルトの名無しさん
NGNGmasm5.0ってどこにあるんすか?
引越しのときexe2bin無くしちゃって落とせるんならホスィ
ヒントだけでもキボン
0856855
NGNGwin98ddkに入ってるのね……
しかもファイル名も変わってるし
0857855
NGNG再度キボン
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNGpush{lr}
pop{pc}
という関数を呼ぶばあい
通常は
1.bl kansuuと書くんでしょうが
2.b kansuuでも大丈夫そうな気がしてしまいます・・
だって
kansuuのあたまでlrにプログラムカウンタを保存して,
最後にそれをpcに戻しているわけだから・・
でも実験したら、駄目でした。
2.の場合は、b kansuuの処理を書いた関数の更に上の関数に戻ってしまう・・
なんでなんでしょうか?
0860デフォルトの名無しさん
NGNGpush {lr} は「lrにプログラムカウンタを保存して」じゃないぞ。
lrをスタックに積んでる。その後、pop {pc} でスタックの値をpcに戻すので、
結果的に、kansuuが呼ばれたときのlrの指すアドレスに飛ぶという動作になる。
だから、blだとちゃんとリターンするのにbだと更に一つ上の関数に戻る、という
動作はまったく正しい。
0861デフォルトの名無しさん
NGNG「Cユーザのための実践アセンブラ」(近代科学社)
「8086マクロアセンブラ入門」(技術評論社)
どちらの本がいいでしょうか?
それともアセンブラ経験の無い自分はCASLなどから始めた方がいいんでしょうか?
0862デフォルトの名無しさん
NGNGx86?
俺は「はじめて読む8086」かな
まぁ今じゃWeb上からでも解説してるところあるし
0863デフォルトの名無しさん
NGNG秋葉原にPC関連専門の古書店があったらいいな、と思う今日この頃。
古い雑誌とか読みたいよ
0864デフォルトの名無しさん
NGNG>ARMの話だよね?
そうです、ごめんなさい。
>push {lr} は「lrにプログラムカウンタを保存して」じゃないぞ。
>lrをスタックに積んでる。その後、pop {pc} でスタックの値をpcに戻すので、
ごめんなさい、滅茶苦茶間違えました。
それでも
b kansuu・・・・・・・・・・1
省略・・
kansuu:
push{lr} ここでlrをスタックにつみ・・・・2
pop{pc} ここでpcに引き取る・・・・・・・3
と考えると
やっぱり
3のあと、(1の上の関数じゃなくて)1に帰るのが自然じゃないかなあと思うんですよね・・
>だから、blだとちゃんとリターンするのにbだと更に一つ上の関数に戻る、という
>動作はまったく正しい。
ただしいのだとは思うんですけど・。実際こう動いているわけですし・・
0865デフォルトの名無しさん
NGNG0866劇的初心者
NGNGたとえば会計プログラムで
"合計金額はですか?"→"500" 500の後に<Enter>キーを
押すと次のコマンドに移るといったようなやり方どうやるんでしょうか?
0867デフォルトの名無しさん
NGNG...アセンブラで?
0868866
NGNGプログラム実行したときに下記のような風になるよう、
入力を求められたあと5→3→9と押した後に<Enter>押すと
次の入力に移るようしたいんです。
-------------------------------
Enter Price and Deposit
Input1 (Price) 539 <Enter>
Input2 (Deposit) 1000 <Enter>
The Price of you selected is $ 5.39
The amount you deposit is $10.00
Thenk you. Your Change is $ 4.61
---------------------------------------
0869デフォルトの名無しさん
NGNGDOS 8086なら >>49 でint 21hあたりを調べてみては?
0870デフォルトの名無しさん
NGNG漏れにはそういうレベルで悩んでるようには見えないなぁ。
>868は自分で書けるところまで書いてあぷ汁。
0871デフォルトの名無しさん
NGNGオブジェクトサイズをすごく小さくしたいの ?
単なる興味か ?
まさか、C はわからないとかか ?
0872デフォルトの名無しさん
NGNGlrの値はbl命令で決まるはずだが?
ありがとう、この言葉が聴きたかったのかも!
b で飛んでも、lrがかわらないから、アノ動作なのですね!
すっきりした!
0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNGサンプルプログラムがdos.hとか使うんでサンプル試せないんですよね、
VC1とかに似たような環境ってフリーで構築できませんかね?
0875デフォルトの名無しさん
NGNGOpenWatcom
http://www.openwatcom.org/
ftp://ftp.openwatcom.org/watcom/
0876デフォルトの名無しさん
NGNGMOV AL,08H
MOV AH,35H
INT 21H
っていったいなにがおこるのだ!?
0877デフォルトの名無しさん
NGNG呼び出し AL 割り込みベクトル番号
戻り値 ES:BX 割り込みベクトル
0878デフォルトの名無しさん
NGNGありがとさん
0879デフォルトの名無しさん
NGNGどうやら、タイマーを作っているようです。
でも、システムタイマーを無理やり使用している
ようにしか読めんソースなんだがなぁ〜
ハァ鬱だ! しかも.comファイルだし、.exeにして
デバッガー使おうかな?.asmで15000行超だって。
ぐちってしまった、スマソ
また助けてください。
0880デフォルトの名無しさん
NGNGMS-DOSの時代は、それが普通です。
漏れはシステムコール使うのめんどくさいんで、
割り込み禁止にして直接読み書きしていたが。
0881デフォルトの名無しさん
NGNG私?私はマ板で業務系とののしられています。
0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNG0886デフォルトの名無しさん
NGNG今簡単な386向けのアセンブラを作ってるんですが、
SHRとかのシフト命令の中身について疑問があります。
shr eax 7 ;このコードをinstコードに変換すると
c1 e8 07 ;になると思うんですが、
2バイト目のビットの使い方で判らないことがあります。
e8を2進数に直すと11_101_000ですが、上位2ビットの
使われ方がわかりません。
e8=11_101_000
下位から、
000=レジスタ
101=SHRを識別するフラグ
11=?←これの使われ方がわからない。
このビットはなんなんでしょうか?MASMとかの実際の変換を見ると、
シフト命令には必ず上位2ビットにそれぞれ1が立ってるみたい
なんですが、どういう仕様になってるんでしょうか?
0887デフォルトの名無しさん
NGNG例)
C1E807 shr eax,7
C12807 shr dword [eax],7
詳しくはインテルの日本語マニュアルなどを参照
http://www.intel.co.jp/jp/developer/download/index.htm
0888デフォルトの名無しさん
NGNG0889886
NGNGあ、盲点でした。
ありがとうございます。
0890デフォルトの名無しさん
NGNGOR240
DAA
ADDA,160
ADCA,64
としてASCIIコードでの“0..9,A..F”に変換でき
るってのを暗記してたが既出ですかね…?
#x86ニモニックにもちょっと直せば使える
「そうかDAAってこう使うのか!」とリア厨の時
感動したのが懐かしい…死半世紀前(泣)
0891890
NGNGOR 240
DAA
ADD A,160
ADC A,64
0892デフォルトの名無しさん
NGNG↑
>>891
0893」 ■┏┓■Ly-┛~~~
NGNGnasm -oobjexe.obj -fobj objexe.asm
これじゃいかんのかね。
0.97ではうまくいくんだけど、
これからマニュアル読むyo! optionが変わったのかもしれないし
0894デフォルトの名無しさん
NGNGとりあえず、どの「98」なのかわからん(藁
0895デフォルトの名無しさん
NGNGnasm 0.98.35にはjmp/call far labelがエラーになるというバグ有り
CVS版をコンパイルしよう
0896」 ■┏┓■L_酉~
NGNG>>895 どうもです。今、汎用でフリーのアセンブラを9801/21のDOSで
試してるんだけど結構動きますね。
AT機WIN上の98エミュレータでも動いたり(遅いけど)、微妙に驚愕っすよ。
0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNG4004かな?8008?
0899デフォルトの名無しさん
NGNG少なくとも 8008 より 4004 の方が早いと思うが。
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNG厨房プログラマです。
私はプログラム書くとき、コメントとか改行をこまめに入れる癖が
あるのですが、私のプログラムを読んだ同僚厨房から
「コメントや改行たくさん入れるのはパフォーマンスが
悪くなるんだぞ」
と馬鹿にされました。この厨房の間違いをアセンブラレベルで
証明しようと「パターソン&ヘネシー」とかひっくり返して
探したんですがいい例がみつかりません。
自分が厨房なのは百も承知なのですが、もっと厨房なやつから
ばかにされたことが悔しくてなりません。
どなたか、私のかわりのにこいつの間違いを正してやってください。
それともやっぱり私の方がもっと厨房なのかな?
0903デフォルトの名無しさん
NGNG読んでるの?んなわけないよな
読んでてそんな質問するなら、1万どぶに捨てたようなもんだ
0904デフォルトの名無しさん
NGNGそれなんの歌だっけ?
0905デフォルトの名無しさん
NGNGときめものことが言いたいのか?
0906デフォルトの名無しさん
NGNGHuC6280
0907デフォルトの名無しさん
NGNG昔のbasicの時代の遺物でなけりゃ、奇妙な勘違いだね。
同じソースに無駄にコメントや改行入れてコンパイルして、完全に同じobjが作られる事を見せてみたら?
0908デフォルトの名無しさん
NGNGちがうだろ。今でもインタプリタな言語(今風だとスクリプト言語)だったら遅くなる。
コンパイラが実行形式(Javaのバイトコード含む)吐く言語なら遅くならん。
だが、インタプリタであっても初回の解析時に構文解析木やバイトコードに変換する
処理系が多いから、ループや関数の二回目以降の実行速度は変わらなくなる。
0909907
NGNG0910908
NGNG>>902は「アセンブラレベルで証明したい」と書いてるだけで、
そのプログラムがアセンブリ言語で書かれてるとは書いてないが?
アセンブリ言語のソース読める奴が、アセンブラ/コンパイラ型の言語で
コメントや改行増やすことで遅くなるなんてアフォな勘違いするとは思えない。
0911デフォルトの名無しさん
NGNG確かにね…。
その発言者が「どの段階で」遅くなるから云々
なのかがわからないとなんともかんとも。
一応自分の知ってる範囲でモノを述べると、
M80やMASMはコメント&改行が増えると明らかに
アセンブル速度は低下するが、その幅は
マクロを多用した場合の比ではなく誤差の範囲(数%)。
BASIC(N88やMSX)では最初の1回目の実行に
関しては僅かに遅く感じるが、これも誤差の範囲(数%)。
PerlとJavaの場合は数万行ものソースでも食わさないと
コメントの有無による違いがほとんど体感できない。
Rubyについては常用してないので何もいえない。
C/C++の場合はプリプロセスに付いてのみ負荷が掛かってるものと
思われるが、今時のマシンでは気にする暇も無く処理終了w
#最適化フェーズのほうがよほど負荷掛かってると思うぞ。
0912デフォルトの名無しさん
NGNG;今度こそ立てろよ。
0913男
NGNGアセンブラってXeon、P4サポートしているのあるんですか?
0914デフォルトの名無しさん
NGNG0916デフォルトの名無しさん
NGNG聞いた事ないが…。
いざとなればdbでコードを埋め込む技がある。
0917デフォルトの名無しさん
NGNGMASM 6.15 なら対応してるんじゃねーの?
0918デフォルトの名無しさん
NGNGMASMはいまや無料配布(DL可)だよ…。
Windows??DDKとかって奴に入ってる。(英語版)
で、最新のCPUにはパッチを当てて対応する。
0919デフォルトの名無しさん
NGNGツーか、ネタだろ。
そんなことも説明できない厨房が「アセンブラ」スレなんか見るわけないと思うぞ。
0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNG6.15 の入手法は書かれていなかったな。
0922902
NGNG説明たりませんでしたね。
>>911
さんのカキコがイメージしていた回答に近いです。
ありがとうございました。
私はロータスのスクリプトを使ったアプリ開発をやっています。
当然コンパイラや中間コードをはくインタプリタは念頭にありません。
GUIのアプリで、長くて1000ステップくらいのコードによる処理
をイメージして質問させていただきました。
インタプリタがどういうふうに構文解析をするのかまで理解が
行き届かなかったのでこういった形で質問をさせていただきました。
お騒がせしました。
0923デフォルトの名無しさん
NGNGN88-BASIC 辺りだと、
110 FOR I=1 TO 10000
120 ホゲホゲ
130 NEXT I
より
110 FOR I=1 TO 10000 : ホゲホゲ : NEXT I
とした方が速いつーのが有ったが。。
コメント無し&マルチステートメントで速度を稼ぐなんて
20年前の話だね(w
0924デフォルトの名無しさん
NGNGその速いつー話で、いやに仕変しにくいソースが
どれほど転がっていたか...
最後に担当者居なくなって、派遣社員の漏れが保守されられたよ。
0925デフォルトの名無しさん
NGNG0926924
NGNG>6.15 の入手法は書かれていなかったな。
http://msdn.microsoft.com/vstudio/downloads/tools/ppack/download.asp
で適当にvcpp.exeかvcpp5.exeをDLしてコマンドプロンプトで/C オプション
つけて解凍してみそ。
0927デフォルトの名無しさん
NGNGあなたすごいです。
横からですけど、いただいまた^^
自分も6.15探していたので、かなりありがたいです^^
本当にありがとうございます!
0928デフォルトの名無しさん
NGNG0929@
NGNG0930デフォルトの名無しさん
NGNGサンクスって、何でvcpp4じゃないんだろうと思ったり…
0931デフォルトの名無しさん
NGNGMASMを使ってwindows9x,2000,ME,XP等で動作するTCP/IPを使って
通信をサポートするDLLを作りたいんですけど、
192.168.1.1(クライアント)から192.168.1.2(サーバー)へポート1024でhelloと送信するプログラムの
クライアントがわの作り方を調べたいんですけど、
作り方を説明してるようなサイトを知っていたら教えてもらえないでしょうか。
サンプルソースを持ってる方いたらもらえないでしょうか。
0932@
NGNGサンクスってなんだ?
コンビニか?
0933デフォルトの名無しさん
NGNG何故にアセンブラで?
高級言語でソケット使えば簡単にできる物を
わざわざアセンブラで苦労して作る必要があるの?
0934デフォルトの名無しさん
NGNG其処にアセンブラがあるから
0935931
NGNG2つ、ファイルサイズを小さくしたいから。
3つ、高級言語では俺の力ではゆうずうが聞かないから。
4つ、お遊びで、独自言語(コンパイラ)を作ってるから、それにも使いたいので。
などなど
意味わかんない質問してスミマセン。
0937デフォルトの名無しさん
NGNG0938937
NGNGまあ無知なうちに一回ぐらいやっておくと二度と馬鹿なことはしないでしょ。
0939デフォルトの名無しさん
NGNG無意味な煽りは、やめなはれ
ここはアセンブラのスレで>>931の書いてる事に落ち度は無い
0940931
NGNGすごいことだと思ってません。
たとえばアセンブリ言語アセンブラを作ったとしても、
それは1つ1つの命令をデバックすれば作れるものだから、
すごいというより、ただの根気と初心者以上の知力があれば出来るかと思う。
>>938
はい、そうですね。
自分にもっと力があればこんなことはやろうとしないかも知れませんね。
お願いです、どなたか>>931の質問に答えてもらえないでしょうか。
0941931
NGNG0942デフォルトの名無しさん
NGNG糞2chなんかでは聞かない方がいいよ
ヴァカが多いから
0943デフォルトの名無しさん
NGNGアセンブラのはそう簡単には見つからんだろう。
それから C + Win32API で書かれているものを ASM + Win32API に
書き直したところで、ファイルサイズが劇的に減るとは思えない。
0945デフォルトの名無しさん
NGNGだから文盲は出てこなくていいって。
0947デフォルトの名無しさん
NGNGアセンブラヽ(`Д´)ノモルァ
http://pc3.2ch.net/test/read.cgi/tech/1040297337/
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNG取りあえず、C で書いて、アセンブラソースに落として、それを改良するのが手っ取り
早いと思う。
0950デフォルトの名無しさん
NGNGTCP/IPのドライバを書け?と、、
call命令しらない房やかな?
0951デフォルトの名無しさん
NGNG>>949もそういう意味で書いていると思ったが。
WinSockをCから呼び出すサンプルソースは探せばすぐ見つかるから問題はないだろう。
>>931がドライバも書きたいと思っているのなら止めはしないが。(w
0952デフォルトの名無しさん
NGNG0953名無しさん@Emacs
NGNGもう10年以上前なんで忘れてっけど。
6502ですた。たすかa,x,yの3つしかレジスタが
なかた様な…
0954デフォルトの名無しさん
NGNGとも言うべきもので、6502のエミュレーションモードも持っている変態CPUです。
アキュムレータも8ビットのA,B二本(但しBは交換専用)で使うか、16ビットの
C一本で使うかの選択ができます。16ビットCPUなのにレジスタがとても少なく、
6502と同様ゼロページを積極的に活用する事でそれを補っています。
スーパーファミコンのソフトはほとんどアセンブラで書かれていたというから
驚きます。
0955931
NGNGこれはkernel32.dllを呼び出してるんですか?
引数は506って意味ですか?
0956931
NGNGフリーの使いやすい、お勧めなどあったら教えてください。
0957デフォルトの名無しさん
NGNGmasmについてくる奴
bcc32とかボーランドについてくる奴
VCについてくる奴
GNU binutil の objdump
以上
0958デフォルトの名無しさん
NGNG256 個もレジスタがあるのに..
0959デフォルトの名無しさん
NGNG0960デフォルトの名無しさん
NGNGkernel.dllの序数506のエントリを呼んでる。
番号→名前の調べ方は忘れた。.def見れば書いてあった様な気がするが。
ちなみに、引数はそんな所に出て来ない。
0961デフォルトの名無しさん
NGNGApple][でマシン語のプログラムを組む時、Apple-Basicがゼロページを
食い荒らしていて、結構面倒かった記憶がある。
0962デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNGそのうち「これが電波なんだ」ってわかるようになるよ。安心すれ
0965デフォルトの名無しさん
NGNG>>947
0966931
NGNGあの〜、うちのPCはkernel.dllがないんkernel.dllですけど・・・・
あるのはkernel32.dllだけなんですけど??
どしてかな??
あ!そこに引数あるのはINVOKE命令だった^^;
callの時はpushでやるんか・・・・
>>949
あの、質問なんですけど、どこからどこまでCで書いたらいいって、いってるんですか?
1から全部書けと言うなら、本当にドライバも書けと言ってるようなものですよ・・・
>>957
masmについてくる、逆アセンブラって名前なんでしたっけ?
0967デフォルトの名無しさん
NGNG> masmについてくる、逆アセンブラって名前なんでしたっけ?
masm持っていれば分かるでしょ。
それともMXでも使う気ですか(ワラ
0968デフォルトの名無しさん
NGNGあるのかないのかよくわからん…
0969デフォルトの名無しさん
NGNGドライバを書くためにWinSockを逆汗してるんだろ?
そうじゃないなら、素直にWinSockを使えよ。
WinSockの使い方が分からんのなら、こことか見とけ。
http://www.nakka.com/lib/inet/
0970931
NGNGあw意味分かりませんね^^;
すいません・・・
俺のPCにはkernel.dllがなくて、kernel32.dllしかないといいたかたのです。
ごめんなさい。
>>967
DUMPPEなんですかね?
MXっていっても、MASMってフリーですよね。
>>969
ドライバまでは書きたくないんですけど(書けない)、
そのぎりぎりのところまで掘り下げて、やってみたいんです。。
後、http://www.nakka.com/lib/inet←ありがとうございます、参考にさせて頂きます。
>>ALL
お世話かけてすいません。
そしてありがとうございます。
0971デフォルトの名無しさん
NGNG> あの、質問なんですけど、どこからどこまでCで書いたらいいって、いってるんですか?
> 1から全部書けと言うなら、本当にドライバも書けと言ってるようなものですよ・・・
お前アフォか ? なんでアセンブラ → ドライバまで書かんといかん と短絡的に考えるんだ ? (>>950 と同類のデムパか ?)
C だろうが アセンブラだろうがどこまで書くかは、プログラマ次第。
アセンブラはドライバまで書けるけど、書かないといけないわけじゃないぞ。
1. winsock 使って、connect()/send() の世界でやる。
2. winsock も実装してしまい、世界一効率的な TCP/IP の実装を目指す。
3. ドライバまで、自作して NIC の機能全てを使い切る。
どれでも好きなのを選べよ。
0972デフォルトの名無しさん
NGNG馬鹿は一生馬鹿のまま。
0973デフォルトの名無しさん
NGNG自己紹介か ?
0976デフォルトの名無しさん
NGNG> 2番を目指したいですね。。ファイナルアンサー!!
まあ、先は長そうだけど、頑張れ。
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNG糞
0979デフォルトの名無しさん
NGNG最初のとっかかりとしては悪くはない。
0980デフォルトの名無しさん
NGNGあれば、教えていただきたいのですが!!
0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNG0983デフォルトの名無しさん
NGNGまあ言いたいことは一応(^^;
ファイルシステムまでコミでCP/M80を動かす方法は、自分は知らない。
でもMSXPlayer+MSX-DOSで、ほぼCP/M80互換になるんじゃ?(メモリ空間狭いが)
# MSX版 M80.COM その他まだ持ってるなぁ。
0984980
NGNG要は、Win2000上で、CP/Mファイルをアセンブルしたいわけで・・・・
>>983 以前にWin95,98上でエミュレートするのは持っていたのですが、
2000上になると、FCBエラーで動作しないわけで、ただコンパイルしたいだけ
なんですが、.A86→.H86 自分で作るしかないのかなって作れるかどうかは不安!!
0985デフォルトの名無しさん
NGNGそういうことか。
DOS用でもFCB互換コール使わないものがあった様な気がする。
どんなのだったかなー。全然記憶にねーよ。
0986デフォルトの名無しさん
NGNGレス数が950を超えています。1000を超えると書き込みができなくなります。