1 :
デフォルトの名無しさん :
02/03/25 02:45
2げとずざ よくやった ほめてつかわす
おつー?
4 :
デフォルトの名無しさん :02/03/25 02:47
ちくしょー!!1000取られた
くっ・・・このチキンがぁ・・・。
結局 前スレに次スレのリンク貼るの忘れたな>1 まあしょうがないか
しかも 全スレって、アホか。
数合わせようと思って996で自分であげてしまった! 計算間違いだった・・・。最後に v w (゚ω゚)/ \(゚δ゚)<ジーンギスカーン! /( ) ( )ゝ <'\ / > やりたかったのに。
Σ(゚Д゚)ソウダッタ 騙された・・・むしろ犯された・・・2ニ
乙かれ>1
11 :
デフォルトの名無しさん :02/03/25 02:56
v <(゚ω゚) <うっ! ( )\ /'> v (゚ω゚)> <はっ! /( ) <'\ v <(゚ω゚)> <うっ! ( ) /'> v (゚ω゚)/ <はっ! /( ) <'\ v w (゚ω゚)/ \(゚δ゚)<ジーンギスカーン! /( ) ( )ゝ <'\ / >
12 :
デフォルトの名無しさん :02/03/25 02:57
v w (゚ω゚)/ \(゚δ゚)<心スレワッショイ! /( ) ( )ゝ <'\ / >
前スレからながめていうのもなんだが かなりのアホが混じってる 情報理論くらい習ってからものを書けと言いたくなる連中が多い。 間違いだらけだぞ。初学者は注意したほうがいい。
初学者がいきなりアセンブラやらされる場面は減ったと思うがなー
>>13 せめて1つぐらい、どのレスが間違ってるのか指摘してくれよ。
> 注意したほうがいい。
これだけじゃ何が正しくて何が誤りなのかわかんねーじゃん。
そんな無意味な警告イラネーヨ。
アセンブラを知っているとCのポインタの概念はさっと理解できる。 そういう意味からも知っておいて損はないと思う。 ただ、特殊な分野を除いてアセンブラでプログラムを組みたくない。 能率が悪すぎる。
>>15 わざとだよ。長々と有用な警告して私の何の得になる?
具体的に挙げると昔から煽りあいになるだけだから、自分で推して知れ。
ただ間違いがあることさえ気づかないのは問題だからな。それだけだ。
17は騙りです。 すみません。むしゃくしゃしていたのでああ言いたかっただけです。 今後気をつけます。
>>17 わざわざ「一つぐらい」って書いてるだろ?
誰も長々と有用な警告すれとは言ってないよ。
>>私の何の得になる?
だからそんなあんたの警告は無意味だって言ったんだ。
すでに騙り煽りが始まってるしな。(ワラ
( '_') たぶん自分ができるからって自慢したかっただけなんだろうね。 ('_' ) ああ、そのにおいがプンプンしたレスだったもんな。
>>18 の騙りは、
>>20 で
>すでに騙り煽りが始まってるしな。(ワラ
を言うための
>>17 の自作自演に1000カプリコ
アセンブラ(゚д゚)ウマー
チチンプイプイ アセムプイ! ↓ (゚д゚)ウマー
騙り煽り厨発生か・・。春だな・・。
沈むまで待とうや。
27 :
デフォルトの名無しさん :02/03/25 07:17
でー、どれがおかしなレスだって?>13 一個ぐらい上げてくれよ
「前スレ」 「まえスレ」「ぜんスレ」
アセンブラ…(;´Д`)ハァハァ...
>13 典型的な傲慢オナニーレスだね。 「警告」って・・・。バカジャネーノ。
31 :
デフォルトの名無しさん :02/03/25 17:17
GNUのアセンブラ処理系ってどこで手に入りますか?
GAS NASM で検索して下さい >.31
ありがとうございまーす!
つーかモルァってなんだよ。 まるでアセンブラやる人間が変人ばかりみたいだ。
35 :
デフォルトの名無しさん :02/03/25 18:24
ワラタ
変人だと思いますがモルァ。
ぴっぴっぴっぴっぴっぴってさぁ うるせーんだよ!ばーか! 時計か?あん?まんこか? みんこか?むんこか? まんこ みんこ むんこ めんこ もんこ ま〜〜ん〜こ〜〜〜
常人がキティのフリして書き込んだらイタイ。 自分の厨房っぷりをさらけ出しているようなもんだ。
Oh!Bakaガ イパイ イマスネェー
40 :
バイク板の鬱な藁人魚 :02/03/25 19:22
前刷れで質問したものですが、回答が得られなかったので 再度書き込みますスマソ いま、PC/AT用のM$-?OsのIPLを解析しているのですが、 INT 1Ehの飛び先アドレス([0000:0078]:[0000:007A])をポインタにして 参照される、DISKBIOSへのパラメータブロックの内容が分かりません。 ExDEBで覗いてみても、ベクタ1EはNoSpecialUseと出てきて参考になりません。 どなたかDISKBIOSパラメータブロックの詳細をご存知の方 いらっしゃいましたらお教えください。 ヨロシコお願いします。
>アセンブラやる人間が変人ばかりみたいだ。 今の時点では変人しかいませんが、なにか。 ちなみにわし変態です。(w
RUBY煽り出来ないせいか、変な煽り入れてるのがいるなー。
45 :
バイク板の鬱な藁人魚 :02/03/26 18:34
>>43 どうも有り難うございました。
うーん。ただ、肝心な部分が書いてないっすね。
以前、PC-98でOS組んだときは山のように資料があって
楽だったのですが、PC/ATのBIOS触るのは殆んど初めてなので
難儀してます。なんかイイ書籍とかHPあったら教えてください
>x86限定な名前じゃなくてちょっと安心しました
そーっすね。最近わたしも、V850とかHS-3とかのアセンブラを
勉強してます。
送り元(S)と送り先(D)が逆なのが気持ち悪いです・・・(藁
IPL解析のほうは、ディスク上のBPBの内容がPC-98のM$‐?OSと
同じことに気づき、大体完了しました。
相変わらずINT1E周りは詳細不明のままですが・・・(鬱
BIOSからのカーソルの制御ってどうやってやるんだろう??
とか、GV-RAMのマッピングとか、分からないことがたくさんあって
大変です。
あ、HS-3じゃなくてSH-3です。スマソ しっかし、ここ伸びないっすね いっそのこと”アセンブラでPC/AT用OSを書く”刷れとか 立ててみていいっすかね、なんて書いてみるテスト
>>46 アプリケーションプログラマのOSに対する複雑な感情が
出てきて、イイスレにはならないだろうと予言。
>>47 なんだかなぁ
そんなもんですかね。シミジミ
複雑な気分っス
どうも有り難うございます(^o^)/
51 :
デフォルトの名無しさん :02/03/26 21:58
このことですか ? FDD パラメータ (サイズ 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
>>51 おわあ、有難うございます。これっす!!
ああ、よかた。これで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の所にトラック当たりのセクタ数を書いてるのが気になります。
私の計算がずれているだけかもしれないので、後で、ダンプして調べて見ます。
走も有難うございました。
ごめんなさい、0000:7C41の所は0000:7C42に読み換えてください。
>>45 >なんかイイ書籍とか
もうもってるかもしれませんが、とりあえず
http://www.oadg.or.jp/ にDOS/Vアーキテクチャの仕様書がハード/ソフトともにあります。無料。
ダウンロード時に登録させられますが、とくにどうなるということは
ないようです。
ただ、これによるとint 1Ehはシステム予約になっていて詳細不明ですが。。
>>54 どうも、毎回ありがとです。ちなみに、うちの環境では、3.5MBのほうのPDF
が、壊れてて開かないのですが???あれれ?
56 :
デフォルトの名無しさん :02/03/27 09:36
10年位前にこんな本があった(フェニックスbiosの解説) ABIOS for IBM(R) PS/2(R) Computers and Compatibles: The Complete Guide to ROM-Based System Software for OS/2(R)
調査してまいりました。 IPLから、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かを自動判別して利用する ということでしょうか? 用途はどちらも同じと思われるし・・・
58 :
デフォルトの名無しさん :02/03/27 16:53
違った---CBIOSの方でした
あせむぶらでAT用のグラフィックライブラリを作ろう! と言ってみるテスト
>>59 いいっすよ、仕事のついでに・・・
誰か手伝ってくれるなら尚良いんですが・・・
61 :
デフォルトの名無しさん :02/03/27 22:19
資料の当時は 1.44MB無かったはず(8, 9, 15sectorのみ)
>>61 なるほど、そうなんだ。
もれ、ずっとPC-98だったからなぁ
>>59 っで、どんなのキボーンするよ??
>>63 藁藁
まぢ?
Unixはなぁ。苦手だなぁ。
VGAとX鯖の仕様を全部分かりやすく教えてくれたら、(紙媒体キボーン藁)
コーディングはするけど。
もうちっと使いやすいのにしようぜ。
って、漏れ以外のひとに、今更使い道あるのか知らないけどねぇ。
65 :
デフォルトの名無しさん :02/03/27 22:55
repの使い方おしエロィ
>>65 本買ってきて勉強汁!ゴルァ
といいたい所だが、
rep リピートプリフィックス
直後のストリング命令をCXが0になるまで繰り返す
とりあえず、アスキーの”はじめての8086”でも買ってきなさい
若しくはフリメをさらしなしゃい。いろいろ教えたゲルから。
>>67 えっと、これは
>>49 とおなじかな?
なにはともあれ、どうも有り難うございます(^o^)/cd10
がいしゅつでしたか。スマヌ
>>70 バッチいコードで申し訳ないが、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
72 :
デフォルトの名無しさん :02/03/28 22:50
age
>若しくはフリメをさらしなしゃい。いろいろ教えたゲルから。 ((;゚Д゚))ガタガタブルブル
74 :
デフォルトの名無しさん :02/04/02 11:12
age
vclr: ld 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
ei忘れてるし。
x86や68kでは何とも思わないが、Z80のニモニックを小文字で書かれると 妙に違和感があるのはなぜだろう…。
B4 01 CD 21 3C 61 74 02 CD 20 B4 09 BA 13 01 CD 21 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で組んだっす!
mov r1,(getglobs+8)&0xff000000 add r1,r1,(getglobs+8)&0xff0000 add r1,r1,(getglobs+8)&0xff00 add r1,r1,(getglobs+8)&0xff RISCは面倒
取り敢えず、ファイルシステムがけてーいした DOSのFATとDIRエントリをファイルとして残しつつ、 独自のファイルシステムを載せるという、○刃の? メンドクサイ藁 あと、昨日IntelのPentiumファミリーデベロッパーズマニュアル下巻 を自費にて購入。読みづらいけど、使える。|(^o^)/"イイ!! メンドクサイのがお好きな人には尚お勧め(藁
やっぱ 基本はアセンブラですよね♪ Z80と 8086と SH-4 しか触ったこと無いですけど でも ほとんど忘れてしまったので また勉強しなおします 今度は何を叩こうかな〜 ワンダースワンを叩こうかな? 開発セット売ってるみたいだし 80186互換機らしいけど メモリマップとか 載ってますかね? OSも作れるのかな? やっぱ 石に入ってるかな? ちょっと調べてきます あげとこ♪ でわ
>>75 ex sp,hlなんてあったっけ。
ex (sp),hlとかld hl,spがあったのは覚えてるんだが。
>>79 そんな巨大な即値が使えるのなら、何で分解するのかがわからん。
getglobsが外部リンケージで、リンカがへぼだったとしても、
mov r1,getglobs
add r1,r1,8
でだめなのか?
アセンブラも知らずにCPUコアのエミュ書くのはafoのすることですか?
>>75 ループカウンタは8ビットでいいのか?
vsizeは16の倍数なのか?
なんで-1するんだ?
1イテレーションで32バイト書きこんでるように見えるのだが?
>>83 デバッグはどうするんだ。ニモニックくらい覚えれ。
SHやシステム開発関連の会社は、 新人教育でアセンブラを必修とすべきだ。 コンピュータの概念の全てが、アセンブラの中に詰まっている
(´-`).。oO(概念の全ては言いすぎだろう…)
nopって何のために入れるの? 厨な質問でスマソ
89 :
デフォルトの名無しさん :02/04/07 10:57
いろいろあるぞ 何かの時間待ち(I/O, FPU, etc) delay slotに入れるものがないときの詰め物 あとでパッチ当てるための遊び ループの先頭のword alignのためのpadding nopは効果のない命令にアサインされていることもある 例えばx86では nop と xchg (e)ax, (e)ax は同じオペコード。
>>90 ありがとうなかなか面白いね。
アセンブラ覚えてみようかなぁ。
>>90 Exdebで検索掛けるとExdebの作者が公開している資料もろもろ
が手に入るよ。Exdeb自体も結構使えるからお勧めっス
バグがあったような気もするが・・・
よし!手始めに今日届いたウイルスを解析しちゃル! ・ ・ ・ やっぱり地道にいこう。
インラインアセンブラ使ったら 微妙に遅くなった・・ C++のクラスライブラリには インラインアセンブラ 相性悪いね コンパイラの最適化の邪魔しちゃうみたい キャッシュ、先読み、パイプライン 等も考慮して書くなんて 大変です・・・ やっぱ 最近のCPUは アセンブラ 辛いわ・・ でも MMXを使う時は アセンブラのメリット出ますね どうやって ビジネス系の仕事でMMXを使うか・・ わたしの課題 アセンブラ使って 何か作りたいな〜
アセンブラ使える人ってプログラミングのプロフェッショナルぽくってかっこいいね。 まあ実際そうなんだろうけど。 ところでみなさんの偏見でかまわないのだけど アセンブラの難易度というのはどれくらいなの? 言語と比べていただけるとわかりやすくて幸いです。 ex:Perlと同じくらい簡単。
>>94 覚える事が嫌な人 シンプルな事が好きな人には Perlより簡単
>>95 単純なので書くのは簡単。
単純すぎて思った機能を実現するのが大変
煉瓦を一つ一つ積み上げて家を建てるような。
ひょんな所から、今度X68kが数台譲っていただけることになった。 んで、質問っす。今から68kの汗、覚えて何か役に立つかなぁ? 外部バスとか使いやすいですか? ってーか80x86汗使いからのクラスチェンジは大変という噂が・・・ どうなんでしょうか。
>68kの汗、覚えて何か役に立つかなぁ MPUとしてはもう作ってないですが、 ASICに組込まれたエンジンとしては世の中に存在はします >80x86汗使いからのクラスチェンジ その違いが、よりシンプルな印象と取れるか貧弱と取れるかが評価の分かれ目
X68k でも Z80 でも きゃっする よりは覚える価値があると思います
>>98 ,99
レスさんくす
どっかに68k汗の解説HPか、txt転がってないかなぁ。
検索したら関係ないHPイパーイ出てきて裁ききれなひ(汗
101 :
デフォルトの名無しさん :02/04/08 17:54
gnu asの教科書ありますか?
アセンブラ:RISC C+++クラスライブラリ:CISC 俺ってチャレンジャー。
104 :
デフォルトの名無しさん :02/04/09 01:44
アセンブラ自体は必ずしもかけなくてもいいけど、アセンブラの概念がわからんプログラマはすぐに 死んでください。
CPUの動作原理の事を、アセンブラの概念とかゆっているプログラマは、すぐに回線切って首吊ってください。
CPU設計したことないプログラマは電車の屋根に登って死んでください。
ああ、やったなぁ昔、ビットスライスプロセッサ組み合わせて…
チューリングマシンの命令一覧って忘れてしまったよ。 どっかに落ちてないかな
入社していきなりフルカスタムCPUの設計を押しつけられましたが、何か?(;´Д`)
>>111 mov ah,09h
mov dx,offset Mes01
int 21h
xor ax,ax
int 21h
Mes01 db 0dh,0ah,"Thanx!!",0dh,0ah,'$'
113 :
デフォルトの名無しさん :02/04/12 01:36
日立SH系やってる人いるかな? 日本人が設計したらしいけど、もうダサダサなんだよね。 とくにプリプロセッサの .aif .aelse .aendi って気持ち悪すぎ。 あと、左から右へ代入する表記もやる気を無くすよ。
call/ret に相当するコードもなくてマクロ使わなきゃ いけないんじゃなかったけ。 Intel系みたいにマイクロコードに落とし込んでも 使いやすくしたら良かったんじゃないかと思ったりする。>sh* C で書くならどっちでもいいけど。アセンブラはちときついかなと思ったり。
>>113 それより、無理矢理16ビット長にしてるから、逆汗してデバッガで追いかける
ときには見にくくてしょうがない。とりあえず、Cのソースをエディタで開いて
追ってるけどつらいわ。
call/retは一応あるよ。ただ、命令長が16ビットだから、命令のなかに
コールアドレスは含まれない。基本的にPC相対指定でジャンプアドレス
を格納したメモリを指定して、そっからロードしてジャンプとかになる。
これを逆汗でみたときはさもありなん。
>>110 10年前なら東芝やNECの第一線級でもマトモな乗算器も組めない有様
だったけどねえ。
今はやれる事すくないかもな。
Hashをハードで組むとかどう?
カスタムやらされたのは昔の話だよ。8,9年ぐらい前。 VHDLやらVerilogなんてものは話で聞くぐらいだった日々。 A1図面にぎっちり書かれたラッチをおいつつ、旧CPUの解析・・・ ま、小規模なものだったけどね、さすがに。 でも、いちばんつらかったのは、ロジックより内蔵LCDドライバ の特性の維持の方だったけどな。温特、負荷特でちゃんとした 特性でなくてなぁ・・・。コンパレータがなぁ・・・うぅっ いまはすっかりソフト屋だけどね。
SHか、割り切り方が潔くて好きだな。
>>115 そうそう命令長が16ビットなのも嫌だねぇ。
なんでもPC相対で遠くから読みだしてんだから。
言語設計がセコすぎだよ。
ふと疑問に思った プロテクトモードで動作しているOSってBIOSは、どう扱っているんだろう? もしかして、仮想8086モードにぶち込んで動かしてるとか? 或いは殺してるんだろうか?
SHだと、TRAP命令でスーパーユーザーモードに入るので、そこから BIOSに入ればよろし。x86ならコールゲート使えばいいんだっけ?
普通、プロテクトモードで動くOSはリアルモードBIOSなんて呼ばないだろ。 PCI BIOSとかは32bit BIOSがあるらしいが。
>>97 palmプログラマの中では現役。
俺はRISCが気に入ったので、もうCISCには戻りたくないが。
昔の286用のDOS-Extenderは、DiskBIOS呼ぶのに、一旦CPUをリセットするとかやってたよ。
palmはもうstrongArmに移行するんじゃなかったっけ。 会社が保てるかどうかが問題かもしれんけど。
palmってヤヴァいの?
SONYが手を出す→PalmOSはマイナー路線まっしぐらケテーイ
>>128 新聞か何かの記事で見たなあ
速度遅いから、最近のPDAでの採用が減ってるらしい
PDAとノートパソコンの区別が付かないヤシが、それだけ多すぎるって 事でしょうか。つーか早くARMのpalm出せ。
>>130 つーかPocketPCとPalmを比較する時にCPUのクロックで比較して
PocketPCの方が速いと思い込んでいるのではないかと。
まあ、速いのは間違いないが。
>>132 コンセプトが違うよね。
一方はミニWindowsを。
もう一方は必要最低限の電子システム手帳を。
134 :
デフォルトの名無しさん :02/04/18 15:02
COMMETII & CASLII しかわからないんですけど、 いい本ないですか?
あの、CASLからステップアップというか、そういう本があれば 教えてもらいたいと思いまして...
138 :
デフォルトの名無しさん :02/04/20 01:25
未だにC,C++のコード中にアセンブラ書いてる人くらい いますよね?
書きたくはないが、VC++もx86もFPUも時々ものすごくアホなのでしかたないんだ
86系CPUの解説リファレンスとしてはIntelさんのマニュアルがベストですか?
ARMのPalmと68KのPalmってエンディアンが違うんだよね・・・ あれ、PalmSourceでいろいろ小細工するみたいなことを以前に聞いたけど、 どうせ問題があとからいろいろ出るような気がする。
アセンブラでDOS/Vのキー処理する方法を教えてください。 DOS環境で。 お願いします。
>>143 システムコール使うかBIOS叩くかポートから直接制御するか。
>>142 Armはバイエンディアンなので。
PPCもバイエンディアン。
Z80系なんですが・・・ KY-80(Z80上位互換CPU)について知ってる人はいませんか? ポート割付が不明なので、コードが理解できません。助けて・・・
>>144 BIOS経由は遅いと聞くので、できればポートから直に読み取るケースの方を教えていただけませんか?
なかなか情報源がなくて…。
>>145 バイにしても、システム作るときにどっちか決めるんだよね。
オレ、SHしか使ったことないからARMはよく知らないんだけど。
去年聞いただけだからアレだけど、ARMをリトルエンディアンで使うという
話だったんだよなぁ。質問の時間に、やっぱり突っ込んでいた人いたけど・・・
なんで同じエンディアンにしなかったんだろ? 互換性考えたら、普通は
エンディアンを同じにしておくと思うけど。
>>147 キー入力速度を考えれば、そんなに速くなくてもいいと思う・・・
あと、USBキーボードはどうするの? たぶんLegacyインターフェイス
エミュでI/Oポートまでエミュしてないと思うよ。
150 :
デフォルトの名無しさん :02/04/21 20:03
BCCのインラインアセンブラってど
151 :
デフォルトの名無しさん :02/04/21 22:48
────プログラマとは、法則性を考える職業である。
153 :
デフォルトの名無しさん :02/04/22 02:33
ちょいと教えて下さい。 68000(X68K)を少しかじった事があるのですが、ペンティアム以降の 資料を書店で探したけど全然ないんですね。 友人に「金出して買え」と言われるものの本屋にないなんて。 開発をWindowsに移行したいのだけど手始めに撫でるだけでもx86系の 概念に触れておこうと思ったのに。 ニーモニック自体は、386教本で十分って事なんでしょうか?
154 :
デフォルトの名無しさん :02/04/22 02:36
>>153 マイクロソフトのサイトからDLできるよ。
問題ない事もないが、同じ勉強するのなら金出してでも 今の時代に近い事をやるべき。と言ってみるテスト
>>154 MSのサイトにも情報あったっけ?
まことに申し訳ないですが、URLきぼーん
158 :
デフォルトの名無しさん :02/04/22 03:13
MASMがどっかに落ちてるよ、ググルで調べ
159 :
デフォルトの名無しさん :02/04/22 03:18
>>154 ヒント有難う。 >>156 モノを教えてくれて有難う。 取り敢えずReGetに渡して、 今夜は寝ます・・・30時間近く寝てない・・・。
PDFだけだとつらいよね。検索性はいいのだけど、一通りの 章を読みたいときはどうも。。。 最近の印刷所ではPDFデータで入校できるんだけど、有志で印刷代 だして印刷、製本・・・ってのは、やっぱり著作権の絡みで駄目かなぁ・・・ヤパーリ
そう、STフィールドはx86プロセッサの誰もが持っているセグメントの壁だということを
x86は4Gの壁
>>165 もっともそれはx86に限らず大部分の32ビットCPUに言えるけど。
くそー一般命令と特殊命令ってなんだよヽ(`Д´)ノ おじさん怒っちゃうぞ!!
Linker & Loaders読んだけど86のアーキテクチャが複雑だぞモルァ!
170 :
デフォルトの名無しさん :02/04/29 01:38
Javaの開発やってますけど、 で行きつくところまで行きついてしまってMASMで開発しています。 実に合理的理由があってやってるのだけど、周りにどう思われるか想像に固くない。 あなたの周りにJavaの開発にMASM使ってる人が居たら暖かい目で見守ってあげましょう(藁
>>170 ついでにバイトコードアセンブラも作ってください・・・。
172 :
デフォルトの名無しさん :02/04/29 01:50
それはすでにあるよ。 jasminとか。 まあバイトコード自体使えないけど。
1はどこに行ったのデショウカ?
174 :
デフォルトの名無しさん :02/04/29 14:40
まだoptasm使ってる人いるのかなぁ・・・
秘密。
178 :
デフォルトの名無しさん :02/05/17 15:40
age!
180 :
デフォルトの名無しさん :02/05/22 15:57
俺のタマタマもリロケーション可能形式だぜ!!
181 :
デフォルトの名無しさん :02/05/22 17:14
Athlon(Duron)におけるSSEの実装ってどうなっているのでしょうか? Pen3で動かした場合とまったく同じ挙動を示すのかどうかということです。 計算結果は同じでなければなりませんが、たとえばある変更によって Pen3では速度が向上するがAthlonでは効果がないとか、そういった ところがどうなっているのかが疑問です。
182 :
デフォルトの名無しさん :02/06/02 12:36
組み込み1チップマイコンならまだまだアセンブラは現役だと思うがどうか。 Z80知ってりゃATMEL AVRなんて30分もあれば理解できるはず。 (PICはやや特殊だから嫌い…)。 わざわざC使うまでもない制御なんていくらでもある。
184 :
デフォルトの名無しさん :02/06/02 13:50
次スレは アセンブラ…ヽ(`Д´)ノウワァン にしましょう!
根性で次スレまで伸ばしましょうか
187 :
名無しさん@Emacs :02/06/04 01:59
次スレまであと813ステップですか。
ウメー
埋め
nop
jmp $+2
__asm{
} exit(-1);
>>182 確かに組み込みなら現役ですね。といっても過去の遺産をずるずると
ひきずっているだけのものがほとんどですが。
>>わざわざC使うまでもない制御なんていくらでもある。
これはどうかと・・・逆のような気がします。わざわざアセンブラで書くまでもない、と。
事実、バイト先でも時間と暇があればできるだけCで一から書き直してます。
>>194 >事実、バイト先でも時間と暇があればできるだけCで一から書き直してます。
時給稼ぎのために、アセンブラで済むコードをわざわざ手間暇かけて
(機械語的に)無駄の多いコードに書き換えてるんですか?
#「コンパイラで最適化すれば良いじゃん」ってのは無しね
きっと、まともな制御ソフトなんて書いたこと無いんですね。
書き直すのは確かに「わざわざ」だな。 新規なら慣れたほうが作りやすいだけの話。 その後の保守も考えるならCのほうがリスクが低いかな。てなところでしょ。
バイト先では与えられた仕事をこなすだけで、書き直すかどうかを決めるのは上の人です。 196さんの言うとおり、「その後の保守」これに尽きます。 実際アセンブラでぐちゃぐちゃ書かれたせいで割を食うのは 書いた人ではなく、その後始末をする人ですから。 ぼくの仕事もそんな後始末が多いです。ちょっとした仕様変更なんかも ものすごい重労働になってしまいます。だからこそバイトに やらせるんでしょうが・・・。 Cで「わざわざ」書き直すのも、その後の仕様変更を見越してのことです。 >>きっと、まともな制御ソフトなんて書いたこと無いんですね。 いきなりこういうことを言える神経を疑います。
確かに保守の手間や再利用することを考えればCが得策でしょうね。 ROM容量を気にするような場面は少なくなってきていますし。 まぁアセンブラも書き方次第で可読性はかなり上がるとは思うのですが…。
199 :
デフォルトの名無しさん :02/06/04 20:37
アセンブラか、(アセンブラの)開発は、もうこの世から 消えている、と思ってました。(or 思ってます。) ごめん。言いたい事、書いちゃて。
世の中のこと何にもわかってないんだね
保守 すなわち C++ ゲームボーイ (;´Д`) アセンブラ
4 or 8ビットCPUはアセンブラで組まないと、速度遅い && メモリ空間 すぐイパーイ
>>>きっと、まともな制御ソフトなんて書いたこと無いんですね。
>
> いきなりこういうことを言える神経を疑います。
>>202 の言ってるような機能が制限されたハード環境で開発したり、
信号のタイミングをシビアに制御するようなことを
>>194 はしてないってこと?
制御ソフトの要求仕様に対して、オーバースペックのハードを使ってるのなら
可読性を優先できるかもしれないけど、必ずしもそうじゃないでしょ。
実現しようとしてるソフトの仕様&アルゴリズム等を ちゃんと理解してる人の書いたアセンブラは可読性高いと思うけどな。 アセンブラに限らず、他の言語でも同じだと思うけど。
うーん、H8なんかで開発することはあります。Z80もたまに。 それなりの理由があればアセンブラで開発することもありますが、 最近はオーバースペックのハードが多いです。 >>わざわざC使うまでもない制御なんていくらでもある。 僕はただ、これに反応しただけなんで。 アセンブラじゃなきゃダメならそうするしかないですし。 ちなみにぼくはバイトといっても時給じゃないんで、わざわざ 時間かけても給料増えないっす・・・。むしろ損。 外注先の下請けってなもんです。学校行ってると、時給制じゃ ろくに稼げないんで。
台数ベースなら、絶対4ビット、8ビットマイコンの方が多いね。 ROM/RAM、液晶ドライバ&キー入力I/F込みで1チップ100円の世界。
とりあえず、
>>194 がやってる「制御」ってのは、
ICEとロジアナでデバックするような代物ではないのね。
ICEは使ったりもしました。 僕はソフトウェアの方の人間なんで、ハードウェアを さわらせられるとおもしろい反面、気を遣うし壊しそうで怖いです。
まだ792ステップあるぞ がんがれ
push
212 :
名無しさん@Emacs :02/06/12 02:26
rts あれ?サブルーチンから正しく戻れません。
macro jmp_bc push bc ret endm なんての思い出した
マシン語とは?(・_・) ニーモニックとは?(・_・)
もう完全に記憶の彼方なんだが TurboAsmだっけか? REPEATってマクロあったよな あれ便利だったんだけどNASMで似たような事できん?
216 :
デフォルトの名無しさん :02/06/18 02:38
PA-RISC で排他制御を行いたいんですけど、gcc で セマフォを実現するにはどうしたらいいっすかヽ(`Д´)ノモルァ 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 出来てるんでしょうか?(;´Д`)ハァハァ
検査プログラム作ってちゃんとロックするか調べて見たら?
pthread 使って調べようとするんですけど、 意味不明のコンパイルエラーがでるんスよ(;´Д`) #include <pthread.h> とすると、 /usr/include/dce/cma_ux.h でなんかシンタックスエラーがでます(;´Д`) fork じゃ調べられないですよね? もう少しがんばってみます(;´Д`)ハァハァ
219 :
デフォルトの名無しさん :02/06/18 18:38
VizualC++6.0です。 ある構造体があって、+=とか*=とか演算子がオーバーロードされてまして それが3DNow仕様と普通のCのFPU仕様の2種類作ったんですが、 (3DNow版はオーバーロード関数内に_asm{}。) インライン展開しないと3DNow版の方が速いんですが 展開するとC-FPUの方が3倍ぐらい速くなってしまいます。 これってどうしてでしょうか? 関数の中に_asm{}があるとインライン展開での最適化に支障が出る場合があるんでしょうか? またインライン展開された部分のアセンブラコードが見たいんですが どうやってそのアドレスを知ればいいんでしょうか?
>>219 インライン展開されてないのでは? > _asm{}
>>220 なんだか凄い結果ですが、ある計算をした場合
こんな感じになります。
リテール時のコードが見たいんですが
どの部分がインライン展開されたとこなのか
わかんなくて困ってます。
3DNow版
デバック 280.68クロック
リテール 16.86クロック
C-FPU版
デバック 289.51クロック
リテール 6.28クロック
mapファイルを吐かせればいい
/FAsc
>>221 プロジェクトの設定で、アセンブラコード吐き出させるから、
それで見てみれば?
[プロジェクトの設定]->[C/C++]->[ファイルリスティング]
アドバイスありがとうございました。 BSCファイルはちょっと使い方がわからなかったので MAPファイルを使わせてもらいました。 それで、コンパイラ最適化を無効でインライン展開有りだと 3DNowもC-FPUも普通に展開されていることがわかりました。 しかし最適化を速度重視にすると、どこに書いてあるのか わからなくなります。 とりあえず、もっと勉強して調べてみたいと思います。
pthread ウチの UNIX じゃサポートされてないとのことでした。 おとなしく sem_ 系の排他制御を使います。
CASLUで出てくるGRnとかGRm、GRxって何ですか??なんか違うんですか? 汎用レジスタってのはとりあえずわかるけど
すれ違いですが、すみません。教えていただけないでしょうか? いいと評判だったLions'CommentaryっていうUNIXのコードの解説本を買いました。 Cのところはなんとかわかりそうなのですが、PDP-11/40というマシンの アセンブリが全然わかりません。(アセンブリはどのマシンでもわかりません。) あまり深入りしたくはないのですが、せめてOSが起動するところまでの意味は わかりたいと思います。 参考書なり、WEBなり、どなたかアドバイスしていただけないでしょうか。 よろしくお願い致します。
>>228 LILOのコードでも読めばわかるのでわ?
で、その解説誰か、教えて?
230 :
デフォルトの名無しさん :02/06/20 15:47
初心者な質問ですみませんが K6やPenIIだと、ロード/ストアユニットがあるので mov eax, [mem] mov ebx, [mem] のようにメモリからのロードを続けて配置すると 1カウント、パイプラインがストールすると思うんですが Athlonには、そのユニット自体ないので競合によるストールは起こらないんですか? またPenIVはどうなんでしょうか?
>>230 =231=232
ジサクジエンの臭いがするぞ
そんなに注目してもらいたいのか?
アラインメントってなんですか?なんかいっつも4なんですけど・・・
ごめんなさい、確かに勘違いしてました。 パイプラインじゃなくてスーパースケーラでした。 MOVでメモリからレジスタにロードする場合 ロードユニットを使いますよね? CPUがスーパースケーラで2命令同時実行出来るとして その2命令が、MOVとMOVなら双方ともロードユニットを使うので 競合して同時実行出来ないと思うんですが、この認識は間違ってますか?
すみません。justのが今読んでた文章のところにありました。 >アライメント(alignment)というのはメモリに変数を置くときの置き方のことだ。 >たとえば 32 ビットマシンでは int は当然 32 ビットを使うが、普通はどこから >でも 32 ビットとれるわけではなく、「4 の倍数バイトから」とか「偶数バイトか >ら」というふうに決められている。 >なぜかというとそのほうがメモリアクセスを高速化できるからだ。
>>236 同時に実行できないと言うのは正しいけど、その命令が隣り合ってるから
パイプラインがストールするとは限らない。
昔のPentium (P5) ならストールするけど。
239 :
デフォルトの名無しさん :02/06/20 20:34
mov ebp,esp sub esp,esp
240 :
デフォルトの名無しさん :02/06/22 18:15
Win32で動くマクロアセンブラでいいのないですか? MASMはデカいのアセンブルできないし、LASMはNT系でハングる事がある。
242 :
デフォルトの名無しさん :02/06/22 18:48
ちなみに、LASM、NT系で一般保護違反だしよる。 で、ゴルァメール出してみたら、再現しません。だと。 メモリ外アクセスやからそんときのメモリの状態によって でたりでなかったりするのは分かるが… そんなアセンブラ売り出すなよ〜仕事増える。 ちなみに無意味なマクロ挟んだら直ったりします。 dummy_00 proc dd 0 endp
nasmかgas
MASMで500kbのソースアセンブル出来たけど?
>>244 調べてみます。
>>245 なんか、equ多用してるでかいソースをアセンブルしたとき、
64KBがなんたらってでた気がする。ちと忘れたスマソ
単にラベル多すぎってことはないかい?
単に1個のセグメントに64K以上並べただけでないのか??
単に
>>242 が馬鹿なだけってことはないかい???
TASMが一番強力だったような記憶があるよ
251 :
デフォルトの名無しさん :02/06/23 20:35
WinのEXEファイルのフォーマット教えてください
PEというキーワードで検索するとよいよ
253 :
デフォルトの名無しさん :02/06/23 21:09
NWSA があるじゃん。
>>247 確かに多いかも。
でも、LASMなら通るんですよ。
>>248 86用の実行ファイルではなく、独自の仮想マシン用のコード吐くために使ってます。
1セグメントは軽く超えてます。
あと、
>>249 の脳では理解できない使い方をしてるので、
私は馬鹿なだけって可能性ももちろんあります。(藁
( ゚д゚)ポカーン
258 :
デフォルトの名無しさん :02/06/26 17:10
恐縮です、 宿題がどうしても解けません。 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を書いてみたんですがうまくいきません。 ご指導願います!!
260 :
デフォルトの名無しさん :02/06/26 18:22
すみません258の問題はなんとかできました。 ですが、今度は次の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 CASLU Assembler -V1.03(2001/04/25)- ( Date : 2002/6/26 ) オブジェクトプログラムを T33.obj へ出力しました。 END CASLU Assembler. H:\casl2>RUN T33 H:\casl2>java RUN T33 COMETU Emulator -V1.03(2001/04/25)- ( Date : 2002/6/26 ) Illegal Address PR:002D(NOP) Adr:002E END COMETU Emulator. と でてしまうんです わかりますかねぇ?
( ゚д゚)ポカーン
>>260 ( ゚д゚) カポーン
(´-`).。oO(なんで「これであってるはずなんですけど」なんだろ?)
264 :
デフォルトの名無しさん :02/06/29 12:53
素人質問ですいません、VC++からインラインアセンブラで書かれている 関数(私が書いたものではありません)を使おうと思ったのですが、マルチ スレッドのプログラムでこれを使用する場合、当然CPUが一つの場合だと、 そのインラインアセンブラ中で使用されているレジスタ等は複数有るわけ がないのでこの関数が再入可能になるように排他処理を施す必要が出てくる (スタックしか使ってない普通の関数なら排他不要ですが)のではないかと 思ったのですが、この認識で正しいでしょうか?
265 :
仕事さぼり :02/06/29 12:56
>>264 スレッド切り替え時に
システムが自動的に
レジスタなどのコンテキストは保存するはずだから、
その必要はないと思います...
むかぁ〜し昔、68アセンブラいじってた頃。 jsr LABEL とする所を lsr LABEL とタイプしていてなかなかバグが見つからなかったのはヒミツ。
>>264 勉強汁!
キーワード「ディスパッチ レジスタ コンテキスト」で
検索汁 (゚Д゚)ゴルァ
マルチスレッドであろうと無かろうと、
マルチタスクだったりするし、
ふつーは割り込みもケアする必要がある。
たしかに
>>265 氏の御説のとおり
「システム」か何か(仮)が良しなにケアしてくれるが、
その「システム」がどこまでヤってくれるのかを
理解しておかないと危険。
あと、レジスタを使わないでスタックだけ使えると
思ってるのか (#゚Д゚)ゴルァ!
しかもレジスタの読み書きについて排他処理すると
再入可能になるのか (#゚Д゚)ゴルァ!
CPUが1つしかないと「レジスタ等」も
1つしかないのか (#゚Д゚)ゴルァ!
三度のご飯のお供に Z80 をどうぞ。
勉強が足りないのは
>>267 も一緒だと感じるのはなぜだろう…
初心者なのでどなたか教えてもらえないでしょうか。 拡張子‘asm’はアセンブラのソースファイルですよね。 これを実行ファイルに変換する方法はどうすればよろしいのでしょうか。 どうか、よろしくお願いします。
…
273 :
デフォルトの名無しさん :02/07/03 22:55
なんなんですかあなたは
OSをつくろう。
使えるのが作れたら10円やる。
>>268 ・・・・・(;´Д⊂ ウエーン。ワカンナイヨウ。
お蔭様で配置替え。
279 :
アセンブラは知りません。 :02/07/14 23:11
わざとアプリをハングさせてデバッグ画面にし、出てきたアセンブラのコードに適当に知ってる命令を加えて int 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の最初のほうに貼り付けたら落ちました。なぜですか?
>>279 push命令はdword値をpushするのに対し、ret n はword値を破棄する
からじゃない?
だから 0x00010001uにreturnしようとして落ちる。
281 :
デフォルトの名無しさん :02/07/15 00:25
|○ファイル:点数ファイル 宣○レコード:点数レコード(整数型:番号,点数,文字型:名前) 言○整数型:sts,合計 部○手続:レコード入力(ファイル,レコード,状態) |○手続:データ出力(合計) |●レコード入力(点数ファイル,点数レコード,sts) |●合計=0 処■sts=0 理┃合計←合計+点数 部┃データ出力(合計) |┃レコード入力(点数ファイル,点数レコード,sts) |■ フローチャート作るソフトはあるけど、擬似言語書けるソフトも作れそう?
282 :
デフォルトの名無しさん :02/07/15 02:37
いまアセンブラやりはじめた(C++暦2年以上)んだけど、わけわからない記号列を見ると初めてプログラミングはじめたときを思い出してドキドキする。くくく、楽しすぎんぞ。
>>281 ナニソレ
>>281 富士通とか日立とか、汎用機の世界では10年以上前からあるぞそんなの。
結局ソース修正のほうが圧倒的に楽なんで元の木阿弥になるんだが大抵。
285 :
デフォルトの名無しさん :02/07/16 00:14
>>284 そーなんだぁ〜
>>283 基本情報技術者試験で擬似言語の問題が出てきてるんです、はい。
ま、他の学校の誰に聞いても
「そん何とっても役にたたん!」
とか言われるのがオチなのは気のせいか・・・
だから、なぜこのスレで?
うるせーばか。お前から だから と なぜ をとったら何も残らないくせに。
ポカーン
292 :
デフォルトの名無しさん :02/07/18 21:59
z80始めることになりました。チャンチャン
いきなりx86からはじめるより z80とかから勉強した方が効率はいいですか?
eieio
>>293 Z80は既に遺物だから、86からやった方がいいよ。
大体、試験環境を持ってるの?
PC-8801などの8ビットマシンを持ってるなら別だけど。
>>295 そうなんです、それが引っかかっていたんです。
既に環境がないのでz80の勉強といっても本を読むことしか出来ないので・・・
まだ何も手をつけていないので要領がわからなかったのですが
C++の勉強にCの知識が前提になるのと同じようなイメージで捕らえていたのですが
関係ないんですね?
●C++の勉強にCの知識はあまり必要ない ●いきなり 386/486から初めてOK 86の知識も不要 ●Z80は結構windows上のシュミレータも豊富 最初はコンパイラの出すコードを眺めるのが一番だよ 後はインラインアセンブラの使い易いコンパイラで少しづつ使ってみる お勧めは Delphiパーソナル 無料だけどインラインアセンブラは 使えるし、コンパイル&goも早いから勉強には楽
DelphiPersonalってインラインアセンブラ使えないだろ? tasm.exeとか付いてこないし
299 :
デフォルトの名無しさん :02/07/19 15:00
>>298 使えるよ?
tasmを使わなくても1パスでインラインアセンブラが使えるから便利だという事でしょ
もちろんtasmに比べたらアセンブラとしては貧弱だけど
今時アセンブラだけで全部組むなんて無意味なんだし
ただ、Cコンパイラのように、アセンブル、リンクを使う経験値は稼げないね
Visual C++6.0のインラインアセンブラはどうでしょう? 使いやすい部類に入るのでしょうか?
>>300 インラインで使う用途にしては十分だけど、それ以上には向かないと思うよ。
誰かが書いてるかもしれんが、Cコンパイラの吐くアセンブリコードを見ると
勉強になるよ。最適化オプションの効果を見たりするのも意外に楽しい。
302 :
デフォルトの名無しさん :02/07/20 02:01
普通、DWORD値の1 を右へ1シフトすると 0 になりますが、 IntelCPUのメモリ上の 01 00 00 00 を 00 80 00 00 にする命令は ありませんか? bswap で挟むのは無駄な気がするのです。
>>302 回転を使えば?
でも Cで x:=(x<<31) | (( unsigned ) x
>>1 );
とやっても、相手がメモリなら殆ど速度変わらないよ
>>303 302はlittle endianのマシンで
byte[4] = { 01, 00, 00, 00 }; を
byte[4] = { 00, 80, 00, 00 };
にしたいんだからそれだとダメ。
>>302 > bswap で挟むのは無駄な気がするのです。
気がするだけだと思う
305 :
デフォルトの名無しさん :02/07/20 13:41
nasmをゲットしようと思ったのですが、リンクが切れているのかホームページにいけません。どなたか、リンクの通っているURL教えてください。
306 :
デフォルトの名無しさん :02/07/20 16:14
307 :
デフォルトの名無しさん :02/07/20 17:37
>>306 getできました。ありがとうございます。
308 :
デフォルトの名無しさん :02/07/20 18:21
cygwinでnasmをビルドする方法教えて。。。
309 :
デフォルトの名無しさん :02/07/20 18:50
アセンブラのソースとちょっと見たらC言語で書かれていたところがあった。アセンブラって高級言語で書くものなのか、、、
310 :
デフォルトの名無しさん :02/07/20 19:02
fd
>>309 字句解析なんてやってらんねーだろうし、
命令選択に幅がある場合の最適化なんてことをやりだしたら
カナーリの高級言語じゃないと厳しいのでは?
>>304 あ!・・・・ごめん
なら x = x<<15 だ
(´-`).。oO(
>>312 ツッコムべきなのだろうか? そりゃこの例での結果は同じになるけど…。)
シフト数1限定だけど無理矢理書いてみた。未検証。 sub 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。 以下蛇足。 元データが何なのか知らないけど(グラフィックか?) 計算中はそのアーキテクチャ上で扱いやすいデータ形式にしておくのが 定石じゃないかな。
レスありがとうございます。 そうです。 グラフィックです。 1bppの画像をdword単位で操作したかったのです。 bswap使います。
ああ、それをやりたかったんだ。やっと判った。
モノクロビットマップデータを全体に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;
}
>>316 おぉ。それ、SSE2で128bit単位でやると速そうだね。
318 :
デフォルトの名無しさん :02/07/24 22:02
教えてください 実は「はじめて読むマシン語」という本を勢いで勝ってしまい 全て読み終えて理解も出来たのですが 当然のことですが読み進めていくうちにとても古いアーキテクチャーの物だと気がつきました そこで次に「はじめて読む486」という本を購入しようと思っているのですが その本の冒頭に「8086などを理解していることを前提に書かれています」という内容の記述があります 「はじめて読む486」を読んだ方がいましたら教えてください 「はじめて読むマシン語(Z80)」から「はじめて読む486」に進むのは無謀でしょうか?
>>318 はじめて読む8086をかってみれば?
良書だし安い
>>319 「はじめて読む8086」は大変評判良いですね
実はそれを買おうと思って間違えたんです・・・
本のタイトルを正確に記憶しないで「はじめて読む・・・」という部分と
マシン語の本であるというあやふやな記憶を組み合わせて購入してしまいました
その書店に「はじめて読む8086」が置いてあれば気が付いたんですけど
あいにく「はじめて読むシリーズ」はマシン語、アセンブラ、486、MASMと8086だけが見当たりませんでした・・・
読み始めてすぐに間違いに気が付いたんですがせっかくだから読みきってしまいました、時間の無駄だったかな・・・
1600円くらいケチケチしないで買い直すとしますか・・・
無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄ァッ!!! ( ・д・)…
322 :
デフォルトの名無しさん :02/07/25 02:25
COFFバイナリエディッター アタ━━━(゚∀゚)━━━!!
323 :
ろうひ男爵 :02/07/25 06:23
>>318 から読んだ方がよいですよ。
はじめて読む486は、ユーザーレベルアプリケーション以上のモノ
保護機能とか割り込みとかの本なので。
初めて読む8086を読んで、
拡張されたレジスタを理解(16bitから32bitへ拡張)+拡張された命令を理解
すれば、オーケーです。
windowsなら、特に割り込みの事を考える必要はないし、
exe386やrun386でも、システム側がやってくれるしね
324 :
デフォルトの名無しさん :02/07/25 08:00
ターボアッセンブラーって今お店で売っているんでしょうか?
326 :
デフォルトの名無しさん :02/07/25 13:37
16bit 86アセンブラなんすけど mov ax, [bp+si] ↑ こういう使い方のレジスタの組み合わせってどのくらいありますか
327 :
デフォルトの名無しさん :02/07/25 14:32
コマンドプロンプトでDUMPとかが出来ない。 DEBUGは出来る。そういうもんなんでしょうかね?
>>326 386でいろいろ拡張された分を無視するとそんなにない
>>324 アセンブラだけならC++ Builderに付属してる(w
>>326 16ビットレジスタだと
[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)
>>330 ありがとうございます(^ー^)
だいぶ助かりました。
333 :
デフォルトの名無しさん :02/07/26 15:25
最近はC言語のほうがアセンブラよりはやいと聞くが、本当か?
>>333 気合の入ったCコンパイラが吐くコードのほうが、素人のアセンブリソースより
すごいことはあるんじゃない?
C言語で書いてあとはコンパイラに任せたほうが 移植するときには有利なんじゃない?
>>334 たしかにそう。GCCで最適化レベルを最高にして出力された
アセンブラコードを読むと、かなり気合が入っている。
#VCは、最適化レベル上げるとバグッたコードをかなり吐くのでそこが不安。
Cコンパイラのコンパイルオプション(PIII用のコードを吐くようにするとか、最適化レベルとか)を適切に設定すれば、かなり速度は上がるはず。
それでも、物足りなければネックになっているモジュールだけハンドアセンブルで最適化。
337 :
デフォルトの名無しさん :02/07/26 17:26
>>336 ハンドアセンブル…直でマシン語書くのか。
せめてアセンブラぐらい使えよ。
>>336 gccの最適化はCWにも劣るレベル。
全然気合いなんか入っちゃいないよ。
VCも5とかそれ以前はバグコードを吐いたけど、6はマトモ。
7(.NET)はちょっと物足りない感じだけど、やっぱりすごい。
339 :
デフォルトの名無しさん :02/07/26 17:44
チンコーはぁチンコー
340 :
デフォルトの名無しさん :02/07/27 00:03
mips, arm, sh 皆の好みはどれ?
俺はarmっす
342 :
逝って良しの1 :02/07/27 01:34
ARMだな。 sh設計した奴は素人。
343 :
デフォルトの名無しさん :02/07/27 01:49
漏れも ARM がイイっす。
344 :
デフォルトの名無しさん :02/07/27 01:50
アセンブラなんか使うなよおめーら
345 :
takebe youta(正規表現 :02/07/27 02:13
ハンド・アッセンブルしろってこと?
アフォか。 インラインアセンブラしまくって最適化の邪魔するんだよ きまってんだろまったく。
347 :
takebe youta(正規表現 :02/07/27 02:39
>>346 > きまってんだろまったく。
それは、誰が決めたんですか?
それは私です
349 :
デフォルトの名無しさん :02/07/27 16:37
It's mine. それは地雷です。
350 :
デフォルトの名無しさん :02/07/27 20:59
地雷だったらaが要る
352 :
デフォルトの名無しさん :02/07/28 02:30
MMX命令について詳しく書かれたサイトありませんか? 現在某参考書にちょっと載ってた movq, punpcklbw, punpckhbw, paddwなど数種類の命令しか分かりません
インテル・アーキテクチャ・ソフトウェア・ディベロッパーズ・マニュアル 中巻:命令セット・リファレンス がオススメ
AMDのx86-64では、8個の汎用レジスタが追加されるらしいな。 なんかx86らしくないと思ったのは漏れだけ?
>>355 EEX,EFX,…,ELXだったら、萌える。
and eex, fffffffffffffff0h add eex, egx adc efx, ehx ; 128bit加算 キター
x86-64って64ビット即値はmov命令以外使えないんだよね。
ぢゃこお? mov eax, fffffffffffffff0h and eex, eax ふーん。めんどうなのね。 オペコードの節約になるからRISC的には正しいのかも。
mod/rm のbitじゃ表現できないのは、どーするんだろ、 まさか、プレフィクス?
361 :
デフォルトの名無しさん :02/07/28 08:18
x86-64って64bitモードがあんのかね?
64bitモード(アドレスと拡張レジスタが64bit)で、R8-R15だって→x86-64.org 苗苗〜
ええとつまりIPとかSPとかが64bitになるわけではない、と? そりゃつまらんなあ
アドレスが64bitになるって言ってるじゃん
ようやっと見たよ x86-64.org 完全64bitモードあるじゃん。モエモエ。 よくわからなかったのが、従来の32bitアプリが 64bitレジスタにアクセスできるのか、ということ。 ちょっとだけおいしいかもしれん。ちょっとだけ。
過去資産を切り捨てているだけ、IA-64のほうがかなり有利なんじゃないの? レジスタが馬鹿ほどあって面白そうだし。
>>365 カーネルモードでないと64bitモードに移れないから、
従来の32bitアプリじゃ64bitの機能は使えないでしょう。
>>367 32bitプロセス(?)が、ヘンテコリンなprefix付けて64bitレジスタに
アクセスできるのかなあ、と。
>>368 その64bitレジスタにアクセスするのに必要なREXプレフィックスは、
32bitモードでは別の命令(INC,DEC)に割り当てられているので、無理。
要するに、x86-64は al, ah ↓ ax ↓ eax ↓ rax ↓ (゚д゚)ウマー な訳だよ、諸君! どう思うよ?
Hammerって、やっぱりリセット直後は16bit Real mode なの?
そうじゃないと互換プロセッサと名乗れないじゃん 既存のOS動かないし。
EAXのEは、ExtendedのEかと勝手に思ってたんだが、 RAXのRって、何よ? Rabi-en-RoseのRかな?
うさだage
377 :
デフォルトの名無しさん :02/07/29 20:18
MS-DOSはシステムコールを実行する時も、リアルモード でなくてはいけないのでしょうか?またMS-DOSはプロテクト モードで実行させることは出来ないのでしょうか。
378 :
デフォルトの名無しさん :02/07/29 20:23
379 :
デフォルトの名無しさん :02/07/29 20:45
>>378 すみません勉強不足でした。おっしゃる通り、仮想8086モード
に移行出来れば、MS-DOSの上で動く16ビットアプリケーションも
動かせる様です。しかしMS-DOSのシステムコールが、なぜリアル
モードで動くのかが分りません。システムコールを実行する為には
メモリの保護などを行わなければ危険だと思うのですが...
× CPU自体 ○ インテル
382 :
デフォルトの名無しさん :02/07/29 23:21
僕の買った本にはCPUは「クプと呼ばれている」と書いてあったのわけだが 皆さん「クプ」と呼んでいるのですか? 「シーピーユー」と呼んでいるのは世界で僕だけですか?
クプだな。
385 :
デフォルトの名無しさん :02/07/29 23:25
マジで?
クプ...でいいんだよな? 一瞬あせった。
>>381 訂正ありがと。
後、俺もクプだと思うよ。
流れからいくと。
クプだったのか・・・
389 :
デフォルトの名無しさん :02/07/30 00:51
クプはでふぉでしょ。
俺のはムプだ
391 :
manko_chinko ◆c2rpKRNM :02/07/30 00:53
うちの家族では”まんこ”って呼んでます
クピュじゃないの?
394 :
デフォルトの名無しさん :02/07/30 08:02
CPUをシーピーユーと読む香具師は素人だけだろ。 SCSIとかもエスシーエスアイとか言ってそうだな(藁
プッ
TCP/PIとかもティーシーピーアイピーとか言ってんだぜ。 トクプピなのにな。
SCSIは当然「すくし」だ。
少なくとも2chでは、CPU = クピュだろ。
EAXってなんて読むんですか?
402 :
デフォルトの名無しさん :02/07/30 09:56
やぁっくす
ププク
俺のビデオカードのグプはGTS
ガッチャンだね。
へぇ〜いろんな読み方があったんだね。 自分の場合TCP/IPはトクピップで話さないと 会話が成り立ちません。
もうこのネタ飽きた。
412 :
素朴な疑問 :02/08/01 01:52
Pentium4のTLBの記述で 4K,2Mまたは4Mの n way set associative って 書いてあるんですけど、これって要するに TLB は 4K,2M/4M のPTEが 一つのTLBでシェアされるっていう意味なのでしょうか? AthlonとかはTLBは 2つあるみたいですよね。
414 :
デフォルトの名無しさん :02/08/02 22:23
>>414 スーファミか。65816カスタムだね。
416 :
デフォルトの名無しさん :02/08/02 22:46
>>415 ファミコンだと思うのですが…
どうすればnesファイルを作ることができるのでしょうか?
nesファイルって、ロム?
420 :
デフォルトの名無しさん :02/08/02 23:10
マリオだな。 これはアセルンブルできないよ。
x86-64とItaniumはどっちが美しい?
Itanium
424 :
デフォルトの名無しさん :02/08/02 23:41
>>421 えっ、そうなんですか?でもゲーム製作技術板のスレではできてたみたいですけど…
>>424 じゃあ、そっちで訊いたらええんちゃうん?
>422 廃人宣言みたいな質問はやめろ(藁
427 :
デフォルトの名無しさん :02/08/03 00:10
>>425 わかりました。ありがとうございました。
428 :
デフォルトの名無しさん :02/08/05 16:26
アセンブラのソースとちょっと見たらC言語で書かれていたところがあった。アセンブラって高級言語で書くものなのか、、、
(´-`).。oO(Cってどこらへんがどう高級なんだろ・・・)
>>428 うちは 最近アセンブラ書くのはDelphiでやってる。
文字列の扱いが楽だし、IDEモドキに組み込むのも楽だし
そう言えば昔、構造化アセンブラなんてのも有ったな。
432 :
デフォルトの名無しさん :02/08/06 21:18
age
433 :
デフォルトの名無しさん :02/08/07 01:59
「初めて読む486」って本で、 int 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 ですよね? 素人丸出しでごめんなさい。だれか教えてください。。。
>>433 スタックの絵を描いてみればわかる。
その例ではintは2byteのようだな。
つか、スタックを bp+n でアクセスしてるの見て、 スタックはアドレスの大きいほうから小さい方に 伸びてるのわかってほしい。
436 :
デフォルトの名無しさん :02/08/07 02:22
>>435 >>434 えーと、y,x の順で積んでから、
bp を積んでいるんですよね?
てことは、bp のサイズは4byte なのでしょうか?
それなら納得できます
438 :
デフォルトの名無しさん :02/08/07 02:32
440 :
デフォルトの名無しさん :02/08/07 02:38
あー、IPレジスタってのを積むらしいですね IPレジスタ+BP だからXの位置まで4バイトなんだ。 合ってますか?
441 :
デフォルトの名無しさん :02/08/07 02:42
>>439 つまりret でIPレジスタの分をPOPして
もどるってことですか!
なるほど!!
ありがとうございました。
みんなアセンブラなんかやってるの 変態じゃん
444 :
デフォルトの名無しさん :02/08/07 20:14
今一番使われているのはどれですか? Z80っていうことは,ないですよね・・・
Z80互換のワンチップとかって、相当数出回ってそう。
Z80系はゲームボーイに(省略)
>>442 アセンブラだけなわけないじゃん。
効率悪すぎだから併用よ♪
アセンブラだけやってたら確かにある意味変態かもな(w
449 :
デフォルトの名無しさん :02/08/07 22:54
Win32APIを全部記憶してる奴も変態だな
変態って言うなよ(藁
仕事柄アセンブラしか使わしてもらったことが無い...
アセンブラったって用途はピンきりだ。
アセンブラしかなかったら、アセンブラだけ使うしかない罠ヽ(`Д´)ノウァァァァン 自社開発フルカスタムCPUは、マジで泣きそうになるよ。。
イヤならさっさと転職しる。 私ならそう(略)
その仕事は最近香港の子会社へ逝きました(w もう2度とやりたくないな。まともなデバッガすらなかったし・・・頼りはメモリ やレジスタ表示用7セグLEDだけ。メモリ参照時のアドレス打ち込みは、トグル スイッチでパチパチ(;´Д`) こんなのは三国人にやらせときゃいいんだ(w 今はSH-3+Cで快適開発〜。アセンブラもたまに使うけどね。MMUの 制御とかブート部分でちょこっとだけ。
>>455 MMUの制御って、隣家に任せればいいんだと思ってた...
457 :
デフォルトの名無しさん :02/08/08 21:13
・ ヘ\�sEv��・・;k・GR)Yアエ^・・pヌzg[サ」劑^賤ョWpョロ ゙ユjオメJ+r・\ >E8W。B〈ンG・概・ 戉ホ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ヨ嘱ヒ �井セ・ィテ これってなんていう機械語ですか?
458 :
デフォルトの名無しさん :02/08/08 21:26
バイトコードって誰が発明したの?
>>458 たしか1970年代あたりにSmalltalkの出力がバイトコードでやられている
というのをどっかの論文か何かで読んだ覚えがある。そこにははっきり
した起源は不明って書かれていたような気がした。
あやふやですまんです。
>>458 詳しい起源は知らんが、PascalはP-CODEだったし、
Bもスタックマシンの中間コードをinterpretしてたらしい。
463 :
デフォルトの名無しさん :02/08/11 05:52
こんな感じのコードが本に乗っていたのだが、 /* 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); 関数ポインタに「セレクタ値:オフセットアドレス」 をセットしておくための処理らしいのだが、よくわからんです。 どなたか、ご教授ください。お願いします。
464 :
デフォルトの名無しさん :02/08/11 15:31
MS-DOSだと mov ah,09 mov dx,109 int 21 int 20 db '(・∀・)やん♪', 0a, 0d, '$' これでコンソールに文字列を吐けますが このmov ah,09ってファンクションコール(システムコール?)ですよね? これの一覧が載ってるWebサイトありますか? あとLinuxにもこういう仕組みありますか? もしあるなら是非書籍かサイトを教えてください。 おながいしますm(_ _)m
>>464 > あとLinuxにもこういう仕組みありますか?
ある。int 90hだったと思う。
CASLとアセンブラの違いって何・・?
CASLには浪漫が無い。
470 :
名無しさん ◆glaITM9U :02/08/11 23:15
浪漫ってどういうこと?
CASL=脳内アセンブラ
472 :
名無しさん ◆glaITM9U :02/08/11 23:22
脳内アセンブラ?? っていうか、CASLが開発で使われたりすることはあるの? 初心質問スマソ
473 :
デフォルトの名無しさん :02/08/12 00:09
>>472 開発以前に今時1語16bit×64KWの計算機なんて誰も作らんと思われ。
>>473 組み込み環境ならあるいは……
いや、その場合は 8bit に行くのかもしれないけど
そういや、1アドレスには8bitというのは歴史的な経緯か何か あるのだろうか?
じゃあ一体CASLの意味ってなんなの? 情報処理試験専用で、実社会では役立つこと1つもなしのプログラム言語?
>>476 そう。 そんなものさ。
というか、CASL程度だと 普通に組み込みの仕事してたら 事前に何も知らなくても
使えるから、フルイとして適当だという事。
だから、わざわざCASLを勉強しなさいって意味ではないんだよ
>>463 つーか、そのまえに質問の方法を勉強すべきでしょ。どの点がわからない
のか、まったくもってわからん。よくわからんです、とは具体的に何がわか
らんの?
まぁ、スレ違いの質問のような気もするけどね。
479 :
デフォルトの名無しさん :02/08/12 16:45
SHR AX,2 って8086ではダメなんや。 フーンだ!!
>>479 引っこ抜いてV30に挿し換えれば使えるようになるよ!
482 :
デフォルトの名無しさん :02/08/12 20:50
eor a,a と mov a,0 と どっちが小さいのでしょう? 前者は1バイト、後者は2バイトだと思うのですが・・。 あと、どっちが早いのでしょう?
後者は6バイト
xorのほうが使ってるひと多いから xorだと思う
aを使うという事は Z80 ?
486 :
デフォルトの名無しさん :02/08/12 21:59
>>483 え、そうですか?
mov aで2バイト、0が4バイト(32bitCPUだから)なのですか?
>>484 私もxorのほうが小さいと思っています。
>>485 雑誌等でよくみる表現に合わせているつもりです。
487 :
デフォルトの名無しさん :02/08/12 22:40
ビットならNOT レジスターならXORではないの?
488 :
デフォルトの名無しさん :02/08/12 22:49
>>480 どうも、
CXを使用している場合はつらい!
186ならOKなのにね!
x86の宿命なのかな!!
>>478 俺は一応意味はわかるけどね..たぶん,
>>463 は初めて読む486を読んでるんだろう
答えを言えばプロテクトモードではセレクタ値を使うから V86で
関数のアドレスを selector(16bit):offset(16bit) に設定しておいて
これを call するとき selector:offset でうまく設定したセレクタ値の
セグメントとオフセットの組が利用されるんだろうと..
でも, 厳密には 16bit 用にコンパイルした x86 コードをプロテクトモードで
どうなるか解釈する必要があるから -S で出力したリアルアセンブラコードを intel の
コード表でデコードしなきゃならない。
そこまでして見直すのは面倒だし、勘違いしてたら赤面なんで書かなかった(w
あの説明だと AllocateSel() がまず不明だ..
セレクタ値用のメモリを gdt あたりに割り当てるっつーことなんだけど
本読んでないとわからないわな.. まぁ
>>463 はてきとーにがんばってくれ..
今更答えても遅いです
>>489 あー、すいません。
初めて読む486を読んだって
はじめから書いておけばよかった。
説明もまずかったし。。
あとはテキトーにがんばります。
>>491 ども。本当は俺もはっきりわかっているか不明なので
教わりたかったんだよね...。
本の156pのRealToProto()関数ではCSにセレクタ値0008Hをロードしてるでしょ。
それで153pのSetUpGDT()関数では0008HのディスクリプタをSmallSeg
(16bitセグメント)にしている。(ここがミソ)
それで16bitセグメントのプロテクトモードで call far を呼ぶと 16bit だから
フツーに segment:offset コールでありながら(スタックにも戻りアドレスを
16bitで積む) segment だけがセレクタ値とゆー妙な状態で呼び出せるらしい...。
だから 32bit セグメントを呼ぶときは (sel << 16) + offset(16bit限定) に
なるということで...。
俺はこんな風に解釈してるんだけど、間違ってるかもしれない...。
間違ってたら非常にマズーだね(w
ツッコミ歓迎ッス...
> 32bit セグメントを呼ぶときは (sel << 16) + offset(16bit限定) に 32bitセグメント限定ってわけではないっすね...
>>486 Z80って32ビットCPUだっけ?
つーか雑誌とかって何?
アセンブラはCPUによってまったくニーモニックが違うことくらい理解してる?
>>494 > Z80って32ビットCPUだっけ?
8ビットだって。
往年の名 CPU で、組み込み分野などで広く使われたほか、パソコン MSX や
NEC の PC-88 シリーズ、ゲーム機セガ・マスターシステムなどで使われた。
確かゲームボーイも Z80 互換じゃなかったかな。
>>495 わーってるって。486のアフォに皮肉で言ってるだけなんだから
497 :
デフォルトの名無しさん :02/08/13 22:58
486です。 ごめんなさい。。 今手元に「はじめて読むマシン語」という本がありましてそこに 「現在、多くのパーソナル・コンピュータはその心臓部にz-80という8ビットの CPUを使っています」と確り書いてあります・・ mov a,0が6byteとおっしゃるのはどういう計算に基づいているのか、 わからないあまり血迷って適当なことを書きました。 aを使っているのもこの本の影響です(雑誌ではありませんでした・・) ニーモニックについては、 本や雑誌によって表記が結構違うので (たとえばレジスタは私の手元にある本ではA,B,・・・ですが 「日経ソフトウェア」という雑誌にはeax,edx等になっています) 環境によって全然書き方が違うんだなあとは思っていたのですが CPUによってニーモニックが違う、という明確な認識は持っていませんでした。。
>>497 > CPUによってニーモニックが違う、という明確な認識は持っていませんでした。。
それは、何か重要なことをすっとばして勉強してる気がする。先に進む前に、
ヘネシー&パターソンの「コンピュータの構成と設計」とか読んでみた方が
良いかも。
>>497 CPUによって命令が違う、そして命令の名前(ニーモニック)が違う。
>>497 奥付の発行年をよく見ようね。
本に書いてある「現在」はその頃の事だから。
>>497 「はじめて読むマシン語」は「初めて読む8086」という題名でリメイクされてます
題名が違うので別の本だと思うかもしれませんが内容を8086に移行したようなもんです
503 :
デフォルトの名無しさん :02/08/14 22:19
497です
>>498 ??
>>499 定本みたいですね。読んでみます。。でも高いですね・・。
ブックオフとかにもなさそうですし。
コンピュータ関係の古本を扱う本屋ってないのでしょうか・・・
見つかるまで定価で買います。
>>500 CPUによって命令の内容がそんなに違うものなのですか。
CPUが違っても一番小さい単位の命令は同じような内容なのだと思っていました。
>>501 問題はz-80が8bitということだと思ったので引用しました。
今のパソコンは32が主流なんですよね。
>>502 「はじめて読むマシン語」を購入する時8086とかと迷ったのですが・・
そういう事情があったのですか・・
パソコン上でアセンブラ叩きたいだけなら 498 の書いてる本 買っといたほうがよかったかもね ところで、nasm と「インテルアーキテクチャソフトウェア デベロッパマニュアル」中巻をダウンロードして、適当な コード書いてブルーバック拝んでみるっつー選択肢はないの?
>>503 コンピュータ関連の古本を多く扱う店はありますよ
神保町の古本屋街にあります
506 :
デフォルトの名無しさん :02/08/15 09:08
目的の本あるとは限らん。
>>503 どのCPUも同じような命令を持ってはいるが、例えば最もよく使う
転送命令でも単語として move を使うものや、load/store を使う
ものがあり、分岐命令も jump だったり branch だったりする。
省略のしかたも微妙に異なるので、結果的にCPU毎にプログラムが
非常に違った見え方をする。
こんな説明よりアーキテクチャの違うCPUのコードを見るほうがはやい。
510 :
デフォルトの名無しさん :02/08/15 23:33
503です
>>504 >パソコン上でアセンブラ叩きたいだけなら 498 の書いてる本
>買っといたほうがよかったかもね
初心者ですがハードウエアのことも知りたいです、
べつにアセンブラだけ、というわけではないです
それでも「コンピュータの。。」も読んだ方がいいと思うのですが・・。
実はおっしゃっている意味がよくわかりません・・
>ところで、nasm と「インテルアーキテクチャソフトウェア
>デベロッパマニュアル」中巻をダウンロードして、適当な
>コード書いてブルーバック拝んでみるっつー選択肢はないの?
この選択肢は初心者には凄く難しく感じられるのですが・・
御免なさい、これから検索かけてみます。
>>505 そうですか!ですが私は関西にいるので交通費が高くついてしまいます・・
>>507 自分で書いているコードと書籍で見るコードは書式が違うって思います・・
多分CPUが違うんだと思うんですが・・
>>508 う、難しそう、明日目を通します。
中古のPC-98とDOSで遊んでみてもいいんじゃないかな。 PCがどうやってグラフィックを出すか直感的にわかったりするし、 I/Oポートを叩くとどうなるかもわかったりする。昔の本を買う気なら そういう選択肢も考慮してもいいかな。中古の98もヤスイし。 どうしてもWindows噛んでると、わかりにくいからねぇ、ここらへん。
512 :
デフォルトの名無しさん :02/08/16 00:13
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´Д`)/<先生!VRAM直叩きってどうやればいいんですか? _ / / / \_____________ \⊂ノ ̄ ̄ ̄ ̄\ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
好きなだけ叩いてくれ
ツンツン( ・∀・)ノ
>>514 ヽ(・∀・ )アハハ、ツンツン
ウォラアッ、ぶったたいてやったぞ! ( ・∀・) | | ガッ と ) | | Y /ノ 人 / ) < >__Λ∩ _/し' //. V`Д´)/ VRAMVRAMVRAMVRAM! (_フ彡
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (;´Д`)/<先生!結局よくわからないのですが・・・・。 _ / / / \_____________ \⊂ノ ̄ ̄ ̄ ̄\ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| .|| ||
昔のPC98、8色だったから8ドットごとにまとめて書き込んで愉快だった。
.__________ ∧_∧ / (#・∀・)/つ=・~< まずDOSを極めろや / ノ \ / /\ / ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ _| ̄ ̄ \ / ヽ \_ \ ̄  ̄  ̄ ̄ ̄ )\__)\ ||\ θロ ` ⌒ドン. \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
8色だから、じゃなくて、プレーン方式だったから、だろ。
・゚・(ノД`)・゚・うえーん。 先生のバカー! DOSなんて使いたくないよお・゚・(ノД`)・゚・
522 :
デフォルトの名無しさん :02/08/16 02:46
.__________ ∧_∧ / (#・∀・)/つ=・~< 煎ってよし / ノ \ / /\ / ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ _| ̄ ̄ \ / ヽ \_ \ ̄  ̄  ̄ ̄ ̄ )\__)\ ||\ θロ ` ⌒ドン. \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
523 :
デフォルトの名無しさん :02/08/19 10:33
教えて君ですまそ。 アセンブラ始めてみたんだけど、ごく基本的なところで詰まってます。 以下のソースを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
524 :
デフォルトの名無しさん :02/08/19 10:35
うわ、タブが消えてしまった。ごめん。 ちなみに、このスロットプログラムはちゃんと動くんですが・・ === _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
質問するような体裁になってませんでした。 もう少し考えてからまたきます。
>>523 あてずっぽうだけど、'0'を表示した後改行してないので、プロンプトに隠れて
見えなくなってるだけだったりしない?
'0'の表示に続けて、0Dh (CR), 0Ah (LF) と表示してみたらどうでしょう?
>>526 リプライ、感謝です。
movAH,02h
movDL,0Dh
INT21h
movAH,02h
movDL,0Ah
INT21h
を追加してみたら、「NTMDVは不正な命令を検出しました」と
出てDOS窓上(Win2000)で止まってしまいました。もうちょっと考えてみます。
デバッグの方法についてまた質問するかも知れませんが、よろしくお願いします。
#よくみたら、スタックセグメントの中身が普通じゃないですね(笑)。
この部分は DB 100h DUP (?) にしておきました。関係ないと思いますが、一応。
528 :
デフォルトの名無しさん :02/08/20 00:43
mov si,word ptr [ecx] これってありですか??
530 :
デフォルトの名無しさん :02/08/20 01:04
32ビットを16ビットにmovしてるから? (ごめん覚え初めて1日目)
思いっきり、「あり」みたいですね。 スレよごしてごめん。
>>528 書くときはmov si, ecxでもいい
siのサイズが分かってるんで
mov si, [ecx]ね
523です。前回のはまだ解決していないのですが、しばらくおいときます。 cとアセンブラのリンクにおける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に なっていました。
書き忘れましたが、指定の方法ですが、 __far とかいう指定方法が存在することは、 一応知ってます。 ということは、cとアセンブラを最後にリンクする場合には、もしかして全てFAR CALL になるんでしょうか?
>>523 の問題、解決したっぽいです。
理由はわかりませんが(?)、終了コードを間違いを直したら正常に動きました。
>INT 20h
のところを
>mov AH,4Ch
>int 21
が正解のようです。Win2KのDOS窓やMS-DOS6.2で動作しました。
INT 20h のままだと、DOS6.2では 0 が表示されるものの、コンソールに戻ってこずにハングアップします。
INT 20h は「初めて読む8086」のスロットプログラムからパクって来たのですが、
これが行けなかったみたいです。
ちなみに、0Dh OAh を出力すると、もう1行改行が入りました。
>>538 23bitとか分けのわからないことを言ってみるテスト
>>538 う。えーとですね、dos窓で動かしたいのでたぶん16bitです。(?)
あれー、でもmasm32が出すのは32bitなのかな?
もしかしてたまたま動いちゃってただけ?
ちょっと吐き出されたバイナリを読んで、考えてきます。
ヒントどうもでした〜。
541 :
デフォルトの名無しさん :02/08/31 23:40
mmxレジスタの中身はどうやれば表示させられるのでしょうか debugだとrでいけたですよね
542 :
デフォルトの名無しさん :02/08/31 23:52
near とか far とかあるのは x86系だけなの? こんどアセンブラにかかわりそうなヨカン
>542 いろいろあるよ。
VRAMに書き込むのってどうやるんですか?
VRAMに直にアクセスできるのなら、そのアドレスを調べて 書き込めばいいんじゃないの
546 :
デフォルトの名無しさん :02/09/10 12:45
仕事でSHとつきあってるけどなんか嫌。 ARMのがいいなぁ。 ボヤキでスマソ。
お前らわかったからバイナリエディタでcomファイル開いてcd 20と打て屋 催促のプログラムだぜ。
548 :
デフォルトの名無しさん :02/09/13 02:09
アセンブラは糞。
549 :
デフォルトの名無しさん :02/09/18 00:07
スレ違いかもしれないですが、CASLで小数点のかけ算、わり算の計算ってどうやればいいのでしょうか? もし誰か分かる人がいらっしゃったらお願いします。
>>549 少数点が無い場合ならわかるのですね?
少数点は一般的には
1)指定した所に ある事にして計算する
1.15形式とか呼びますね
掛算した結果は a.b*c.d =(a+c).(b+d)形式となります
1.15形式同士なら 2.30形式になります。
2)どこにあるかをメモリ上で指定して行う
浮動小数点形式という方法です
3)特殊なコードで少数点をあらわす(ASCIIコードのまま計算するとか)
551 :
デフォルトの名無しさん :02/09/18 15:33
初めまして。相談なのですが、ARM用のアセンブリ言語を勉強する 必要があって参考書を探しているのですが、なかなか見つかりません。 今手元にあるのはCQ出版社の「ARMプロセッサ」という本なの ですが、これ以外に良い参考書はあるでしょうか? もしありましたら教えていただけないでしょうか。お願いします。
ARM Reference Manual てのがあるよね。 これ以外にまともな資料は知らん。 StrongARM とかのマニュアルにもニーモニックの解説とかないし。 なにか規制があるんじゃない?
554 :
デフォルトの名無しさん :02/09/19 00:34
>>550さん どうもありがとうございます。 a.b*c.d =(a+c).(b+d)って2.3*4.1=(2+4).(3+1) って意味でしょうか?
555 :
名無しさん@Emacs :02/09/19 02:15
>>554 そうです。
5bit同士の掛算なら結果は10ビットになります
10進で考えると判り易いでしょう
12.345*1234.5 = 152399.025
>>552 英語は基礎的なものしか読めないです(^-^;
>>553 ARM Reference Manual ですか。調べてみることにします。
>>555 9500円ですか…でも必要なことは載ってそうなので購入を
検討してみます。
みなさんありがとうございました。
559 :
デフォルトの名無しさん :02/09/22 21:30
68x00チップの達人はここにはおらんのか
68x00って何
>>560 モトローラの 68000 シリーズじゃない?
68100、68090の次のチップさね。
>>561 > モトローラの 68000 シリーズじゃない?
68000 シリーズなら 680x0 と言うし、68340 なんかなら 683xx と言うだろうね。総称する時は、68K だよ。
まあ、単に 680x0 を間違えただけじゃない ? 68x00 でググッたら、316 件もヒットするからね。(680x0 なら、約65,000件ヒットするが...。)
それより559が何をしたかったのかが知りたい
565 :
デフォルトの名無しさん :02/09/23 02:31
クワッドワードって何バイト?
(intel16ビット遺物時代から) word=16bit double word=32bit quad word=64bit じゃないの?(ちがうかもしれない)
567 :
デフォルトの名無しさん :02/09/23 20:23
>>556 ありがとうございます。
おかげさまで計算のプログラムは出来ました。
現在計算結果の10進数表記を書いています。
568 :
デフォルトの名無しさん :02/09/23 23:21
>>566 激しくおっぱいでした。
いやありがとうでやんした。
569 :
デフォルトの名無しさん :02/09/24 12:01
>>567 何の計算に使うの? 数値計算?グラフィック?
CASLで?
572 :
デフォルトの名無しさん :02/09/30 01:45
>>569 学校の課題です。
ようやく終わりました。ヽ(´∀`)ノ
数式をcaslコードに変換するコンパイラを作りなさいという課題でした。
どうもありがとうございました。
573 :
デフォルトの名無しさん :02/10/06 22:22
今多倍長整数演算をアセンブラの勉強がてら作ってるんです。 そこで、Intelのアセンブラでsbbっていうオーバフローフラグ見てくれる減算があるって、 なーんだ簡単じゃねーかと大喜びしたのもつかの間、途中でアドレスの演算しちゃうと オーバーフローフラグが変わってしまうし、ループまわしても分岐の確認の為にオーバフロー フラグ変わっちゃいますです。だれか助けて。
> sbbっていうオーバフローフラグ見てくれる減算があるって、 ネタか?
575 :
デフォルトの名無しさん :02/10/06 22:34
>>573 > なーんだ簡単じゃねーかと大喜びしたのもつかの間、途中でアドレスの演算しちゃうと
> オーバーフローフラグが変わってしまうし、ループまわしても分岐の確認の為にオーバフロー
> フラグ変わっちゃいますです。だれか助けて。
アドレス演算って何やってんのかわからんけど、±1 なら INC 使えばいいし、もっと複雑な奴なら LEA とかじゃダメなん ?
ループは、そのものずばりの LOOP 命令使えばいいと思うが...。
どうしてもって言う時は、SAHF/LAHF, PUSHF/POPF で一時退避しとくと言う手もあるし...。
>>575 フラグを保持しようとしてる目的は一体何なんだ?
578 :
デフォルトの名無しさん :02/10/06 22:53
>>576 おひょ、LOOP命令なんちゅうもんが有るのかぁ。ありがとうです。
INC、DECは使えると思ったんですが、Loopの戻りをどうすっか悩んでました。
>>577 引き算してオーバフローした時に次の桁から1引きたいんです。
int a[4],b[4]
a[0]-b[0]このときオバーフロしてたら、
a[1]-b[1]から1を引く
てな感じで。。。
subしてそのままsbbすればいいじゃん。 その間にmovを入れてもフラグは不変だし。
580 :
デフォルトの名無しさん :02/10/06 23:06
>>579 2つまでなら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]
添え字をじか打ちしてやればいいんだけど
数が多くなると嫌だから...
2つずつ処理すればいいじゃん。
あ、581は間違いだ。
間に別の条件分岐を入れたいということ? ならSBBよりSETBとかの方が速いかもね。
>>580 普通は最初の 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」 とか思えるんだ ?
> どう間違えたら、「SBB より SETB」 とか思えるんだ ? はあ? > 間に別の条件分岐を入れたいということ? こう書いてあっても理解できんかったのか? SBBの代わりにSETB+SUBを使う手もあり ということなんだが。
>>585 > はあ?
なんか言い訳してるみたいだけど、訳わからんし...。
次に書く時は、ちゃんとコード書いてからにしてくれ。
> 次に書く時は、ちゃんとコード書いてからにしてくれ。 なら前もって「自分は読解力が足りないのでコードでお願いします」 と書いとけ。後から現れて勝手に誤解してる奴の言うセリフではない。
588 :
デフォルトの名無しさん :02/10/09 03:54
>>587 恥かしい時は黙った方が良いよ。
SETB+SUBを使ったコードがどれほど助長になるか位は
素人でも分かる。
まぁ質問で口語体使うやつはたいていDQN。
>>588 試しにあなたがSETB+SUBを使うという条件において最善のコードを書いてみて下さい。
>>588 > SETB+SUBを使ったコードがどれほど助長になるか位は
助長って何だろ?
583はループ中に別の(フラグ変更を伴う)処理が
入っているのなら という前提だろ。
その場合は無理にpushf/popfなどを使ってsbbするより
setbでCFをレジスタに入れてsubする方が速い
と言っているのだと思うが。
583の説明不足と、584の理解力&経験不足で両成敗だな。
>>591 >setbでCFをレジスタに入れてsubする方が速い
これってsbbを1回実行する代わりに、subを2回実行するってこと?
次のCFはどうやって生成するの?
>>592 そうだね。あまり効率が上がらないね。
INC/DECはCFは変化しないし LEA なら何も変化しないから
折角アセンブラを使うなら、これを組み合わせて実現すべきだね
でも、多倍長なら高級言語で100進か千進で書く事をお勧めするよ。
594 :
デフォルトの名無しさん :02/10/09 17:22
>でも、多倍長なら高級言語で100進か千進で書く事をお勧めするよ。 10000進法?かなC++で、int一つに10000まで記述する方法で一回書いたんですが、 やっぱ遅いッス。10000の桁あふれを10000で割ってみる事で調整したのが 敗因と解ったような気がしてるんですが。 桁あふれの調整を割り算以外でやるとなると、引き算しかなくて。 引き算の手間隙考えるとアセンブラの勉強も兼ねてアセンブラの方が ええかなぁと思ったのでアセンブラで書き始めています。
>>594 そりゃ遅いのはしょうがないよ。
1、普通は毎回桁溢処理というか正規化をしない方針でいいんじゃないの?
2、足算の場合、毎回正規化するなら割算でなく引算でいい
596 :
デフォルトの名無しさん :02/10/09 17:52
>1、普通は毎回桁溢処理というか正規化をしない方針でいいんじゃないの? 毎回正規化しない方法が思いつかないんですよね。 どんな方法取られてます?
えと 万進法を取ったって事は 1WORD=16bit って事ですよね? だったら、2万回くらいの加減算算では正規化するひつようはないですね?
598 :
デフォルトの名無しさん :02/10/09 19:44
CASLの本でおすすめの本がありましたら、教えてください。
599 :
デフォルトの名無しさん :02/10/09 20:25
>>597 ほほぉ。足し算だけ2万回してるって言うのが保証されるプログラム用途かぁ…
僕の用途だと難しいですね。数値計算のある問題に特化したプログラムの事なのですか?
でも、それなら作るのは簡単。なるほどね、色々面白い。
>>599 違うよ。 だから、加減算が2万回以下なら正規化しなくていいって事は
非正規化カウンタみたいなのを1ワード増やしておいて
正規化カウンタが例えば100回を超えたら正規化するようにしておけば
毎回正規化する負荷 > 1ワードのカウンタ +100回に1回正規化する負荷
でしょ?
それから掛算の時とかは途中結果でキャリー処理をせずに最後に正規化をかければいいから
掛算まで考えると、これはそんなに遅くない筈
>>590 > 試しにあなたがSETB+SUBを使うという条件において最善のコードを書いてみて下さい。
結局あんたは、書けないわけね。
>>591 > 583はループ中に別の(フラグ変更を伴う)処理が
> 入っているのなら という前提だろ。
つーか、
>>583 で...
> 間に別の条件分岐を入れたいということ?
とか勝手に勘違いしてただけだろ。
そもそも、「多倍長整数演算」と言う範疇で話が進んでいたんだから、違う方面に進むんなら説明しないとわからんぞ。
せめて、「SBB より SETB + SUB とかの方が...」と書いてくれ。
>>601 SETB EAX
何か処理
ADD EAX,-1
SUB src,dst
あれ? 何か違うな SETB EAX でCFの反転を保存して 何か処理して ADD #-1,EAX でボロー復元して SBB か
>>602 > SETB EAX
お前、SETB 使ったこと無いだろ。
せっかく
>>584 に書いてやってるんだから、ちゃんと見ろ。
>> SETB .. Set Byte on Condition (CF = 1)
^^^^
EAX なんか指定できるわけねーよ。
そもそも、
>>602 のコードが何をしたいのかわけわからんし...。
CFのレジスタへの保存ってSETBではなく SBB EDX,EDX とか使わない? 0か-1になるけど。
一応補足。 CFの復元は ADD EDX,EDX とか SHR EDX,1 とか p5のころはペアリング次第で最速だったと思うけど最近のCPUではわからない。
>>601 結局というか、もともとx86アセンブラはある程度読めるけど
書くのは出来ないから振ってみただけなんだが…
他の誰かと勝手に勘違いしてない?
>>603 こんなんでどう?
SETB BL
何かの処理
NEG BL
SBB src,dst
>>605 PentiumIIIの場合、
SBBは2マイクロOPS
SETBは1マイクロOPS
609 :
デフォルトの名無しさん :02/10/11 16:46
オペコードを直で覚えてる人がいるスレはここですか
8B 85 FC FE FF FF mov eax, [ebp+fffffefc] 楽勝ですが何か?
俺も楽勝 69 69 69 69 mov mouth,penis mov pussy,mouth
612 :
デフォルトの名無しさん :02/10/11 20:05
今時アセンブラで書いてられるのは 8ビットのZ80位なもんだろ 今時のRISC(CISCもどき)は コード並び順序を仕様に沿ってやらないと、 パイプラインが乱れて実行速度が落ちるだろ こんなアセンブラ、 やってられまへん
>>612 アウトオブオーダを知らんのかね
コンパイラが SIMD まで全部最適化してくれるならアセンブラなんて
触りたくもないけど速度が倍違うとやらないわけにはいかんのよ
>>606 > CFの復元は
> ADD EDX,EDX とか
> SHR EDX,1 とか
これでどうやったら、CF が復元できるんだろう...。
>>607 > 結局というか、もともとx86アセンブラはある程度読めるけど
> 書くのは出来ないから振ってみただけなんだが
自分では書けないけど、人のコードは批評したいわけね...。
> 自分では書けないけど、人のコードは批評したいわけね...。 俺たち2ちゃんねらーなんだけど、何か?
>>614 CF=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 さん、情報ありがとう。
>>616 なんか俺、勘違いしてたみたい。CF の復元はできるね...。
> レジスタをひとつ犠牲にするのが問題。
レジスタを犠牲にするのはSETB も同じだし、どっかに保存するしかないから当然だと思う。
> レジスタのは貴重だし、Pentium3ではSETBの方が効率がよいらしい。
それにわかりやすいし...。
( ´_ゝ`)フーン
619 :
デフォルトの名無しさん :02/10/16 08:29
浮雲。
どこかにBorland Turbo Assemblerって無いですかね?
621 :
デフォルトの名無しさん :02/10/22 16:07
age
623 :
デフォルトの名無しさん :02/10/22 18:30
>>622 ちなみに、無料では手に入らないですかね?
>>612 PS2 の VU (ベクトル演算ユニット) とか、最近の DirectX のシェーダーとか。
いちおうコンパイラも出てきつつあるんだが、まだまだ辛い日々でございます。
628 :
デフォルトの名無しさん :02/10/23 08:47
つまりTurbo Assemblerは無料では手に入らないって事なんですかね?
629 :
デフォルトの名無しさん :02/10/23 09:05
割れろ。
>>627 割れる方法。
友達にC++Builder6 ProfessionalかDelphi6 Professionalを持っている
人を探す。
その人の家に生CD-Rを持参。
以降略。
NASMもMASMもフリーなんだけどねー MASMなんて昔いくらしたんだっけ?
> MASMもフリー へ?
Win95だったか98のDDKに入っていたような気がするが。 なんか制限なかったっけ?
>>634 どっかにあったよ、でも、もしかして・・・
ガクガク((((;゚д゚)))))ブルブル
636 :
デフォルトの名無しさん :02/10/24 17:05
MagicNumberってなんですか? MZ?PE?わかりません・・・(-_-
637 :
デフォルトの名無しさん :02/10/24 17:54
SYMDEB 使えよ
638 :
デフォルトの名無しさん :02/10/24 18:45
>>634 そうだったのか、すらんかった。いや、入手済みだからいいんだが。
MASM は、まだ vcpp.exe か vcpp5.exe を落とせば手に入るな。
>>639 実はインストールしたこと無いからそこんとこは知らんのよ。
vcpp /C /T:c:\tmp
とかすればインストールせずに MASM が取り出せてウマー!
というか、現在 MASM の最新版はこの VCPP に付属の Ver.6.15 だ。
んー、ちょっと使ってみたかっただけなので躊躇してたんですが それで取り出せるならDLしてみようかなぁ
>>636 他人から見たら意味不明の定数をコード中に埋め込むことです。
そして半年後の自分は立派な他人です。
644 :
デフォルトの名無しさん :02/10/25 02:45
ヘ! INT 21
647 :
デフォルトの名無しさん :02/10/25 21:48
>>640 それってMASMがフリーで手に入るってこと?
そういうこと。ライセンス的には激しくマズーかもしれんが(藁
俺はVC6持ってるのでウマーと。
でさっそく落として
>>640 の方法で取り出した。
今ml.exeが目の前にあるよ(゜Д゚) ウマー
8086マクロアセンブラ入門という比較的新しい本にサンプルをDDKで動かす例があるけど
本に記載されてるページ(MSのDDKのページ)に行っても落とせないんだもの。
アマゾンかどっかの書評でもそんなことが書いてたなぁ。
650 :
manko_chinko ◆GLc2rpKRNM :02/10/26 01:04
>>649 microsoftのftpサイトにいくと落とせると思う
652 :
デフォルトの名無しさん :02/10/26 02:02
アセンブラ入門の本って16ビットCPUのことが多いけど、 32ビットCPU、というかPentium以降を前提とした 入門書ってあるの?
SHとかH8をターゲットにするなら分からなくもないけど...
あ、ごめん。MASMじゃなくてパッチだった。↑のftpのml614.exe
658 :
デフォルトの名無しさん :02/10/26 10:21
PICマイコンでいろいろやろうとしてるんだが。 秋月の 16F877 ICEキットのtutrialさえうまく走らない。 詳しいサイトないかな。2年くらい前にすごく懇切丁寧なサイトを 見た記憶があるんだけど、消えたのか、見つからないや。
>>659 レスありがとう。でもそこは何回も見たんだ・・・。
俺はじめたばっかりの厨なんだ。ごめんよ。
辞めた先輩に、途中の仕事丸投げされたんだ。
秋月のICEキットで書き込もうとしたらなんかエラーが出て
README.ICE見ろって。見たら SLEEP instruction したらダメだって。
で、具体的にどーしたらいいんじゃーってトコで定時になったから
帰りマスタ。土曜日だし。来週からまたがんがるよ(´・ω・`)
「はじめて読む8086」を読んでいて、条件ジャンプ命令はショートジャンプ のみと書いてあるのですが、なぜショートジャンプしか出来ないのでしょうか?
>>661 そういう設計だからです。
でも確か、アセンブラ機能かマクロで ロングジャンプでも勝手に処理してくれるようになってたような
>>661 「8086 のアーキテクトが、条件ジャンプはほとんどショートジャンプの範囲に収まるし、万が一収まらなかったら、jmp との組み合わせで対処すりゃいいじゃん。」と思ったから。
666 :
テンプレ(色んな所に貼ってね) :02/10/27 01:27
>>665 ついでに、何故そういう設計がありうるかというと、
ショートのほうが命令が小さいし速くできるから嬉しい
という面があったの。そうでないと不便な方を選ぶ意味はないよね。
今の CPU はロングも対応してるけどね。 命令長くなるけど。
すみません、質問させてください。あるデータをキャッシュに入れて その後の処理をさせたいと思い、PREFETCH(NTA,0,1)を使ったプログラムを 書きました。なかなかの効果があったのですが、この命令を入れた プログラムってAthlonでも動くのでしょうか?_ 現在は、この命令を使うかどうかはSSEを使えるかどうかでチェックして いるのですが、これだと当然SSE付きのAthlonでも実行されてしまいます。その 時、Athlonがintel用のPREFETCH命令を実行できなかったら当然まずいことになる 訳で……。 私がAthlonマシンを持っていれば、自分で確かめられるのですが、残念ながら 持っておりませんので、ご存知の方がいらしたら、教えていただけませんでしょうか?
win98ddkって2000でも使えるんですか?
672 :
デフォルトの名無しさん :02/10/29 04:01
補足 ちゃんとintel用のPrefetch*と同じオペコードだから問題なし
>>673 ,674
ご親切に感謝します。ありがとうございます。
そうですよね、CPUメーカーのサイトに行くのが当然ですよね。なのに
俺ときたら……。先ほど、紹介していただいたPDFとIntelの命令表の
PDFを見てきました。これで安心してPrefetchが使えます。
本当にありがとうございました。
677 :
デフォルトの名無しさん :02/11/02 19:41
nasmのアセンブル速度って遅い?
マシンによる。
じゃTASMやMASMと比べて。
680 :
デフォルトの名無しさん :02/11/03 02:52
OMF形式の質問ってここでよいのでしょうか。それともくだスレ?
681 :
デフォルトの名無しさん :02/11/04 00:26
すみません、masmでの構造体の使い方を教えてください。 検索してもでてこないので。
683 :
デフォルトの名無しさん :02/11/08 20:52
教えてください! アセンブラの命令サイズは主にオペランドの数に依る、と思うのですが、 ●でしょうか×でしょうか? レジスタを触るかメモリを触るかにも依るとは思いますが。 あと、 ldrがmovより重いのはメモリを触るから、で●でしょうか? あと、 パリティフラグってどういう目的で使用するのでしょうか? 立っているビットが奇数か偶数かを判断する必要がある場合ってどんな場合なのでしょうか?
684 :
デフォルトの名無しさん :02/11/08 22:20
SSE,SSE2のdisassembler結果ありませんか?
>>683 > アセンブラの命令サイズは主にオペランドの数に依る
それも理由の一つだが、命令セットの設計の方が大きいと思う。
固定長の RISC と可変長の CISC だと話が違うし、最近流行りの
VLIW だと一塊りのメモリに複数の命令をパックするわけで。
ただ、現実的な 32bit RISC プロセッサに限定すれば、それが主な
要因だろうね。実際 ARM 系のプロセッサなんかは 3 オペランドの
32bit 命令セットと、2 オペランドの 16bit 命令セットを持ってるし。
>>683 > ldrがmovより重いのはメモリを触るから、で●でしょうか?
そうだね。
> パリティフラグってどういう目的で使用するのでしょうか?
> 立っているビットが奇数か偶数かを判断する必要がある場合ってどんな場合なのでしょうか?
あんまり使い道なさそうな気がするけど…。
昔は、データのシリアル転送でエラーが起きていないかどうかチェックするのに、
パリティビットを付加したりしたので、そのエラーチェックに使用するとか。
実際、パリティフラグなんて付いてないCPUの方が多いんじゃないかな。
Z80やx86くらいしか思いつかない…。
688 :
デフォルトの名無しさん :02/11/09 20:52
>>683 です
>>685 質問が不明瞭でごめんなさい、
同一CPUで使われている命令のサイズの違いについて伺っていました。
>ただ、現実的な 32bit RISC プロセッサに限定すれば、それが主な
>要因だろうね。実際 ARM 系のプロセッサなんかは 3 オペランドの
>32bit 命令セットと、2 オペランドの 16bit 命令セットを持ってるし。
なので↑で納得いきました。
>>686 >あんまり使い道なさそうな気がするけど…。
私も使ったことがありません。
>昔は、データのシリアル転送でエラーが起きていないかどうかチェックするのに、
>パリティビットを付加したりしたので、そのエラーチェックに使用するとか。
転送前後でデータの立っているビットの数が異なっていなければ
正常転送とみなす(ゲームのセーブデータのサムチェックとちょっと似ている)、
ということかと思ってしまいましたが
それでは確実ではないような・・
>実際、パリティフラグなんて付いてないCPUの方が多いんじゃないかな。
ならあまり気にする必要もなさそうですね・・
>>687 1個の誤り、とは・・・?
689 :
デフォルトの名無しさん :02/11/09 22:34
incとdecをつかえないCPUがあるそうですが なぜ使えないんだろうか? 1をadd、1をsubとか書いているらしい。
>>689 プログラム的には無くても困らんからな。
アーキテクチャの小さなマイコンだとその分のオペコードを別の命令に割り当てたいかもしれん。
そうでなくてもいまどき実行速度も変わりゃしねぇし、オペランドの分メモリ節約する意味もねえし、専用の命令付ける方が無駄かもしれん。
>>689 MIPS とかのこと? そりゃ inc なんて命令を付けなくても
addiu $1, $1, 1
で済むからでしょう。
単純な命令セットにすれば命令デコード処理が単純になり、パイプラインの
速度が稼げる。重複した命令を持つのは、アセンブラコードを書くプログラマ
にとっては書きやすくなるけど、ハードウェア的には単なるムダ。
ハードウェアは単純に代わりにコンパイル・アセンブル時に苦労しろ、そう
すれば安価で高速なチップが出来る、というのが RISC の基本思想です
から。
ただし実際問題として、それではあまりにアセンブラプログラマが大変なの
で、RISC の場合にはアセンブラが高機能になってます。たとえば MIPS で
32bit 即値をレジスタの設定するには
1. 即値を上位 16bit に読み込み、下位 16bit を 0 クリアする。
2. 即値を下位 16bit と or をとる。
と二命令必要なんだけど、アセンブラのソースでは
li $2, 0x003f0000
と一行です。アセンブル時にアセンブラがこいつを 2 命令に分解してオブ
ジェクトファイルに書き込みます。
>>690 CISC だと、良く使う命令を短いオペコードに割り当てることで、メモリ使用量を
節約するってアプローチはアリだわな。0 セットとか +1, -1 なんかは、その筆
頭候補でしょう。
さすがに最近は組み込みでも ARM クラスの CPU を使える案件が多いご時
世なんで、もはや「忘れられた技術」になりつつあるけど。
あと、フラグまわりがどうなってるかも関係すると思う。
694 :
デフォルトの名無しさん :02/11/10 02:39
ニーモニックがCPUごとに違うのってCPUの効率向上をはかるため、 なんですよね?
>>694 意味不明。
CPUの効率とは何か、なぜそういう思うのか述べよ。
>>689 Pentium 4では、なるべくinc,decをつかわずに、1をadd、1をsubとか書けって
インテルは言ってるよ。
x86 の(しか知らんけど)inc と dec は 厳密には add 1 と sub 1 とは違うよね。 キャリーフラグが立たない。 といっても、その違いを利用することは あんまないと思うけど。 最近の(といってもかなり前からだが)x86 は 特化された命令は手を抜いて 汎用的な命令を高速化する傾向にあるみたいね。 キャッシュの向上とHDDとメモリの容量増加で、 命令サイズ抑えるより汎用的な命令を強化する方向に動いてるのかね。
>>697 最近は x86 のような一見 CISC に見えるプロセッサでも、中身は RISC に
なってる。Pentium 4 なんかは x86 命令を、RISC 風の単純な命令に分解
した上で内部で実行してるんだが、このとき
単純・使用頻度のな命令は複数の RISC 風の命令に分解し、効率的に実行
複雑・使用頻度の低い命令は分解せずに、マイクロコードを読んで実行
となってるらしい。詳細な内部命令セットは公開されてないから、推測まじり
だけどさ。
プロセッサの周波数が GHz に達する今日、そうやって RISC の設計を採り
入れてパイプラインを深くしないと速度が出ないんでしょう。
>>695 的を射たツッコミだな。
>>694 それぞれの CPU には、それぞれの「効率」というか「目標」がある。
たとえば組み込み市場で広く使われている ARM であれば、ある程度の速度
に加えて
低消費電力
16bit メモリバスでも十分な性能を発揮できること
なんてのが重要な目標だし、一方でゲーム機向けの CPU であれば
32bit 浮動小数点演算が高速に実行できること
が重要。
目標が違えば、当然、最適な命令セットも違ってくる。あとは
歴史的事情、あるいは後方互換性
コンパイラ技術の進化
プロセッサ設計理論の進化 (パイプライン, スーパースカラー, etc)
なんてのも大きな要因だね。一時期 RISC で流行った遅延分岐命令なんての
は、パイプライン化の賜物ですな。
700 :
デフォルトの名無しさん :02/11/10 14:44
689です。
>>690 >アーキテクチャの小さなマイコンだとその分のオペコードを別の命令に割り当てたいかもしれん。
確かに!
>そうでなくてもいまどき実行速度も変わりゃしねぇし、オペランドの分メモリ節約する意味もねえし、専用の命令付ける方が無駄かもしれん。
そういえばそうなんですよね。重複命令っていう時点で無駄ですよね。
今はmov a,#0もeor a,aも変わらないとかいう話を聞いたことがあります。
>>691 >単純な命令セットにすれば命令デコード処理が単純になり、パイプラインの
>速度が稼げる。重複した命令を持つのは、アセンブラコードを書くプログラマ
>にとっては書きやすくなるけど、ハードウェア的には単なるムダ。
>ハードウェアは単純に代わりにコンパイル・アセンブル時に苦労しろ、そう
>すれば安価で高速なチップが出来る、というのが RISC の基本思想です
>から。
incやdecのほうがオペランドがすくないし、直値を扱わなくて済むから
addやsubより良いはずだと思いこんでいました。
でもハードウェアの視点から見れば確かに、incもdecも無駄ですね・・
>ただし実際問題として、それではあまりにアセンブラプログラマが大変なの
>で、RISC の場合にはアセンブラが高機能になってます。たとえば MIPS で
確かに、レジスタに数値をコピーするだけの処理に2行書くのは辛いですね
16bit同士の足し算の場合アセンブラソースは一行だけれども
レジスタ上では(?)
下8bit同士を足して桁上げが生じたらキャリーフラグがたって
それが上8it同士の足し算のさいに算入されるとかいう意外と複雑?な処理が
なされているという話しを思い出しました・・
701 :
デフォルトの名無しさん :02/11/10 14:46
689です。
>>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とメモリの容量増加で、
>命令サイズ抑えるより汎用的な命令を強化する方向に動いてるのかね。
らしいですね・・。
私は末端プログラマですがこういう考え方を質問されたときなど参考にさせていただきます。
皆さん非常に納得させられるご意見でした。有難う御座いました
>>689 1〜8のどれかを足したり引いたり出来る命令があるので
1だけしか足したり引いたり出来ない命令は意味がないのでありません。
r0,(a0)+ とか ++(a0),r0 とか
695さん 曖昧でごめんなさい。 なんでCPuごとにわざわざニーモニック(というか命令セット)が違うのか、と 疑問に思っていたのですが、計算速度の向上やメモリの縮小のため、 不要な命令を省いたり、必要な命令を加えたり、しているのだろう、と いうことに気づいたのです。あたりまえなのでしょうけど。 699さん ありがとうございます! そうです、目的を実現するために最適な命令セットを作っているようですね。 >歴史的事情、あるいは後方互換性 >コンパイラ技術の進化 >プロセッサ設計理論の進化 (パイプライン, スーパースカラー, etc) >なんてのも大きな要因だね。一時期 RISC で流行った遅延分岐命令なんての >は、パイプライン化の賜物ですな。 このあたりは勉強不足なので詳しくはわかりませんが コンパイラ技術や設計理論が向上すれば命令セットにも変更がある、というのはわかります。
>>704 まぁ意味は判らんでもないけどな。
ニーモニックって言われたら
同じ転送命令なのにCPUによってたとえばmovとかldという違いがなぜ生じるか
って意味に読めるからな。
CPU毎に違うのは方言だと思えばいいんじゃないかな…と思った
皆さんこんにちは。 かなりむかーし、デバッガでニモニック弄ってたのですが、 今、WIN2000で動くものをアセンブリ言語で作りたいと思った場合 アセンブラの他に何が必要なのでしょうか? アセンブラはMASM32と言うのをゲトしたんですがPSDKとDDKというのも あった方がいいのでしょうか? MicrosoftからはWIN2000用?は落とせないみたいなのですが。
>>707 お手軽に始めたいなら
Delphi 6 Personal (のインラインアセンブラ) + Turbo Debugger
あ、ありがとう。言い忘れました。 フリーで揃えたいのですがDelphi 6 Personal ってフリーでしょうか? DirectX使うのに、directX-SDK要るというのは分るのですが、プラット フォームSDKとDDKって何をする時必要なのか分らないのです。
Delphi 6 Personal はフリーでした。
test
test2
714 :
デフォルトの名無しさん :02/11/12 04:01
a
Delphi 6 Personal ってCじゃないのね いろいろ憶える事あるなぁ
BCC+NASMって手もあるよ。 アセンブラだけだとしんどいと思う
>>704 目的を実現するために最適な命令セットを作っているようですね。
なのですが、設計者の趣味(or信じた神様)の違いによるというのもあり。
フリーといえばgcc/gas/gdbとかどうよ。 イバラの道に見えるかもしれないけど、どのみちアセンブラは苦労するから大 した差じゃないさー。でも、gdbは他のIDEものより格段につかいにくいかも...
Delphiをアセンブラ代わりに使う方法 1、D6パーソナルをインストール 2、新規作成->その他->コンソールアプリ 3、begin を asm に書き換える 4、asm 〜 end 間にアセンブラコードを書く 5、F9 で実行する
いきなり、全てをアセンブラで書くのは厳しいという場合は 関数を作るといい 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.
BCC+MASM32+IDE(?)それとW2KVDDとDX8.1bSDK揃えました。(が、まだ物欲満足せず。(たわけ アセンブリ言語が難しいと言う前にアセンブラがごちゃごちゃで挫けそうです。Cもしかり。 TASMとMASMの日本語マニュアルないときついっす。
722 :
デフォルトの名無しさん :02/11/13 00:32
皆さん助言ありがあとう。 書籍は当時買った物が今でも推奨されているのはなんか感慨深いなぁ。 ここで挙がってないみたいだけど、 「8086 ASSEMBLY LANGUAGE」著.西村義孝 SOFTBANK は良書だと思います。
Packed File(600MB)中のファイル一覧を表示させ任意ファイルの出し入れ。 たったこれだけの事をやりたいだけなのに、先へ進めません。
>>725 それはアセンブラでやるようなことではないでしょう
>>726 これだけならおっしゃる通りです。僕もそう思います。
他のどの言語でも出来るでしょう。でも僕はアセンブラを覚えたいのです。
Packed Fileですがエンコードされてます。そしてそのロジックは公開されて
いるものでは無いのです。(多分)
プログラムをトレースしてデコード部分見つけたので、これを利用してファイル
出力するプログラムを作りたいのです。
ぶっちゃけエロゲーの吸出ししたいと。(w
>>727 そういう事なら、Delphiのインラインアセンブラを使えばいいでしょう。
デコード部分をアセンブラの関数にして、
入出力とフロントエンドをDelphiで書けばいいと思います。
>>727 susie plug-in にすれば、とりあえずデコード部分を関数化するだけですむな。
デバッグが少々難しくなるが。
730 :
デフォルトの名無しさん :02/11/15 23:51
age
731 :
デフォルトの名無しさん :02/11/17 21:26
bcc32の-Sオプションが一番見やすいとはどういうことやねん。 cl(VC6/VC7)はアセンブラ吐けないし、 gasはニーモックと変数名しか吐かないのに ボーランドはいい仕事してますなぁ
> cl(VC6/VC7)はアセンブラ吐けないし、 は?
733 :
デフォルトの名無しさん :02/11/17 21:35
736 :
デフォルトの名無しさん :02/11/18 05:44
メモリの実行モジュール領域を逆アセンブルし、それを修正しアセンブルってどうやったらいいのかな?
>>735 んなのマニュアル(オンラインだけど)見ればすぐわかる
割れ厨はMSDNのCDなんて落とさないだろ
738 :
Warez :02/11/18 08:29
MSDNは必須だろ.
>>738 同意。F1で出ないヘルプなんて。
とか思ったがJava使い出してブラウザ開いておくのも大使立てまではないと思った、。
>>736 追記
×どうやったらいいのかな?
○どのツールがお薦めですか?
ところでPentiumってどういう意味?
>>741 486の次だから586にしようとしたんだけど、数値だけだと商標とれなかったり
したので、penta (5の意味。ペンタグラムとかペンタゴンとかのアレ)に、
接尾辞 -ium をつけた合成語。
8bitCPUから続く保証の名
744 :
デフォルトの名無しさん :02/11/18 20:41
ちなみにPentiumは形容詞。なので、比較的オフィシャルな場面では、 いちいち、ペンティアムプロセッサといった表記をしている。 あと、Intelかどうかはわすれたが、すでにヘクシアムとか、 セプティアムはとられてるというのを聞いたことがある。
>>742 >>745 サンクス、あと
Pen1がi586
Pen2-3がi686
という解釈でいいのかな?
>>746 PentiumPro からがi686
P4も基本アーキテクチャ同じじゃないのか?
>>747 あれは別だろう。
CPUIDも違うし。
749 :
デフォルトの名無しさん :02/11/19 09:03
アセンブラのみでちょっとしたプログラムを組んで、 ゲームボーイエミュレータ(ex.rew)でグラフィックとか文字とかを表示させて その実行動作を色々試してみたいんだけど、 その辺のやり方を書いたサイトとかってどこかある? 色々探したんだけど、イマイチいいところがなくて…
750 :
デフォルトの名無しさん :02/11/19 09:07
>>749 に追加。
このスレを見るうちに、昔PC-8801FEのZ80アセンブラでプログラムを組んだことを思い出して
最近懐かしくなって、またやりたくなってきました。
751 :
bloom :02/11/19 09:16
752 :
デフォルトの名無しさん :02/11/19 16:32
ローテートを使用するのってどういう状況ですか?俺は使ったことないですけど・・ 普通のシフト&算術シフトで十分・・ あとAFフラグって桁借り、桁上がりが生じた場合にたつフラグなのでしょうか? 7+8=15とか 27+99=122とか
>>752 多バイトの数値全体をシフトしたい時など、最初の1バイトはシフト、後は
キャリーフラグを通したローテートを使う。
AFフラグは、ニブル(4ビット)毎のキャリーフラグのようなものかな?BCD
演算に使うと書いてあるけど。
>>749 「すずめ愛好会」で検索すれば資料は見つかる
アセンブラでゲームプログラミングの解説サイトがあるのなら、むしろ俺が知りたい
>>747 どうでもいいが、Pentium4をP4と書かれるとおいおい、と思うのは俺だけ?
昔、初代PentiumをP5とか言ってたな、懐かしい
P5 P24T P54C P55C P6 P4じゃないのか?
P6 と言われるとキャラメルキーボードを思い出す。
>>752 実際、たとえばMIPSにはローテイト命令がない(もちろんシフト命令はある)。
C言語にもシフト演算子があってもローテイト演算子はないわけで、なきゃ
ないでそれほど困らないということなのかな。
なんか日本語おかしい(汗
762 :
デフォルトの名無しさん :02/11/21 15:18
簡略セグメント定義ではだめな場合に完全セグメント定義を使うそうですが 簡略セグメント定義ではだめな場合ってどんな場合ですか?
>>752 AFは加減算後のBCDのアジャスト命令で、9より大きい桁があった時に立つ。
つまり、04hと06hを2進加算すると0Ahになるけど、これをアジャストすると、
アンパックBCDの場合 0100h になって、桁上がりがあるからAFが立つ、
ていうような感じ。
764 :
デフォルトの名無しさん :02/11/21 21:06
アセンブラやってみようと思い、MASM32というのをダウンしたのですが、コンパイル時点でつまずいています。 CODESEGMENT 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 でこけます。 ソースはホームページのサンプルを参考に打ったので間違いないと思うんですが、どうしたらうまくいくでしょうか?
ダウン?どこから?
766 :
manko_chinko ◆GLc2rpKRNM :02/11/21 21:09
linkerになんかオプションつけなきゃならんのでは
>>764 Warning no stack segment
というエラー(じゃ無いんだが)が出るとか?
メッセージはよく覚えてないので、微妙に違うかもしれん。
770 :
デフォルトの名無しさん :02/11/21 21:22
アセンブラの凄さを教えてください。
アセンブラを勉強できれば、他の環境でもいいのですが、調べてみたところ、あいにくこれしか判りませんでした。 他に、いい開発環境があったら、教えて頂けないでしょうか?
お願いします。アセンブラの利点を教えてほしいんです。
773 :
manko_chinko ◆GLc2rpKRNM :02/11/21 21:35
アセンブラじゃないと出来ないことは多い
>>771 アセンブラを勉強するだけなら D6パーソナルでいいんじゃない?
色々な方法で何回か試してみたんですが、上手くいきません。 C++とか入手して、__asm { } 内に記述した方が早いでしょうか;; インライン・アセンブラ とかいって出来るような事が書いてありました
ORG 100HってEXEじゃなくてCOMじゃなかったけか。 EXE2BINなりがいるんじゃないの。
779 :
デフォルトの名無しさん :02/11/22 00:21
>777ゲットおめ だれかアセンブラのいいところ教えてください。
$ ml /? Microsoft (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 以下略...
>>778 link通ってからexe2binじゃなかったっけ?
exeのままでも動いたような記憶があるが。
うーん、最近はnasmで間に合わせてるんで全然覚えてない。
>>778 ,781
昔のリンカはそうだった。
MASM 6以降からそんな必要は無い。
ml /AT aaa.asm
で一発。
リンクまでやってくれる。
>780でも先頭に出てるだろう。
>783 ニーモニックが違うけど gcc も加えておいてくれ。
>>777 僕もMASM32でやってみたけど同じくリンカでこけました。
オプションの意味もエラーの意味もわからないので打つ手無し。
TASM&LINKなら通りました。
僕も最近始めたんだけど(707っす)処理系擬似命令の違いで
かなり躓いてます。
プログラマの隠れ里はアセンブラにMASM32使ってるんでTASM
持ってないならそっちがいいかも。
786 :
デフォルトの名無しさん :02/11/22 07:24
シャープポケコンPC-G850Vを注文できるところ知りませんか?
>>785 オレも同じく。今日はヒマだから、これに取り組んでみるよ。
擬似命令で悩むなら
>>719-720 の方がいいと思うが?
配置やセッションの知識はC言語使えば判ってくるだろうし
>>787 インラインアセンブラは擬似命令通ります?
やりたい事をどうアセンブリ言語で組み立てるのか、アルゴリズムが解らないと
悩むのならわかるのですが、それ以前で躓いてます。
数学習いに行ったら英語で教えられたって感じ?
あちこちサイトまわったけどみんなそんな感じでした。
COMファイル作るのに”ASSUME、ORGはおまじない”ってのは愛嬌だと思えても、
説明無しに擬似命令使(いまく)って、
mov ax,4c00h
int 21h
じゃ、何を教えたいんだろう?と思ってしまう。
16bitリンカ
>>789 目的は?
1、COMの16bitバイナリを作りたい
2、アセンブラ言語を使い、勉強したい
1なら、確かに擬似命令を勉強しないとダメですね。 リンカの概念(セッション等)も必要です
2なら、D6パーソナルのインラインアセンブラで良いと思います。
擬似命令はDB,DW,および DD 疑似命令しかありませんから悩む必要はありません。
またDelphiはリンカまでを1パスで行いますから、セッションとかのややこしい概念も必要ありません
794 :
デフォルトの名無しさん :02/11/22 14:37
795 :
デフォルトの名無しさん :02/11/22 15:21
>>794 まぁCPUID書けばいい話だけどね
インテルのマニュアル見れ
>>793 デル厨うぜーよ。
古いけど"はじめて読むMASM"じゃだめなの?>MASMが使えない人
797 :
デフォルトの名無しさん :02/11/22 17:57
ATIとかPCのグラフィックボードを制御するにはどうしたらいいのでしょうか
>>789 DOSでやるか、ドライバを書くか、NTサービスを登録して I/Oをスルーさせるか
アセンブラの(・∀・)イイ ところを教えてください。
>>799 CPUの命令を直に使える。
ってそのままだが(w
ハードウェア資源を最大限生かせる のか?
ありがとー
>>801 >>792 ,
>>796 初心者対象にした「アセンブラでプログラミング」の解説サイトのサンプル
が通らないのです。処理系擬似命令の違いで。
>>764 さんが参考にしたサイトでも、NOWSMART ASSEMBLER,MASM32,LASMを紹介
しておきながらサンプルはTASMでやってたりするんです。
>>764 のリストですがTASM環境、MASM環境なら通りますが、MASM32では通らな
いのです。インラインアセンブラは問題外ですよね。
これは一例で、ほとんどがアセンブリ言語でプログラミングと称していても
サンプルは処理系依存の擬似命令を使いまくっているわけで、この為
Turbo/Macroアセンブリ言語でプログラミングになっていて、それでいて
その部分を説明していないんだから、何を教えたいんだろう?と思うのです。
ハードウェア資源っつっても今じゃOSの縛りがあるからなぁ(当然だけど) 窓環境とかで使うとすれば画像処理にMMX/SSEあたりを使うぐらいしか思いつかん スマン、当方エロゲヲタだ(藁
>>303 ある程度しかたないさ。「アセンブリ言語でプログラミングと称し」ている時点で、言語だもん。
「ニーモニックでプログラミング」なら少しはどうにかなるかもしらんし、ならんかも。
ええと
>>764 のコードには INT 21h があるけど、これって DOS環境でしか動かないんじゃ?
>>801 どうもありがとうございます!!
実行ファイル出来上がりました
A とでるだけの処理ですが、
print "A" や printf("A"); System.out.println("A"); なんかよりよっぽど感動がありました。
これから、一生懸命頑張ります!!
>>805 >ある程度しかたないさ。「アセンブリ言語でプログラミングと称し」ている時点で、言語だもん。
その言語の説明もしてないから
>何を教えたいんだろう?と思うのです。
と、言っているのでは。
どもっす。 MASMのデバッガはCODE VIEWですが、MASM32はどうなってるんでしょうか? オプションで吐くデバッグ情報って処理系依存ですよね?
810 :
デフォルトの名無しさん :02/11/23 13:35
GBDKでのアセンブル方法を良く知っている人いますか? もしいれば、とっても簡単でいいのでサンプルを示してもらえませんか? 自分でも簡単なプログラムを組んでアセンブルしたんだけど、 エラー(ORGやらRELやら)が出てきてもその内容が良く分かりません。 どうかよろしくお願いします。
>>810 Cのソースコンパイルするのとなんも変わらないですよ
GBDKのexampleフォルダの中にspace.sってサンプルとmake.batがあるから、それを見てみるといいです
昔、X68k 触ってたとき、scd.x とかいう、アドレスレジスタや、データレジスタ、スタックポインタの値が、一目でわかるツールがあったのですが。そういったものは、市販になるのでしょうか? デバッカがあって初めて、動きをが把握できると思っているのですが・・ ご指導お願いいたしますm(__)m
かぶちゃったぁ。 809も僕なわけですがMASM32ならCode View系のデバッガが欲しいとこ。 TASMならTurbo Debuggerでいいんだけど。
LASM体験版ならデバッガもついてくる。 学習用ならこれで十分かも?
デバッガで1ドットづつ描画されるのを見た時は感動したなぁ。 RATSでIPLから追っかけてた日々が懐かしかったり。
MAsmEDの件は解決しました。 これ状況感知型ヘルプって言うのかな? わからない擬似命令とか選んでF1でヘルプ見られてとってもグッ! お騒がせしました。
820 :
デフォルトの名無しさん :02/11/24 22:38
PC/AT互換機とういうか普通のPCで x86のout命令使いたいんですが、 ポート表とか解説してあるサイト知りませんか?
>>811 どうもありがとうございます。
アセンブラソースを発見し、エミュレータで実行もできました。
ソース内容を見て研究してみます。
また分からないことがあったら質問させてください。
825 :
デフォルトの名無しさん :02/11/27 00:35
826 :
デフォルトの名無しさん :02/11/27 20:04
.code 16 は 「ここから16bitステートのコードを書きますよ」という意味だと思いますが .textはどういう意味なんでしょうか?
827 :
デフォルトの名無しさん :02/11/27 20:07
>>827 ARM7TDMIなどでは、普通
ARMステートではR0-15
ThumbステートではR0-7
を使う
ThumbステートではR8-15をHighレジスタH0-7として一部の命令で使用可能。
これと区別するためR0-7をLowレジスタと呼ぶこともある。
>>826 対象のアセンブラはなんだ?
普通「ここからtextです」ね。なお、textというのは命令のことなのです。
MASM5.0で組んでたらアセンブル中に戻ってこなくなった。仕方なくリセット。 エラーメッセージすら出ないし、アセンブラも落ちることってあるんすね。(DOSなのに…… 6.0買えってことなんでしょーか。(´・ω・`)ションボリック
フリーになってmasm32としてでてるよ
dpmi 使えば動くと思うけどそこまでせんか。
>>835 dpmiだけでは無理だった気がします。
wdosxとかいうのと併用すれば動くかもしれませんが。
そこまでするならLASMかBorland C++ Suite あたりの 安いアセンブラ買ってきた方が早い気もするが。
MSサイトにMASM5.0 置いてありました。(w 探せば6.0とかもあるかも。
839 :
デフォルトの名無しさん :02/12/02 09:03
e**(eaxなど)とaxなどeのつかないものの違いは、具体的にどのようなところなんでしょうか。
>>839 オペランドサイズが違う。
E**は32bit演算、Eが付かないのは16bit演算。
ダッタトオモウ
841 :
デフォルトの名無しさん :02/12/02 16:15
うえーん.bssセクションに配置キボン( ●Д●)
842 :
デフォルトの名無しさん :02/12/02 16:40
次スレは アセンブラ・・・(゚д゚)ウマー か?
>>839 .3 2 1 0 :バイト番号
□□□□ eax
■■□□ ax
■■■□ al
■■□■ ah
白いところを使うと思いねぇ。
x86-64では64bit長はraxとからしいですな。
845 :
デフォルトの名無しさん :02/12/02 21:03
MSでDDKってどうやって落とすの? 誰か教えて!
>>846 ありがとうございます。
英語ですか・・・ ちょっと難しい・・・
>>846 そこからは落とせなくなったはずだが。
Win98DDKならこのスレに直リンがある。
EAXの上位16ビットを使いたいなぁ シフトするのめんどいし
>>849 禿同。
今はパーシャルレジスタストールなんてのがあるので、あまり使いたくないが。
386の頃には欲しかったな。
せめて386でバイトスワップ命令付けといて欲しかったよ。
>>850 P4なら原則としてパーシャルレジスタストールはないよ。
852 :
デフォルトの名無しさん :02/12/04 21:29
thumbステートではr8からr15を、一部の命令でしか使用できないのは 何故なんでしょうか?そのほうがコードが小さくなるからですか?
Thumbだと命令コードに16bitしか取れないから、単純にレジスタ番号を 指定するためのビット数が確保できなかったからじゃないの? 結局「コードが小さくなるから」ということになるが…。
アセンブラってなつかしいなぁ。 PDP-10でガリガリやってた時代を思いだすよ。 ただそれだけです。
>>838 masm5.0ってどこにあるんすか?
引越しのときexe2bin無くしちゃって落とせるんならホスィ
ヒントだけでもキボン
すいません自己解決しました win98ddkに入ってるのね…… しかもファイル名も変わってるし
でもこれ6.Xっぽいよー 16bitコードはねられるし(ノД`) 再度キボン
16bitDOS版NASMもあるわけだが…
859 :
デフォルトの名無しさん :02/12/05 20:05
kansuu: push{lr} pop{pc} という関数を呼ぶばあい 通常は 1.bl kansuuと書くんでしょうが 2.b kansuuでも大丈夫そうな気がしてしまいます・・ だって kansuuのあたまでlrにプログラムカウンタを保存して, 最後にそれをpcに戻しているわけだから・・ でも実験したら、駄目でした。 2.の場合は、b kansuuの処理を書いた関数の更に上の関数に戻ってしまう・・ なんでなんでしょうか?
ARMの話だよね? push {lr} は「lrにプログラムカウンタを保存して」じゃないぞ。 lrをスタックに積んでる。その後、pop {pc} でスタックの値をpcに戻すので、 結果的に、kansuuが呼ばれたときのlrの指すアドレスに飛ぶという動作になる。 だから、blだとちゃんとリターンするのにbだと更に一つ上の関数に戻る、という 動作はまったく正しい。
861 :
デフォルトの名無しさん :02/12/06 00:02
アセンブラの勉強をしようと思っています。 「Cユーザのための実践アセンブラ」(近代科学社) 「8086マクロアセンブラ入門」(技術評論社) どちらの本がいいでしょうか? それともアセンブラ経験の無い自分はCASLなどから始めた方がいいんでしょうか?
>>861 x86?
俺は「はじめて読む8086」かな
まぁ今じゃWeb上からでも解説してるところあるし
なんだかんだで定番れすな。 秋葉原にPC関連専門の古書店があったらいいな、と思う今日この頃。 古い雑誌とか読みたいよ
864 :
デフォルトの名無しさん :02/12/06 21:18
859です。 >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だと更に一つ上の関数に戻る、という >動作はまったく正しい。 ただしいのだとは思うんですけど・。実際こう動いているわけですし・・
lrの値はbl命令で決まるはずだが?
<Enter>キーについて教えてください たとえば会計プログラムで "合計金額はですか?"→"500" 500の後に<Enter>キーを 押すと次のコマンドに移るといったようなやり方どうやるんでしょうか?
すいません、書き方変でした。DOS 8086で プログラム実行したときに下記のような風になるよう、 入力を求められたあと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 ---------------------------------------
>>869 漏れにはそういうレベルで悩んでるようには見えないなぁ。
>868は自分で書けるところまで書いてあぷ汁。
つーか、なんでアセンブラなのか ? オブジェクトサイズをすごく小さくしたいの ? 単なる興味か ? まさか、C はわからないとかか ?
872 :
デフォルトの名無しさん :02/12/07 12:53
>>865 :デフォルトの名無しさん :02/12/06 21:42
lrの値はbl命令で決まるはずだが?
ありがとう、この言葉が聴きたかったのかも!
b で飛んでも、lrがかわらないから、アノ動作なのですね!
すっきりした!
873 :
デフォルトの名無しさん :02/12/09 21:44
揚げてみるテスト
874 :
デフォルトの名無しさん :02/12/09 23:40
いま「はじめて読む486」読んでるんですが サンプルプログラムがdos.hとか使うんでサンプル試せないんですよね、 VC1とかに似たような環境ってフリーで構築できませんかね?
876 :
デフォルトの名無しさん :02/12/10 14:15
DOS環境下にてのソースです。(MASM) MOV AL,08H MOV AH,35H INT 21H っていったいなにがおこるのだ!?
35H:割り込みベクトルの読み出し 呼び出し AL 割り込みベクトル番号 戻り値 ES:BX 割り込みベクトル
876=878です。 どうやら、タイマーを作っているようです。 でも、システムタイマーを無理やり使用している ようにしか読めんソースなんだがなぁ〜 ハァ鬱だ! しかも.comファイルだし、.exeにして デバッガー使おうかな?.asmで15000行超だって。 ぐちってしまった、スマソ また助けてください。
>>879 MS-DOSの時代は、それが普通です。
漏れはシステムコール使うのめんどくさいんで、
割り込み禁止にして直接読み書きしていたが。
このスレには凄い人達がいるんですね・・・ 私?私はマ板で業務系とののしられています。
アセンブラってなんかイイよね
アセンブラは疲れる。
アセンブラはしつこい。
アセンブラは用済み。
886 :
デフォルトの名無しさん :02/12/12 18:00
アセンブラ素人です。 今簡単な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が立ってるみたい なんですが、どういう仕様になってるんでしょうか?
888get!!
>>887 あ、盲点でした。
ありがとうございます。
890 :
デフォルトの名無しさん :02/12/13 15:03
Z80ニモニックで、Aレジスタの下位4ビットが OR240 DAA ADDA,160 ADCA,64 としてASCIIコードでの“0..9,A..F”に変換でき るってのを暗記してたが既出ですかね…? #x86ニモニックにもちょっと直せば使える 「そうかDAAってこう使うのか!」とリア厨の時 感動したのが懐かしい…死半世紀前(泣)
げ。コピペタブが飛ばされた。鬱死 OR 240 DAA ADD A,160 ADC A,64
892 :
デフォルトの名無しさん :02/12/13 15:36
うちの98ではnasmの0.98.35でアセンブルできない…… nasm -oobjexe.obj -fobj objexe.asm これじゃいかんのかね。 0.97ではうまくいくんだけど、 これからマニュアル読むyo! optionが変わったのかもしれないし
>>893 とりあえず、どの「98」なのかわからん(藁
>>893 nasm 0.98.35にはjmp/call far labelがエラーになるというバグ有り
CVS版をコンパイルしよう
>>894 PC9821ね、スマソ
>>895 どうもです。今、汎用でフリーのアセンブラを9801/21のDOSで
試してるんだけど結構動きますね。
AT機WIN上の98エミュレータでも動いたり(遅いけど)、微妙に驚愕っすよ。
897 :
デフォルトの名無しさん :02/12/17 21:15
最初にaddとかmovの命令をつんだMPUって何?
>>898 少なくとも 8008 より 4004 の方が早いと思うが。
最初に好きとか嫌いとかいいだしたCPUって何?
わらえばいいのか?
902 :
デフォルトの名無しさん :02/12/18 02:42
スレ違いなのかもしれませんが・・ 厨房プログラマです。 私はプログラム書くとき、コメントとか改行をこまめに入れる癖が あるのですが、私のプログラムを読んだ同僚厨房から 「コメントや改行たくさん入れるのはパフォーマンスが 悪くなるんだぞ」 と馬鹿にされました。この厨房の間違いをアセンブラレベルで 証明しようと「パターソン&ヘネシー」とかひっくり返して 探したんですがいい例がみつかりません。 自分が厨房なのは百も承知なのですが、もっと厨房なやつから ばかにされたことが悔しくてなりません。 どなたか、私のかわりのにこいつの間違いを正してやってください。 それともやっぱり私の方がもっと厨房なのかな?
中学生でパターソン&ヘネシー 読んでるの?んなわけないよな 読んでてそんな質問するなら、1万どぶに捨てたようなもんだ
904 :
デフォルトの名無しさん :02/12/18 03:30
>>902 昔のbasicの時代の遺物でなけりゃ、奇妙な勘違いだね。
同じソースに無駄にコメントや改行入れてコンパイルして、完全に同じobjが作られる事を見せてみたら?
>>907 ちがうだろ。今でもインタプリタな言語(今風だとスクリプト言語)だったら遅くなる。
コンパイラが実行形式(Javaのバイトコード含む)吐く言語なら遅くならん。
だが、インタプリタであっても初回の解析時に構文解析木やバイトコードに変換する
処理系が多いから、ループや関数の二回目以降の実行速度は変わらなくなる。
え?アセンブラのソースの事じゃないの? スクリプトならそりゃ別の話だね
>>909 >>902 は「アセンブラレベルで証明したい」と書いてるだけで、
そのプログラムがアセンブリ言語で書かれてるとは書いてないが?
アセンブリ言語のソース読める奴が、アセンブラ/コンパイラ型の言語で
コメントや改行増やすことで遅くなるなんてアフォな勘違いするとは思えない。
>>910 確かにね…。
その発言者が「どの段階で」遅くなるから云々
なのかがわからないとなんともかんとも。
一応自分の知ってる範囲でモノを述べると、
M80やMASMはコメント&改行が増えると明らかに
アセンブル速度は低下するが、その幅は
マクロを多用した場合の比ではなく誤差の範囲(数%)。
BASIC(N88やMSX)では最初の1回目の実行に
関しては僅かに遅く感じるが、これも誤差の範囲(数%)。
PerlとJavaの場合は数万行ものソースでも食わさないと
コメントの有無による違いがほとんど体感できない。
Rubyについては常用してないので何もいえない。
C/C++の場合はプリプロセスに付いてのみ負荷が掛かってるものと
思われるが、今時のマシンでは気にする暇も無く処理終了w
#最適化フェーズのほうがよほど負荷掛かってると思うぞ。
突然ですが、 アセンブラってXeon、P4サポートしているのあるんですか?
8086でよぉ、debugでさぁ、コメントってぇ、入れることで禁のぉ?
>>914 DOSの? とりあえず出来ないって答えになるけど
>>913 聞いた事ないが…。
いざとなればdbでコードを埋め込む技がある。
>>913 MASM 6.15 なら対応してるんじゃねーの?
>>913 MASMはいまや無料配布(DL可)だよ…。
Windows??DDKとかって奴に入ってる。(英語版)
で、最新のCPUにはパッチを当てて対応する。
>>911 ツーか、ネタだろ。
そんなことも説明できない厨房が「アセンブラ」スレなんか見るわけないと思うぞ。
パッチ当てだと 6.14 にしかならんわけだが。
そういえば今日本屋で見かけた本にも MASM 6.14 の入手法は書いてあったが、 6.15 の入手法は書かれていなかったな。
>>907 ,908,911,919
説明たりませんでしたね。
>>911 さんのカキコがイメージしていた回答に近いです。
ありがとうございました。
私はロータスのスクリプトを使ったアプリ開発をやっています。
当然コンパイラや中間コードをはくインタプリタは念頭にありません。
GUIのアプリで、長くて1000ステップくらいのコードによる処理
をイメージして質問させていただきました。
インタプリタがどういうふうに構文解析をするのかまで理解が
行き届かなかったのでこういった形で質問をさせていただきました。
お騒がせしました。
923 :
デフォルトの名無しさん :02/12/19 00:40
>>922 N88-BASIC 辺りだと、
110 FOR I=1 TO 10000
120 ホゲホゲ
130 NEXT I
より
110 FOR I=1 TO 10000 : ホゲホゲ : NEXT I
とした方が速いつーのが有ったが。。
コメント無し&マルチステートメントで速度を稼ぐなんて
20年前の話だね(w
924 :
デフォルトの名無しさん :02/12/19 00:48
>>923 その速いつー話で、いやに仕変しにくいソースが
どれほど転がっていたか...
最後に担当者居なくなって、派遣社員の漏れが保守されられたよ。
仕変?仕様変更?
927 :
デフォルトの名無しさん :02/12/19 01:48
>926 あなたすごいです。 横からですけど、いただいまた^^ 自分も6.15探していたので、かなりありがたいです^^ 本当にありがとうございます!
vcppとvcpp5の違いって何?
Service Pack 4とService Pack 5の違いw
>>929 サンクスって、何でvcpp4じゃないんだろうと思ったり…
突然ですけど、 MASMを使ってwindows9x,2000,ME,XP等で動作するTCP/IPを使って 通信をサポートするDLLを作りたいんですけど、 192.168.1.1(クライアント)から192.168.1.2(サーバー)へポート1024でhelloと送信するプログラムの クライアントがわの作り方を調べたいんですけど、 作り方を説明してるようなサイトを知っていたら教えてもらえないでしょうか。 サンプルソースを持ってる方いたらもらえないでしょうか。
>>931 何故にアセンブラで?
高級言語でソケット使えば簡単にできる物を
わざわざアセンブラで苦労して作る必要があるの?
1つ、アセンブラが好きだから。 2つ、ファイルサイズを小さくしたいから。 3つ、高級言語では俺の力ではゆうずうが聞かないから。 4つ、お遊びで、独自言語(コンパイラ)を作ってるから、それにも使いたいので。 などなど 意味わかんない質問してスミマセン。
自己満足。なんかすごそうだろ。俺アセンブラ使って作ったんだぜーって(藁
実際はただの無駄骨なだけなんだけどな(激藁 まあ無知なうちに一回ぐらいやっておくと二度と馬鹿なことはしないでしょ。
>>937 無意味な煽りは、やめなはれ
ここはアセンブラのスレで
>>931 の書いてる事に落ち度は無い
>>937 すごいことだと思ってません。
たとえばアセンブリ言語アセンブラを作ったとしても、
それは1つ1つの命令をデバックすれば作れるものだから、
すごいというより、ただの根気と初心者以上の知力があれば出来るかと思う。
>>938 はい、そうですね。
自分にもっと力があればこんなことはやろうとしないかも知れませんね。
お願いです、どなたか
>>931 の質問に答えてもらえないでしょうか。
あ、トランスポート層のプロトコルはUDPでもいいです。
>>931 糞2chなんかでは聞かない方がいいよ
ヴァカが多いから
探せば C で書かれたサンプルソースは見つかりそうなものだが、 アセンブラのはそう簡単には見つからんだろう。 それから C + Win32API で書かれているものを ASM + Win32API に 書き直したところで、ファイルサイズが劇的に減るとは思えない。
>>943 知らないなら書くなやカス
WinSock逆アセして分かったよ
>>944 おぉそんなものがあるんですか、早速逆アセンブラして、読んでみます^^
たすかります〜^^!
>>945 ありがとうございます^^;
ペコ↓m(_ _;)m↓ペコ
931の目的のためにWinSockを逆アセするヤツはただの馬鹿。
>>931 取りあえず、C で書いて、アセンブラソースに落として、それを改良するのが手っ取り
早いと思う。
>>949 TCP/IPのドライバを書け?と、、
call命令しらない房やかな?
普通にWinSockを呼び出せばいいだけのことじゃないのか?
>>949 もそういう意味で書いていると思ったが。
WinSockをCから呼び出すサンプルソースは探せばすぐ見つかるから問題はないだろう。
>>931 がドライバも書きたいと思っているのなら止めはしないが。(w
ファミコンのソフト組んだ事ある人いませんか?(65C02?)
953 :
名無しさん@Emacs :02/12/20 04:17
>>952 もう10年以上前なんで忘れてっけど。
6502ですた。たすかa,x,yの3つしかレジスタが
なかた様な…
スーパーファミコンのCPUは65816というものでした。これは6502の16ビット版 とも言うべきもので、6502のエミュレーションモードも持っている変態CPUです。 アキュムレータも8ビットのA,B二本(但しBは交換専用)で使うか、16ビットの C一本で使うかの選択ができます。16ビットCPUなのにレジスタがとても少なく、 6502と同様ゼロページを積極的に活用する事でそれを補っています。 スーパーファミコンのソフトはほとんどアセンブラで書かれていたというから 驚きます。
逆アセンブラしたらcall KERNEL.506ってコードがあるんですけど、 これはkernel32.dllを呼び出してるんですか? 引数は506って意味ですか?
あと、逆アセンブラみなさんはなにを使ってますか? フリーの使いやすい、お勧めなどあったら教えてください。
nasmについてくる奴 masmについてくる奴 bcc32とかボーランドについてくる奴 VCについてくる奴 GNU binutil の objdump 以上
958 :
デフォルトの名無しさん :02/12/20 12:10
diswinのソースが少し勉強になった
>>955 kernel.dllの序数506のエントリを呼んでる。
番号→名前の調べ方は忘れた。.def見れば書いてあった様な気がするが。
ちなみに、引数はそんな所に出て来ない。
>>958 Apple][でマシン語のプログラムを組む時、Apple-Basicがゼロページを
食い荒らしていて、結構面倒かった記憶がある。
ところで次スレ建てなくて良いのか?
>>950 何故にいきなり「ドライバ」が出てくるのか ?
何故に call 命令しらないと言われるのか ?
2ch はわからんことだらけだよ。
>>963 そのうち「これが電波なんだ」ってわかるようになるよ。安心すれ
>>960 あの〜、うちのPCはkernel.dllがないんkernel.dllですけど・・・・
あるのはkernel32.dllだけなんですけど??
どしてかな??
あ!そこに引数あるのはINVOKE命令だった^^;
callの時はpushでやるんか・・・・
>>949 あの、質問なんですけど、どこからどこまでCで書いたらいいって、いってるんですか?
1から全部書けと言うなら、本当にドライバも書けと言ってるようなものですよ・・・
>>957 masmについてくる、逆アセンブラって名前なんでしたっけ?
>>966 > masmについてくる、逆アセンブラって名前なんでしたっけ?
masm持っていれば分かるでしょ。
それともMXでも使う気ですか(ワラ
>あの〜、うちのPCはkernel.dllがないんkernel.dllですけど・・・・ あるのかないのかよくわからん…
>>968 あw意味分かりませんね^^;
すいません・・・
俺のPCにはkernel.dllがなくて、kernel32.dllしかないといいたかたのです。
ごめんなさい。
>>967 DUMPPEなんですかね?
MXっていっても、MASMってフリーですよね。
>>969 ドライバまでは書きたくないんですけど(書けない)、
そのぎりぎりのところまで掘り下げて、やってみたいんです。。
後、
http://www.nakka.com/lib/inet ←ありがとうございます、参考にさせて頂きます。
>>ALL
お世話かけてすいません。
そしてありがとうございます。
>>966 > あの、質問なんですけど、どこからどこまでCで書いたらいいって、いってるんですか?
> 1から全部書けと言うなら、本当にドライバも書けと言ってるようなものですよ・・・
お前アフォか ? なんでアセンブラ → ドライバまで書かんといかん と短絡的に考えるんだ ? (
>>950 と同類のデムパか ?)
C だろうが アセンブラだろうがどこまで書くかは、プログラマ次第。
アセンブラはドライバまで書けるけど、書かないといけないわけじゃないぞ。
1. winsock 使って、connect()/send() の世界でやる。
2. winsock も実装してしまい、世界一効率的な TCP/IP の実装を目指す。
3. ドライバまで、自作して NIC の機能全てを使い切る。
どれでも好きなのを選べよ。
厨房は気が短い。 馬鹿は一生馬鹿のまま。
>>975 > 2番を目指したいですね。。ファイナルアンサー!!
まあ、先は長そうだけど、頑張れ。
TRY PC別冊って内容的にどうかな?
980 :
デフォルトの名無しさん :02/12/25 16:09
CP/MのWIN2000エミュレーターってありますか? あれば、教えていただきたいのですが!!
CP/Mで Win2000をエミュレートするの? それは無理
pen3/セレ上でのPen4[SSE2]のエミュれーターありますか?
>>980 まあ言いたいことは一応(^^;
ファイルシステムまでコミでCP/M80を動かす方法は、自分は知らない。
でもMSXPlayer+MSX-DOSで、ほぼCP/M80互換になるんじゃ?(メモリ空間狭いが)
# MSX版 M80.COM その他まだ持ってるなぁ。
>>981 ゴメン書き方が悪かったみたいです。
要は、Win2000上で、CP/Mファイルをアセンブルしたいわけで・・・・
>>983 以前にWin95,98上でエミュレートするのは持っていたのですが、
2000上になると、FCBエラーで動作しないわけで、ただコンパイルしたいだけ
なんですが、.A86→.H86 自分で作るしかないのかなって作れるかどうかは不安!!
>>984 そういうことか。
DOS用でもFCB互換コール使わないものがあった様な気がする。
どんなのだったかなー。全然記憶にねーよ。
Win2k上のDOSemulator上のCP/Memulatorでアセンブルするというのはどうでしょう?
>>986 その手がありましたか! 一度やってみます。
ありがとう!