アセンブラヽ(`Д´)ノモルァ

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
全スレ
アセンブラ… (・∀・)イイ!
http://pc.2ch.net/test/read.cgi/tech/1002267809/
2えへへ:02/03/25 02:45
2げとずざ
よくやった
ほめてつかわす
おつー?
4デフォルトの名無しさん:02/03/25 02:47
ちくしょー!!1000取られた
くっ・・・このチキンがぁ・・・。
6えへへ:02/03/25 02:48
結局
前スレに次スレのリンク貼るの忘れたな>1
まあしょうがないか
7えへへ:02/03/25 02:49
しかも
全スレって、アホか。
81000:02/03/25 02:49
数合わせようと思って996で自分であげてしまった!
計算間違いだった・・・。最後に

     v       w
    (゚ω゚)/ \(゚δ゚)<ジーンギスカーン!
   /(  )    (  )ゝ
     <'\    / >

やりたかったのに。

91:02/03/25 02:50
Σ(゚Д゚)ソウダッタ
騙された・・・むしろ犯された・・・2ニ
乙かれ>1
11デフォルトの名無しさん:02/03/25 02:56
       v
     <(゚ω゚) <うっ!
      (  )\        
      /'>

       v
      (゚ω゚)> <はっ!
     /(  )        
       <'\

       v
     <(゚ω゚)> <うっ!
      (  )        
      /'>

       v
      (゚ω゚)/ <はっ!
     /(  )        
       <'\

     v       w
    (゚ω゚)/ \(゚δ゚)<ジーンギスカーン!
   /(  )    (  )ゝ
     <'\    / >

12デフォルトの名無しさん:02/03/25 02:57
     v       w
    (゚ω゚)/ \(゚δ゚)<心スレワッショイ!
   /(  )    (  )ゝ
     <'\    / >
13警告:02/03/25 03:44
前スレからながめていうのもなんだが
かなりのアホが混じってる
情報理論くらい習ってからものを書けと言いたくなる連中が多い。
間違いだらけだぞ。初学者は注意したほうがいい。
初学者がいきなりアセンブラやらされる場面は減ったと思うがなー
>>13
せめて1つぐらい、どのレスが間違ってるのか指摘してくれよ。

> 注意したほうがいい。

これだけじゃ何が正しくて何が誤りなのかわかんねーじゃん。
そんな無意味な警告イラネーヨ。
アセンブラを知っているとCのポインタの概念はさっと理解できる。
そういう意味からも知っておいて損はないと思う。

ただ、特殊な分野を除いてアセンブラでプログラムを組みたくない。
能率が悪すぎる。
1713:02/03/25 04:09
>>15
わざとだよ。長々と有用な警告して私の何の得になる?
具体的に挙げると昔から煽りあいになるだけだから、自分で推して知れ。
ただ間違いがあることさえ気づかないのは問題だからな。それだけだ。
1813:02/03/25 04:12
17は騙りです。

すみません。むしゃくしゃしていたのでああ言いたかっただけです。
今後気をつけます。
>>17
わざわざ「一つぐらい」って書いてるだろ?
誰も長々と有用な警告すれとは言ってないよ。

>>私の何の得になる?

だからそんなあんたの警告は無意味だって言ったんだ。
2017:02/03/25 04:15
すでに騙り煽りが始まってるしな。(ワラ
( '_') たぶん自分ができるからって自慢したかっただけなんだろうね。

    ('_' ) ああ、そのにおいがプンプンしたレスだったもんな。
>>18の騙りは、>>20

>すでに騙り煽りが始まってるしな。(ワラ

を言うための>>17の自作自演に1000カプリコ
アセンブラ(゚д゚)ウマー
チチンプイプイ
アセムプイ!

(゚д゚)ウマー
騙り煽り厨発生か・・。春だな・・。
沈むまで待とうや。
27デフォルトの名無しさん:02/03/25 07:17
でー、どれがおかしなレスだって?>13
一個ぐらい上げてくれよ
「前スレ」
「まえスレ」「ぜんスレ」
アセンブラ…(;´Д`)ハァハァ...
>13 典型的な傲慢オナニーレスだね。
   「警告」って・・・。バカジャネーノ。
31デフォルトの名無しさん:02/03/25 17:17
GNUのアセンブラ処理系ってどこで手に入りますか?
GAS NASM で検索して下さい >.31
3331 :02/03/25 17:45
ありがとうございまーす!
つーかモルァってなんだよ。
まるでアセンブラやる人間が変人ばかりみたいだ。

35デフォルトの名無しさん:02/03/25 18:24
ワラタ
変人だと思いますがモルァ。
ぴっぴっぴっぴっぴっぴってさぁ
うるせーんだよ!ばーか!
時計か?あん?まんこか?
みんこか?むんこか?

まんこ
みんこ
むんこ
めんこ
もんこ
ま〜〜ん〜こ〜〜〜
38>37:02/03/25 18:57
常人がキティのフリして書き込んだらイタイ。
自分の厨房っぷりをさらけ出しているようなもんだ。
Oh!Bakaガ イパイ イマスネェー
40バイク板の鬱な藁人魚:02/03/25 19:22
前刷れで質問したものですが、回答が得られなかったので
再度書き込みますスマソ

いま、PC/AT用のM$-?OsのIPLを解析しているのですが、
INT 1Ehの飛び先アドレス([0000:0078]:[0000:007A])をポインタにして
参照される、DISKBIOSへのパラメータブロックの内容が分かりません。
ExDEBで覗いてみても、ベクタ1EはNoSpecialUseと出てきて参考になりません。
どなたかDISKBIOSパラメータブロックの詳細をご存知の方
いらっしゃいましたらお教えください。
ヨロシコお願いします。
41Mukiki:02/03/25 19:47
>アセンブラやる人間が変人ばかりみたいだ。

今の時点では変人しかいませんが、なにか。
ちなみにわし変態です。(w
初学者用情報集

MASM32
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
>>40
http://www.tkcity.net/~nobusan/index.html
のどっかでIPLだかMBRだかの解析をしていたような気がします。

あと、8.4GBの壁を越えるためのBIOSだましのソフトを解析するのもよろしいかと。
もうやってるかもしれませんが。


関係ないけどこのスレッドがx86限定な名前じゃなくてちょっと安心しました。。
44 :02/03/26 00:36
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
なんだかなぁ
そんなもんですかね。シミジミ
複雑な気分っス
>>40
Ralf Brown's Interrupt List
http://www.ctyme.com/rbrown.htm
OSが組めるなら読解も楽勝でいけるでしょう
どうも有り難うございます(^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に読み換えてください。
5443:02/03/27 00:19
>>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
っで、どんなのキボーンするよ??
>>62
Xサーバ
>>63
藁藁
まぢ?
Unixはなぁ。苦手だなぁ。
VGAとX鯖の仕様を全部分かりやすく教えてくれたら、(紙媒体キボーン藁)
コーディングはするけど。

もうちっと使いやすいのにしようぜ。
って、漏れ以外のひとに、今更使い道あるのか知らないけどねぇ。
65デフォルトの名無しさん:02/03/27 22:55
repの使い方おしエロィ
>>65
本買ってきて勉強汁!ゴルァ
といいたい所だが、
rep リピートプリフィックス
    直後のストリング命令をCXが0になるまで繰り返す
とりあえず、アスキーの”はじめての8086”でも買ってきなさい
若しくはフリメをさらしなしゃい。いろいろ教えたゲルから。
IBM-PC/ATの割り込み/メモリ関係は定番文書Intrrupt Listを見るべし。
INT 1Eも書いてあるよ。

http://www.vector.co.jp/soft/data/prog/se015018.html

VGA/V-TEXTはフリーソフト書いたり、仕事でもいくらか書いたことがあるから
それなりにはわかるけど。。。
>>67
えっと、これは>>49とおなじかな?
なにはともあれ、どうも有り難うございます(^o^)/cd10
6967:02/03/28 00:27
がいしゅつでしたか。スマヌ
>>66
ありがとぅ
>>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
75記念カキコ:02/04/02 11:43
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
76記念カキコ:02/04/02 11:43
ei忘れてるし。
x86や68kでは何とも思わないが、Z80のニモニックを小文字で書かれると
妙に違和感があるのはなぜだろう…。
78新米:02/04/02 15:18
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は面倒
80鬱な藁人魚:02/04/04 17:44
取り敢えず、ファイルシステムがけてーいした
DOSのFATとDIRエントリをファイルとして残しつつ、
独自のファイルシステムを載せるという、○刃の?
メンドクサイ藁
あと、昨日IntelのPentiumファミリーデベロッパーズマニュアル下巻
を自費にて購入。読みづらいけど、使える。|(^o^)/"イイ!!
メンドクサイのがお好きな人には尚お勧め(藁
81アセンブラAX:02/04/06 20:27
やっぱ 基本はアセンブラですよね♪
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(概念の全ては言いすぎだろう…)
>>85
高級言語の概念以外はな
nopって何のために入れるの?

厨な質問でスマソ
89デフォルトの名無しさん:02/04/07 10:57
いろいろあるぞ
何かの時間待ち(I/O, FPU, etc)
delay slotに入れるものがないときの詰め物
あとでパッチ当てるための遊び
ループの先頭のword alignのためのpadding

nopは効果のない命令にアサインされていることもある
例えばx86では nop と xchg (e)ax, (e)ax は同じオペコード。
9089:02/04/07 12:46
>>90
ありがとうなかなか面白いね。
アセンブラ覚えてみようかなぁ。
>>90
Exdebで検索掛けるとExdebの作者が公開している資料もろもろ
が手に入るよ。Exdeb自体も結構使えるからお勧めっス
バグがあったような気もするが・・・
9289:02/04/07 14:23
よし!手始めに今日届いたウイルスを解析しちゃル!







やっぱり地道にいこう。
93アセンブラAX:02/04/08 14:29
インラインアセンブラ使ったら 微妙に遅くなった・・
C++のクラスライブラリには インラインアセンブラ 相性悪いね
コンパイラの最適化の邪魔しちゃうみたい
キャッシュ、先読み、パイプライン 等も考慮して書くなんて 大変です・・・
やっぱ 最近のCPUは アセンブラ 辛いわ・・

でも MMXを使う時は アセンブラのメリット出ますね
どうやって ビジネス系の仕事でMMXを使うか・・ わたしの課題

アセンブラ使って 何か作りたいな〜
アセンブラ使える人ってプログラミングのプロフェッショナルぽくってかっこいいね。
まあ実際そうなんだろうけど。
ところでみなさんの偏見でかまわないのだけど
アセンブラの難易度というのはどれくらいなの?
言語と比べていただけるとわかりやすくて幸いです。
ex:Perlと同じくらい簡単。
>>94 覚える事が嫌な人 シンプルな事が好きな人には Perlより簡単
>>95
単純なので書くのは簡単。
単純すぎて思った機能を実現するのが大変
煉瓦を一つ一つ積み上げて家を建てるような。
ひょんな所から、今度X68kが数台譲っていただけることになった。
んで、質問っす。今から68kの汗、覚えて何か役に立つかなぁ?
外部バスとか使いやすいですか?
ってーか80x86汗使いからのクラスチェンジは大変という噂が・・・
どうなんでしょうか。
>68kの汗、覚えて何か役に立つかなぁ
 MPUとしてはもう作ってないですが、
 ASICに組込まれたエンジンとしては世の中に存在はします

>80x86汗使いからのクラスチェンジ
その違いが、よりシンプルな印象と取れるか貧弱と取れるかが評価の分かれ目
99アセンブラAX:02/04/08 16:54
X68k でも Z80 でも
きゃっする よりは覚える価値があると思います
>>98,99
レスさんくす
どっかに68k汗の解説HPか、txt転がってないかなぁ。
検索したら関係ないHPイパーイ出てきて裁ききれなひ(汗
101デフォルトの名無しさん:02/04/08 17:54
gnu asの教科書ありますか?
アセンブラ:RISC
C+++クラスライブラリ:CISC

俺ってチャレンジャー。
>>102
チャレンジャーだ。がむばれ
104デフォルトの名無しさん:02/04/09 01:44
アセンブラ自体は必ずしもかけなくてもいいけど、アセンブラの概念がわからんプログラマはすぐに
死んでください。
CPUの動作原理の事を、アセンブラの概念とかゆっているプログラマは、すぐに回線切って首吊ってください。
106 :02/04/09 03:15
CPU設計したことないプログラマは電車の屋根に登って死んでください。
ああ、やったなぁ昔、ビットスライスプロセッサ組み合わせて…
>>106
おことわりします。
チューリングマシンの命令一覧って忘れてしまったよ。 どっかに落ちてないかな
入社していきなりフルカスタム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相対指定でジャンプアドレス
を格納したメモリを指定して、そっからロードしてジャンプとかになる。
これを逆汗でみたときはさもありなん。
>>113-115
V800系は如何?
って使ってる人自体少ないかモナー
117 :02/04/13 01:02
>>110
10年前なら東芝やNECの第一線級でもマトモな乗算器も組めない有様
だったけどねえ。
今はやれる事すくないかもな。
Hashをハードで組むとかどう?
118110:02/04/13 01:17
カスタムやらされたのは昔の話だよ。8,9年ぐらい前。
VHDLやらVerilogなんてものは話で聞くぐらいだった日々。
A1図面にぎっちり書かれたラッチをおいつつ、旧CPUの解析・・・
ま、小規模なものだったけどね、さすがに。




でも、いちばんつらかったのは、ロジックより内蔵LCDドライバ
の特性の維持の方だったけどな。温特、負荷特でちゃんとした
特性でなくてなぁ・・・。コンパレータがなぁ・・・うぅっ

いまはすっかりソフト屋だけどね。
SHか、割り切り方が潔くて好きだな。
120113:02/04/13 02:52
>>115
そうそう命令長が16ビットなのも嫌だねぇ。
なんでもPC相対で遠くから読みだしてんだから。
言語設計がセコすぎだよ。
121藁人魚:02/04/13 16:56
ふと疑問に思った
プロテクトモードで動作しているOSってBIOSは、どう扱っているんだろう?
もしかして、仮想8086モードにぶち込んで動かしてるとか?
或いは殺してるんだろうか?
SHだと、TRAP命令でスーパーユーザーモードに入るので、そこから
BIOSに入ればよろし。x86ならコールゲート使えばいいんだっけ?
123 :02/04/14 03:26
普通、プロテクトモードで動く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出せ。
132仕様書無しさん:02/04/16 18:35
>>130
つーかPocketPCとPalmを比較する時にCPUのクロックで比較して
PocketPCの方が速いと思い込んでいるのではないかと。
まあ、速いのは間違いないが。
>>132
コンセプトが違うよね。
一方はミニWindowsを。
もう一方は必要最低限の電子システム手帳を。
134デフォルトの名無しさん:02/04/18 15:02
>133
そーいやこんなのが発表されましたな
ttp://www.zdnet.co.jp/mobile/0204/17/n_oqo.html
COMMETII & CASLII しかわからないんですけど、
いい本ないですか?
>>135
基本情報技術者直前対策。
137135:02/04/19 12:38
あの、CASLからステップアップというか、そういう本があれば
教えてもらいたいと思いまして...
138デフォルトの名無しさん:02/04/20 01:25
未だにC,C++のコード中にアセンブラ書いてる人くらい いますよね?
書きたくはないが、VC++もx86もFPUも時々ものすごくアホなのでしかたないんだ
86系CPUの解説リファレンスとしてはIntelさんのマニュアルがベストですか?
>>140
仕様書。と。
ARMのPalmと68KのPalmってエンディアンが違うんだよね・・・
あれ、PalmSourceでいろいろ小細工するみたいなことを以前に聞いたけど、
どうせ問題があとからいろいろ出るような気がする。
アセンブラでDOS/Vのキー処理する方法を教えてください。
DOS環境で。

お願いします。
>>143
システムコール使うかBIOS叩くかポートから直接制御するか。
>>142
Armはバイエンディアンなので。
PPCもバイエンディアン。
Z80系なんですが・・・
KY-80(Z80上位互換CPU)について知ってる人はいませんか?
ポート割付が不明なので、コードが理解できません。助けて・・・
>>144
BIOS経由は遅いと聞くので、できればポートから直に読み取るケースの方を教えていただけませんか?
なかなか情報源がなくて…。
148142:02/04/21 16:11
>>145
バイにしても、システム作るときにどっちか決めるんだよね。
オレ、SHしか使ったことないからARMはよく知らないんだけど。

去年聞いただけだからアレだけど、ARMをリトルエンディアンで使うという
話だったんだよなぁ。質問の時間に、やっぱり突っ込んでいた人いたけど・・・

なんで同じエンディアンにしなかったんだろ? 互換性考えたら、普通は
エンディアンを同じにしておくと思うけど。
>>147
キー入力速度を考えれば、そんなに速くなくてもいいと思う・・・

あと、USBキーボードはどうするの? たぶんLegacyインターフェイス
エミュでI/Oポートまでエミュしてないと思うよ。
150デフォルトの名無しさん:02/04/21 20:03
BCCのインラインアセンブラってど
151デフォルトの名無しさん:02/04/21 22:48
────プログラマとは、法則性を考える職業である。
>>143
getchあたりのソース読め
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
>>155
書籍は386までのしかないの。
161153:02/04/22 03:48
>>154 ヒント有難う。
>>156 モノを教えてくれて有難う。 取り敢えずReGetに渡して、
今夜は寝ます・・・30時間近く寝てない・・・。
PDFだけだとつらいよね。検索性はいいのだけど、一通りの
章を読みたいときはどうも。。。

最近の印刷所ではPDFデータで入校できるんだけど、有志で印刷代
だして印刷、製本・・・ってのは、やっぱり著作権の絡みで駄目かなぁ・・・ヤパーリ
>>162
会社で印刷するとタダ。
164カヲル:02/04/23 02:48
そう、STフィールドはx86プロセッサの誰もが持っているセグメントの壁だということを
x86は4Gの壁
>>165
もっともそれはx86に限らず大部分の32ビットCPUに言えるけど。
くそー一般命令と特殊命令ってなんだよヽ(`Д´)ノ
おじさん怒っちゃうぞ!!
Linker & Loaders読んだけど86のアーキテクチャが複雑だぞモルァ!
169111:02/04/28 00:43
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
>>164
ワラタ
>>170
合理的理由って何よ?
まだoptasm使ってる人いるのかなぁ・・・
秘密。
178デフォルトの名無しさん:02/05/17 15:40
age!
>>175
nativeコードで実行とか?
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使うまでもない制御なんていくらでもある。
>>170
携帯Javaと見た。
184デフォルトの名無しさん:02/06/02 13:50
次スレは
アセンブラ…ヽ(`Д´)ノウワァン
にしましょう!
>>184
果たして次スレはあるのだろうか。
根性で次スレまで伸ばしましょうか
187名無しさん@Emacs:02/06/04 01:59
次スレまであと813ステップですか。
ウメー
埋め
nop
jmp $+2
192start!:02/06/04 03:01
__asm{
}
exit(-1);
>>182
確かに組み込みなら現役ですね。といっても過去の遺産をずるずると
ひきずっているだけのものがほとんどですが。

>>わざわざC使うまでもない制御なんていくらでもある。
これはどうかと・・・逆のような気がします。わざわざアセンブラで書くまでもない、と。
事実、バイト先でも時間と暇があればできるだけCで一から書き直してます。
>>194
>事実、バイト先でも時間と暇があればできるだけCで一から書き直してます。
時給稼ぎのために、アセンブラで済むコードをわざわざ手間暇かけて
(機械語的に)無駄の多いコードに書き換えてるんですか?
#「コンパイラで最適化すれば良いじゃん」ってのは無しね

きっと、まともな制御ソフトなんて書いたこと無いんですね。
書き直すのは確かに「わざわざ」だな。
新規なら慣れたほうが作りやすいだけの話。
その後の保守も考えるならCのほうがリスクが低いかな。てなところでしょ。
197194:02/06/04 16:40
バイト先では与えられた仕事をこなすだけで、書き直すかどうかを決めるのは上の人です。
196さんの言うとおり、「その後の保守」これに尽きます。
実際アセンブラでぐちゃぐちゃ書かれたせいで割を食うのは
書いた人ではなく、その後始末をする人ですから。
ぼくの仕事もそんな後始末が多いです。ちょっとした仕様変更なんかも
ものすごい重労働になってしまいます。だからこそバイトに
やらせるんでしょうが・・・。
Cで「わざわざ」書き直すのも、その後の仕様変更を見越してのことです。

>>きっと、まともな制御ソフトなんて書いたこと無いんですね。

いきなりこういうことを言える神経を疑います。
198182:02/06/04 19:04
確かに保守の手間や再利用することを考えればCが得策でしょうね。
ROM容量を気にするような場面は少なくなってきていますし。
まぁアセンブラも書き方次第で可読性はかなり上がるとは思うのですが…。
199デフォルトの名無しさん:02/06/04 20:37
アセンブラか、(アセンブラの)開発は、もうこの世から

消えている、と思ってました。(or 思ってます。)

ごめん。言いたい事、書いちゃて。
世の中のこと何にもわかってないんだね
保守 すなわち C++

ゲームボーイ (;´Д`) アセンブラ
4 or 8ビットCPUはアセンブラで組まないと、速度遅い && メモリ空間
すぐイパーイ
>>>きっと、まともな制御ソフトなんて書いたこと無いんですね。
>
> いきなりこういうことを言える神経を疑います。

>>202の言ってるような機能が制限されたハード環境で開発したり、
信号のタイミングをシビアに制御するようなことを>>194はしてないってこと?
制御ソフトの要求仕様に対して、オーバースペックのハードを使ってるのなら
可読性を優先できるかもしれないけど、必ずしもそうじゃないでしょ。
実現しようとしてるソフトの仕様&アルゴリズム等を
ちゃんと理解してる人の書いたアセンブラは可読性高いと思うけどな。

アセンブラに限らず、他の言語でも同じだと思うけど。
205194:02/06/04 22:36
うーん、H8なんかで開発することはあります。Z80もたまに。
それなりの理由があればアセンブラで開発することもありますが、
最近はオーバースペックのハードが多いです。

>>わざわざC使うまでもない制御なんていくらでもある。

僕はただ、これに反応しただけなんで。
アセンブラじゃなきゃダメならそうするしかないですし。

ちなみにぼくはバイトといっても時給じゃないんで、わざわざ
時間かけても給料増えないっす・・・。むしろ損。
外注先の下請けってなもんです。学校行ってると、時給制じゃ
ろくに稼げないんで。
台数ベースなら、絶対4ビット、8ビットマイコンの方が多いね。
ROM/RAM、液晶ドライバ&キー入力I/F込みで1チップ100円の世界。

とりあえず、>>194がやってる「制御」ってのは、
ICEとロジアナでデバックするような代物ではないのね。
208194:02/06/05 11:01
ICEは使ったりもしました。
僕はソフトウェアの方の人間なんで、ハードウェアを
さわらせられるとおもしろい反面、気を遣うし壊しそうで怖いです。
まだ792ステップあるぞ
がんがれ
いっそマシン語直書きとか?これの後半みたく(w
http://pc.2ch.net/test/read.cgi/tech/1014138664/29n
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 出来てるんでしょうか?(;´Д`)ハァハァ
217逝って良しの1:02/06/18 03:01
検査プログラム作ってちゃんとロックするか調べて見たら?
218216:02/06/18 11:33
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{}
221219:02/06/18 18:58
>>220
なんだか凄い結果ですが、ある計算をした場合
こんな感じになります。
リテール時のコードが見たいんですが
どの部分がインライン展開されたとこなのか
わかんなくて困ってます。

3DNow版
デバック 280.68クロック
リテール 16.86クロック

C-FPU版
デバック 289.51クロック
リテール 6.28クロック
mapファイルを吐かせればいい
/FAsc
>>221
プロジェクトの設定で、アセンブラコード吐き出させるから、
それで見てみれば?

[プロジェクトの設定]->[C/C++]->[ファイルリスティング]
225219:02/06/18 21:40
アドバイスありがとうございました。
BSCファイルはちょっと使い方がわからなかったので
MAPファイルを使わせてもらいました。
それで、コンパイラ最適化を無効でインライン展開有りだと
3DNowもC-FPUも普通に展開されていることがわかりました。
しかし最適化を速度重視にすると、どこに書いてあるのか
わからなくなります。
とりあえず、もっと勉強して調べてみたいと思います。
226216:02/06/19 10:41
pthread ウチの UNIX じゃサポートされてないとのことでした。
おとなしく sem_ 系の排他制御を使います。
227基本:02/06/19 16:58
CASLUで出てくるGRnとかGRm、GRxって何ですか??なんか違うんですか?
汎用レジスタってのはとりあえずわかるけど
228すれ違いですが:02/06/19 23:21
すれ違いですが、すみません。教えていただけないでしょうか?

いいと評判だった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はどうなんでしょうか?
231 :02/06/20 16:45
>>230 根本的に違う。
232230:02/06/20 17:01
>>231
違うだけ言われても・・。
>>230=231=232
ジサクジエンの臭いがするぞ
そんなに注目してもらいたいのか?
>>230
ストールしてもいいじゃないか。
235_:02/06/20 18:27
アラインメントってなんですか?なんかいっつも4なんですけど・・・
236230:02/06/20 18:37
ごめんなさい、確かに勘違いしてました。
パイプラインじゃなくてスーパースケーラでした。
MOVでメモリからレジスタにロードする場合
ロードユニットを使いますよね?
CPUがスーパースケーラで2命令同時実行出来るとして
その2命令が、MOVとMOVなら双方ともロードユニットを使うので
競合して同時実行出来ないと思うんですが、この認識は間違ってますか?

237235:02/06/20 18:38
すみません。justのが今読んでた文章のところにありました。

>アライメント(alignment)というのはメモリに変数を置くときの置き方のことだ。
>たとえば 32 ビットマシンでは int は当然 32 ビットを使うが、普通はどこから
>でも 32 ビットとれるわけではなく、「4 の倍数バイトから」とか「偶数バイトか
>ら」というふうに決められている。
>なぜかというとそのほうがメモリアクセスを高速化できるからだ。
238 :02/06/20 20:21
>>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系でハングる事がある。
>>240
TASM
242デフォルトの名無しさん:02/06/22 18:48
>>241
サンクス、使えるか調べてみます。
243242:02/06/22 18:54
ちなみに、LASM、NT系で一般保護違反だしよる。
で、ゴルァメール出してみたら、再現しません。だと。
メモリ外アクセスやからそんときのメモリの状態によって
でたりでなかったりするのは分かるが…
そんなアセンブラ売り出すなよ〜仕事増える。

ちなみに無意味なマクロ挟んだら直ったりします。

dummy_00  proc
        dd    0
        endp
nasmかgas
MASMで500kbのソースアセンブル出来たけど?
246242:02/06/22 21:13
>>244
調べてみます。

>>245
なんか、equ多用してるでかいソースをアセンブルしたとき、
64KBがなんたらってでた気がする。ちと忘れたスマソ
単にラベル多すぎってことはないかい?
単に1個のセグメントに64K以上並べただけでないのか??
単に>>242が馬鹿なだけってことはないかい???
TASMが一番強力だったような記憶があるよ
251デフォルトの名無しさん:02/06/23 20:35
WinのEXEファイルのフォーマット教えてください
PEというキーワードで検索するとよいよ
253デフォルトの名無しさん:02/06/23 21:09
NWSA があるじゃん。
255251:02/06/23 23:51
>>252-254
サンクス♪
256242:02/06/24 11:19
>>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を書いてみたんですがうまくいきません。
ご指導願います!!
259U-名無しさん:02/06/26 17:36
>>258
ラベルの書式を正そう
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.
と でてしまうんです
わかりますかねぇ?
261248:02/06/26 22:41
( ゚д゚)ポカーン
>>249
正解!
263U-名無しさん:02/06/27 12:44
>>260
( ゚д゚) カポーン

(´-`).。oO(なんで「これであってるはずなんですけど」なんだろ?)
264デフォルトの名無しさん:02/06/29 12:53
素人質問ですいません、VC++からインラインアセンブラで書かれている
関数(私が書いたものではありません)を使おうと思ったのですが、マルチ
スレッドのプログラムでこれを使用する場合、当然CPUが一つの場合だと、
そのインラインアセンブラ中で使用されているレジスタ等は複数有るわけ
がないのでこの関数が再入可能になるように排他処理を施す必要が出てくる
(スタックしか使ってない普通の関数なら排他不要ですが)のではないかと
思ったのですが、この認識で正しいでしょうか?
265仕事さぼり:02/06/29 12:56
>>264
スレッド切り替え時に
システムが自動的に
レジスタなどのコンテキストは保存するはずだから、
その必要はないと思います...
266ザンゲ野郎:02/06/29 13:52
むかぁ〜し昔、68アセンブラいじってた頃。

jsr LABEL

とする所を

lsr LABEL

とタイプしていてなかなかバグが見つからなかったのはヒミツ。
267仕様書無しさん:02/07/01 17:58
>>264
勉強汁!
キーワード「ディスパッチ  レジスタ  コンテキスト」で
検索汁 (゚Д゚)ゴルァ

マルチスレッドであろうと無かろうと、
マルチタスクだったりするし、
ふつーは割り込みもケアする必要がある。

たしかに >>265 氏の御説のとおり
「システム」か何か(仮)が良しなにケアしてくれるが、
その「システム」がどこまでヤってくれるのかを
理解しておかないと危険。

あと、レジスタを使わないでスタックだけ使えると
思ってるのか (#゚Д゚)ゴルァ!
しかもレジスタの読み書きについて排他処理すると
再入可能になるのか (#゚Д゚)ゴルァ!
CPUが1つしかないと「レジスタ等」も
1つしかないのか (#゚Д゚)ゴルァ!

三度のご飯のお供に Z80 をどうぞ。
勉強が足りないのは>>267も一緒だと感じるのはなぜだろう…
26944x:02/07/03 19:26
初心者なのでどなたか教えてもらえないでしょうか。
拡張子‘asm’はアセンブラのソースファイルですよね。
これを実行ファイルに変換する方法はどうすればよろしいのでしょうか。
どうか、よろしくお願いします。
>>269
MASM

>>268
なんとなく同意。
27144x:02/07/03 19:42
>>270
ありがとうございました。
273デフォルトの名無しさん:02/07/03 22:55
http://pc.2ch.net/test/read.cgi/tech/1024411711/-100
初心者だががんばっているやつがいる応援したくなる。
なんなんですかあなたは
OSをつくろう。
使えるのが作れたら10円やる。
277267:02/07/04 12:27
>>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
基本情報技術者試験で擬似言語の問題が出てきてるんです、はい。
ま、他の学校の誰に聞いても
「そん何とっても役にたたん!」
とか言われるのがオチなのは気のせいか・・・
だから、なぜこのスレで?
うるせーばか。お前から だから と なぜ をとったら何も残らないくせに。
ポカーン
>>287
、このスレで?
が残ります。
>>290
質問の核心が残りましたね。
292デフォルトの名無しさん:02/07/18 21:59
z80始めることになりました。チャンチャン
いきなりx86からはじめるより
z80とかから勉強した方が効率はいいですか?
eieio
>>293
Z80は既に遺物だから、86からやった方がいいよ。
大体、試験環境を持ってるの?
PC-8801などの8ビットマシンを持ってるなら別だけど。
296293:02/07/19 10:03
>>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コンパイラのように、アセンブル、リンクを使う経験値は稼げないね
300293:02/07/19 21:30
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
>>302
BYTE単位で SHR + RCR * 3 とか…。
素直にBSWAP使った方が速そうだけど。

>>305
kernel.org
ttp://www.kernel.org/pub/software/devel/nasm/
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
字句解析なんてやってらんねーだろうし、
命令選択に幅がある場合の最適化なんてことをやりだしたら
カナーリの高級言語じゃないと厳しいのでは?
312303:02/07/20 21:35
>>304 あ!・・・・ごめん

なら x = x<<15 だ
(´-`).。oO( >>312 ツッコムべきなのだろうか? そりゃこの例での結果は同じになるけど…。)
314304:02/07/21 10:08
シフト数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。

以下蛇足。
元データが何なのか知らないけど(グラフィックか?)
計算中はそのアーキテクチャ上で扱いやすいデータ形式にしておくのが
定石じゃないかな。
315302:02/07/22 01:07
レスありがとうございます。
そうです。 グラフィックです。
1bppの画像をdword単位で操作したかったのです。

bswap使います。
316303:02/07/22 07:52
ああ、それをやりたかったんだ。やっと判った。
 モノクロビットマップデータを全体に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」に進むのは無謀でしょうか?
319manko_chinko ◆c2rpKRNM :02/07/24 22:04
>>318
はじめて読む8086をかってみれば?
良書だし安い
320318:02/07/24 22:24
>>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
ターボアッセンブラーって今お店で売っているんでしょうか?
TASMを日本で正規に入手する方法は
http://store.borland.co.jp/bcsuite/index.html

昔 TASMを単体で買った時より廉いような気がする・・・

高くて買えなかったCodeGuardや あんなに高かった PowerPack もついてるし
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)
331326:02/07/26 02:36
>>330
ありがとうございます(^ー^)
だいぶ助かりました。
>>330
ESP も使える。
333デフォルトの名無しさん:02/07/26 15:25
最近はC言語のほうがアセンブラよりはやいと聞くが、本当か?
>>333
気合の入ったCコンパイラが吐くコードのほうが、素人のアセンブリソースより
すごいことはあるんじゃない?
C言語で書いてあとはコンパイラに任せたほうが
移植するときには有利なんじゃない?
3360ページ:02/07/26 16:09
>>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
アセンブラなんか使うなよおめーら
345takebe youta(正規表現:02/07/27 02:13
ハンド・アッセンブルしろってこと?
アフォか。
インラインアセンブラしまくって最適化の邪魔するんだよ
きまってんだろまったく。
347takebe youta(正規表現:02/07/27 02:39
>>346
> きまってんだろまったく。
それは、誰が決めたんですか?
それは私です
349デフォルトの名無しさん:02/07/27 16:37
It's mine. それは地雷です。
350デフォルトの名無しさん:02/07/27 20:59
地雷だったらaが要る
>>350
むむっ鋭い突っ込みお見事。
352デフォルトの名無しさん:02/07/28 02:30
MMX命令について詳しく書かれたサイトありませんか?

現在某参考書にちょっと載ってた
movq, punpcklbw, punpckhbw, paddwなど数種類の命令しか分かりません
インテル・アーキテクチャ・ソフトウェア・ディベロッパーズ・マニュアル 中巻:命令セット・リファレンス

がオススメ
>>353
御親切にどうもです
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)に割り当てられているので、無理。
>>369
そうなのか、残念...
要するに、x86-64は

al, ah

ax

eax

rax

(゚д゚)ウマー

な訳だよ、諸君!
どう思うよ?
Hammerって、やっぱりリセット直後は16bit Real mode なの?
そうじゃないと互換プロセッサと名乗れないじゃん
既存のOS動かないし。
EAXのEは、ExtendedのEかと勝手に思ってたんだが、
RAXのRって、何よ?

Rabi-en-RoseのRかな?
うさだage
>>374
romance
377デフォルトの名無しさん:02/07/29 20:18
MS-DOSはシステムコールを実行する時も、リアルモード
でなくてはいけないのでしょうか?またMS-DOSはプロテクト
モードで実行させることは出来ないのでしょうか。
378デフォルトの名無しさん:02/07/29 20:23
仮想8086モードというのがあったような気が・・・。

詳しくは以下参考
ttp://www.intel.co.jp/jp/developer/design/pentium4/manuals/index.htm
379デフォルトの名無しさん:02/07/29 20:45
>>378
すみません勉強不足でした。おっしゃる通り、仮想8086モード
に移行出来れば、MS-DOSの上で動く16ビットアプリケーションも
動かせる様です。しかしMS-DOSのシステムコールが、なぜリアル
モードで動くのかが分りません。システムコールを実行する為には
メモリの保護などを行わなければ危険だと思うのですが...
380378:02/07/29 21:59
>>379
作った当時は16bitCPUしかなかったし、
メモリ保護とかそんな意識がCPU自体になかっただけでは?

また、参考なるかどうかはわからんけど、一応。
ttp://www.atmarkit.co.jp/fsys/pcencyclopedia/001jp_pc_history01/jp_pc_hist02.html
 
 × CPU自体
 ○ インテル
 
382デフォルトの名無しさん:02/07/29 23:21
僕の買った本にはCPUは「クプと呼ばれている」と書いてあったのわけだが
皆さん「クプ」と呼んでいるのですか?
「シーピーユー」と呼んでいるのは世界で僕だけですか?
>>382
クプにきまってんじゃん
クプだな。
385デフォルトの名無しさん:02/07/29 23:25
マジで?
クプ...でいいんだよな? 一瞬あせった。
387378:02/07/29 23:30
>>381
訂正ありがと。

後、俺もクプだと思うよ。
流れからいくと。
クプだったのか・・・
389デフォルトの名無しさん:02/07/30 00:51
クプはでふぉでしょ。
俺のはムプだ
391manko_chinko ◆c2rpKRNM :02/07/30 00:53
うちの家族では”まんこ”って呼んでます
クピュじゃないの?
>>381
iAPX432
394デフォルトの名無しさん:02/07/30 08:02
CPUをシーピーユーと読む香具師は素人だけだろ。
SCSIとかもエスシーエスアイとか言ってそうだな(藁
プッ
TCP/PIとかもティーシーピーアイピーとか言ってんだぜ。
トクプピなのにな。
SCSIは当然「すくし」だ。
>>396 プ
>>396
トクッピ だろ。
少なくとも2chでは、CPU = クピュだろ。
EAXってなんて読むんですか?
402デフォルトの名無しさん:02/07/30 09:56
>>401
いーえーえっくす
やぁっくす
>>396
TCP/IPだからトクピプだ。
ププク
俺のビデオカードのグプはGTS
408 :02/07/30 19:56
ガッチャンだね。
へぇ〜いろんな読み方があったんだね。
自分の場合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つあるみたいですよね。
>>412
そういう意味なんじゃない?
414デフォルトの名無しさん:02/08/02 22:23
http://www.geocities.co.jp/SiliconValley-Bay/7981/misc.html

↑にある6502(?)のソースからnesファイルを作りたいのですがどうすればできるのですか?
>>414
スーファミか。65816カスタムだね。
416デフォルトの名無しさん:02/08/02 22:46
>>415
ファミコンだと思うのですが…
どうすればnesファイルを作ることができるのでしょうか?
nesファイルって、ロム?
>>416
65816のアセンブラはあるの?
SFCの怪しいページ見つけたよ。
http://user.parknet.co.jp/wanisan/whp_lib/wsfcp.htm
420デフォルトの名無しさん:02/08/02 23:10
>>417
たぶんロムだと思います。
>>418
ないです(;´Д`) 検索しても意味不明で…
マリオだな。
これはアセルンブルできないよ。
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 ですよね?
素人丸出しでごめんなさい。だれか教えてください。。。
434 :02/08/07 02:03
>>433
スタックの絵を描いてみればわかる。
その例ではintは2byteのようだな。
つか、スタックを bp+n でアクセスしてるの見て、
スタックはアドレスの大きいほうから小さい方に
伸びてるのわかってほしい。
436デフォルトの名無しさん:02/08/07 02:22
>>435
>>434
えーと、y,x の順で積んでから、
bp を積んでいるんですよね?
てことは、bp のサイズは4byte なのでしょうか?
それなら納得できます
437 :02/08/07 02:23
>>436
その関数からどうやって戻る?
438デフォルトの名無しさん:02/08/07 02:32
>>437
retがそうなのではないのですか?
439 :02/08/07 02:38
>>438
どこに戻る?
440デフォルトの名無しさん:02/08/07 02:38
あー、IPレジスタってのを積むらしいですね
IPレジスタ+BP だからXの位置まで4バイトなんだ。

合ってますか?
441デフォルトの名無しさん:02/08/07 02:42
>>439
つまりret でIPレジスタの分をPOPして
もどるってことですか!
なるほど!!
ありがとうございました。
みんなアセンブラなんかやってるの
変態じゃん
443 :02/08/07 19:25
>>442
つまらんことをわざわざ書くお前が変態
444デフォルトの名無しさん:02/08/07 20:14
今一番使われているのはどれですか?
Z80っていうことは,ないですよね・・・
Z80互換のワンチップとかって、相当数出回ってそう。
Z80系はゲームボーイに(省略)
>>442
アセンブラだけなわけないじゃん。
効率悪すぎだから併用よ♪
アセンブラだけやってたら確かにある意味変態かもな(w
449デフォルトの名無しさん:02/08/07 22:54
Win32APIを全部記憶してる奴も変態だな
変態って言うなよ(藁
451変態:02/08/07 23:12
仕事柄アセンブラしか使わしてもらったことが無い...
アセンブラったって用途はピンきりだ。
アセンブラしかなかったら、アセンブラだけ使うしかない罠ヽ(`Д´)ノウァァァァン
自社開発フルカスタムCPUは、マジで泣きそうになるよ。。
454プログラマ・ペレ:02/08/07 23:27
イヤならさっさと転職しる。
私ならそう(略)
455453:02/08/07 23:44
その仕事は最近香港の子会社へ逝きました(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オロtkD・)圦5エ・、愍'#kI
良・ミスム:ケoocmWWヨクDサ・uGOナ・ャ蟯eヌ・c1ソI・#ヤ「・チRキウ76:Pナァ・Rャエ/ツ梦nk3Bコ・
ウネナ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の出力がバイトコードでやられている
というのをどっかの論文か何かで読んだ覚えがある。そこにははっきり
した起源は不明って書かれていたような気がした。

あやふやですまんです。
460 :02/08/09 01:06
>>458
詳しい起源は知らんが、PascalはP-CODEだったし、
Bもスタックマシンの中間コードをinterpretしてたらしい。
>>459-460
サンクス。
462459:02/08/09 20:47
>>458
まだみてるかわからないけど、前に書き込んだ情報のソースがみつかったので、
参考までに(やっぱ前の書き込み微妙にまちがってるし)。
http://www.brl.ntt.co.jp/ooc/spa98/proceedings/020_yamazaki.html
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だったと思う。
468名無しさん ◆glaITM9U :02/08/11 23:11
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
MOV CL,2
SHR AX,CL
>>479
引っこ抜いてV30に挿し換えれば使えるようになるよ!
482デフォルトの名無しさん:02/08/12 20:50
eor a,a と
mov a,0 と
どっちが小さいのでしょう?
前者は1バイト、後者は2バイトだと思うのですが・・。
あと、どっちが早いのでしょう?
後者は6バイト
484manko_chinko ◆c2rpKRNM :02/08/12 20:52
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 はてきとーにがんばってくれ..
今更答えても遅いです
491463:02/08/13 01:50
>>489
あー、すいません。
初めて読む486を読んだって
はじめから書いておけばよかった。
説明もまずかったし。。
あとはテキトーにがんばります。
492489:02/08/13 03:36
>>491
ども。本当は俺もはっきりわかっているか不明なので
教わりたかったんだよね...。

本の156pのRealToProto()関数ではCSにセレクタ値0008Hをロードしてるでしょ。
それで153pのSetUpGDT()関数では0008HのディスクリプタをSmallSeg
(16bitセグメント)にしている。(ここがミソ)
それで16bitセグメントのプロテクトモードで call far を呼ぶと 16bit だから
フツーに segment:offset コールでありながら(スタックにも戻りアドレスを
16bitで積む) segment だけがセレクタ値とゆー妙な状態で呼び出せるらしい...。
だから 32bit セグメントを呼ぶときは (sel << 16) + offset(16bit限定) に
なるということで...。

俺はこんな風に解釈してるんだけど、間違ってるかもしれない...。
間違ってたら非常にマズーだね(w
ツッコミ歓迎ッス...
493489:02/08/13 03:49
> 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によってニーモニックが違う、という明確な認識は持っていませんでした。。
はじめて読む>>486
>>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
目的の本あるとは限らん。
507500:02/08/15 12:54
>>503
どのCPUも同じような命令を持ってはいるが、例えば最もよく使う
転送命令でも単語として move を使うものや、load/store を使う
ものがあり、分岐命令も jump だったり branch だったりする。
省略のしかたも微妙に異なるので、結果的にCPU毎にプログラムが
非常に違った見え方をする。
こんな説明よりアーキテクチャの違うCPUのコードを見るほうがはやい。
古いCPUのアセンブラならここに行けばあるから 見てみたら?
http://www.arcpit.co.jp/xasm_0.htm
>>506
古本なんだから当たり前だろ
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直叩きってどうやればいいんですか?
 _ / /   /   \_____________
\⊂ノ ̄ ̄ ̄ ̄\  
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||
>>512
VRAMのアドレスに代入
514VRAM:02/08/16 00:38
好きなだけ叩いてくれ
ツンツン( ・∀・)ノ >>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
525523:02/08/19 18:59
質問するような体裁になってませんでした。
もう少し考えてからまたきます。
>>523
あてずっぽうだけど、'0'を表示した後改行してないので、プロンプトに隠れて
見えなくなってるだけだったりしない?
'0'の表示に続けて、0Dh (CR), 0Ah (LF) と表示してみたらどうでしょう?
527523:02/08/19 23:47
>>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]
これってありですか??
529 :02/08/20 00:54
>>528
なんでなしだと思う?
530デフォルトの名無しさん:02/08/20 01:04
32ビットを16ビットにmovしてるから?
(ごめん覚え初めて1日目)
531 :02/08/20 01:07
>>530
word ptrは16ビットだが?
思いっきり、「あり」みたいですね。
スレよごしてごめん。
>>528
書くときはmov si, ecxでもいい
siのサイズが分かってるんで
mov si, [ecx]ね
535523:02/08/20 15:24
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に
なっていました。
536523:02/08/20 15:39
書き忘れましたが、指定の方法ですが、 __far とかいう指定方法が存在することは、
一応知ってます。
ということは、cとアセンブラを最後にリンクする場合には、もしかして全てFAR CALL
になるんでしょうか?
537523:02/08/20 20:20
>>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 :02/08/20 21:42
>>535
何bitのプログラムを作りたいのだ?
539not 535:02/08/21 11:25
>>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プロセッサ」という本なの
ですが、これ以外に良い参考書はあるでしょうか?
もしありましたら教えていただけないでしょうか。お願いします。
>>551
英語は読めますか?
553 :02/09/18 20:36
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
>>551
ちょっと高いが。
http://www.jp.arm.com/kk/kk_shop.html
>>554
 そうです。
  5bit同士の掛算なら結果は10ビットになります
 10進で考えると判り易いでしょう
12.345*1234.5 = 152399.025
 
557551:02/09/20 12:51
>>552
 英語は基礎的なものしか読めないです(^-^;

>>553
 ARM Reference Manual ですか。調べてみることにします。

>>555
 9500円ですか…でも必要なことは載ってそうなので購入を
 検討してみます。

みなさんありがとうございました。
558555:02/09/21 02:53
>>557

俺が紹介した 9500円 のは、>>553(英語。5000円くらい??)の和訳。
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で?
>>559
http://pc.2ch.net/i4004/kako/1008/10084/1008433236.html
の608程度じゃ達人とは言えないかなぁ、やっぱり…。
572デフォルトの名無しさん:02/09/30 01:45
>>569
学校の課題です。
ようやく終わりました。ヽ(´∀`)ノ
数式をcaslコードに変換するコンパイラを作りなさいという課題でした。
どうもありがとうございました。
573デフォルトの名無しさん:02/10/06 22:22
今多倍長整数演算をアセンブラの勉強がてら作ってるんです。
そこで、Intelのアセンブラでsbbっていうオーバフローフラグ見てくれる減算があるって、
なーんだ簡単じゃねーかと大喜びしたのもつかの間、途中でアドレスの演算しちゃうと
オーバーフローフラグが変わってしまうし、ループまわしても分岐の確認の為にオーバフロー
フラグ変わっちゃいますです。だれか助けて。
> sbbっていうオーバフローフラグ見てくれる減算があるって、
ネタか?
575デフォルトの名無しさん:02/10/06 22:34
>>574
ネタじゃないです。
>>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つずつ処理すればいいじゃん。
582581:02/10/06 23:12
あ、581は間違いだ。
583581:02/10/06 23:17
間に別の条件分岐を入れたいということ?
なら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ではわからない。
607590:02/10/11 02:45
>>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ちゃんねらーなんだけど、何か?
616605&606:02/10/12 18:28
>>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さん、情報ありがとう。
617614:02/10/12 18:40
>>616
なんか俺、勘違いしてたみたい。CF の復元はできるね...。

> レジスタをひとつ犠牲にするのが問題。

レジスタを犠牲にするのはSETB も同じだし、どっかに保存するしかないから当然だと思う。

> レジスタのは貴重だし、Pentium3ではSETBの方が効率がよいらしい。

それにわかりやすいし...。
( ´_ゝ`)フーン
619デフォルトの名無しさん:02/10/16 08:29
浮雲。
どこかにBorland Turbo Assemblerって無いですかね?
621デフォルトの名無しさん:02/10/22 16:07
age
>>620 有料でいいなら >>325
623デフォルトの名無しさん:02/10/22 18:30
>>622
ちなみに、無料では手に入らないですかね?
>>623
割れろ。
>>612
PS2 の VU (ベクトル演算ユニット) とか、最近の DirectX のシェーダーとか。
いちおうコンパイラも出てきつつあるんだが、まだまだ辛い日々でございます。
>>623 NASMにしる
>>624
割れろって?

>>626
NASMって何ですか?
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に入っていたような気がするが。
なんか制限なかったっけ?
>>633
たしか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 を落とせば手に入るな。
vcpp5.exeとかって初めて聞いたんで検索してみたんですけど
http://msdn.microsoft.com/vstudio/downloads/tools/ppack/download.asp

アンインストーラが無いのでアンインストールにはいったんVC6をアンインストール
しなければならないってことですよね。
あと、SPのバージョンによってDLするものが違うということは、
仮にSP6なんてのが出たらまた変更しないとダメなんだろうか、とか。
このへんどうなんでしょう。
>>639
実はインストールしたこと無いからそこんとこは知らんのよ。
vcpp /C /T:c:\tmp
とかすればインストールせずに MASM が取り出せてウマー!
というか、現在 MASM の最新版はこの VCPP に付属の Ver.6.15 だ。
んー、ちょっと使ってみたかっただけなので躊躇してたんですが
それで取り出せるならDLしてみようかなぁ
>>636
他人から見たら意味不明の定数をコード中に埋め込むことです。
そして半年後の自分は立派な他人です。
644デフォルトの名無しさん:02/10/25 02:45
ヘ!
INT 21
>>643
ほうけいしゅじゅちゅでもするの?
>>645
整形しますが何か?
647デフォルトの名無しさん:02/10/25 21:48
>>640
それってMASMがフリーで手に入るってこと?
そういうこと。ライセンス的には激しくマズーかもしれんが(藁
俺はVC6持ってるのでウマーと。
でさっそく落として>>640の方法で取り出した。
今ml.exeが目の前にあるよ(゜Д゚) ウマー

8086マクロアセンブラ入門という比較的新しい本にサンプルをDDKで動かす例があるけど
本に記載されてるページ(MSのDDKのページ)に行っても落とせないんだもの。
アマゾンかどっかの書評でもそんなことが書いてたなぁ。
650manko_chinko ◆GLc2rpKRNM :02/10/26 01:04
>>649
microsoftのftpサイトにいくと落とせると思う
>>650
どこ?ここ?ftp://ftp.microsoft.com/developr/masm/
テキストしか置いてないけど。
652デフォルトの名無しさん:02/10/26 02:02
アセンブラ入門の本って16ビットCPUのことが多いけど、
32ビットCPU、というかPentium以降を前提とした
入門書ってあるの?
SHとかH8をターゲットにするなら分からなくもないけど...
あ、ごめん。MASMじゃなくてパッチだった。↑のftpのml614.exe
656アフォ:02/10/26 05:02
658デフォルトの名無しさん:02/10/26 10:21
PICマイコンでいろいろやろうとしてるんだが。
秋月の 16F877 ICEキットのtutrialさえうまく走らない。
詳しいサイトないかな。2年くらい前にすごく懇切丁寧なサイトを
見た記憶があるんだけど、消えたのか、見つからないや。
>>658
↓ここはいいよ
電子工作の実験室 (PIC、マイコン、ラジコン、EDA、VHDL、CPLD)
http://www.picfun.com/
660658:02/10/27 00:23
>>659
レスありがとう。でもそこは何回も見たんだ・・・。
俺はじめたばっかりの厨なんだ。ごめんよ。
辞めた先輩に、途中の仕事丸投げされたんだ。
秋月のICEキットで書き込もうとしたらなんかエラーが出て
README.ICE見ろって。見たら SLEEP instruction したらダメだって。
で、具体的にどーしたらいいんじゃーってトコで定時になったから
帰りマスタ。土曜日だし。来週からまたがんがるよ(´・ω・`)
「はじめて読む8086」を読んでいて、条件ジャンプ命令はショートジャンプ
のみと書いてあるのですが、なぜショートジャンプしか出来ないのでしょうか?
662 :02/10/27 00:53
>>661
そういう設計だからです。
でも確か、アセンブラ機能かマクロで ロングジャンプでも勝手に処理してくれるようになってたような
>>661
「8086 のアーキテクトが、条件ジャンプはほとんどショートジャンプの範囲に収まるし、万が一収まらなかったら、jmp との組み合わせで対処すりゃいいじゃん。」と思ったから。
>>663 >>664
わかりました。そういう設計なんだと考えることにします。
666テンプレ(色んな所に貼ってね):02/10/27 01:27
キム・ヘギョンさんインタビューに対する抗議本部
◆フジテレビ転じてニダテレビに抗議しよう◆
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
フジのアホ編集が「会見泣き」のテロップを出した瞬間(ネタじゃないよ)
>>665
ついでに、何故そういう設計がありうるかというと、
ショートのほうが命令が小さいし速くできるから嬉しい
という面があったの。そうでないと不便な方を選ぶ意味はないよね。
今の CPU はロングも対応してるけどね。
命令長くなるけど。
 すみません、質問させてください。あるデータをキャッシュに入れて
その後の処理をさせたいと思い、PREFETCH(NTA,0,1)を使ったプログラムを
書きました。なかなかの効果があったのですが、この命令を入れた
プログラムってAthlonでも動くのでしょうか?_

 現在は、この命令を使うかどうかはSSEを使えるかどうかでチェックして
いるのですが、これだと当然SSE付きのAthlonでも実行されてしまいます。その
時、Athlonがintel用のPREFETCH命令を実行できなかったら当然まずいことになる
訳で……。

 私がAthlonマシンを持っていれば、自分で確かめられるのですが、残念ながら
持っておりませんので、ご存知の方がいらしたら、教えていただけませんでしょうか?
win98ddkって2000でも使えるんですか?
672デフォルトの名無しさん:02/10/29 04:01
Windows2000のコマンドプロンプトでLASM体験版のhello.asmを
http://www.tamasoft.co.jp/lasm/install.html
のとおりにアセンブルし、hello.exeは作られたのですが、
helloを実行しても何も表示されません。
なぜでしょうか?他にもやることがあるのでしょうか?
>>670
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/22466.pdf
Athlonがなくてもこのへんを見ると
AthlonでPrefetch*ができることがわかるよ
674673:02/10/29 04:29
補足
ちゃんとintel用のPrefetch*と同じオペコードだから問題なし
675670:02/10/29 08:07
>>673,674
 ご親切に感謝します。ありがとうございます。

 そうですよね、CPUメーカーのサイトに行くのが当然ですよね。なのに
俺ときたら……。先ほど、紹介していただいたPDFとIntelの命令表の
PDFを見てきました。これで安心してPrefetchが使えます。

 本当にありがとうございました。
>>666
うざすぎ市ね
2度とム板に来るな
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くらいしか思いつかない…。
>>683
1個の誤りを検出出来る。
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とメモリの容量増加で、
>命令サイズ抑えるより汎用的な命令を強化する方向に動いてるのかね。
らしいですね・・。
私は末端プログラマですがこういう考え方を質問されたときなど参考にさせていただきます。
皆さん非常に納得させられるご意見でした。有難う御座いました
702M68000シリーヅ:02/11/10 17:31
>>689
1〜8のどれかを足したり引いたり出来る命令があるので
1だけしか足したり引いたり出来ない命令は意味がないのでありません。
r0,(a0)+ とか ++(a0),r0 とか

704694:02/11/10 20:38
695さん
曖昧でごめんなさい。
なんでCPuごとにわざわざニーモニック(というか命令セット)が違うのか、と
疑問に思っていたのですが、計算速度の向上やメモリの縮小のため、
不要な命令を省いたり、必要な命令を加えたり、しているのだろう、と
いうことに気づいたのです。あたりまえなのでしょうけど。
699さん
ありがとうございます!
そうです、目的を実現するために最適な命令セットを作っているようですね。
 >歴史的事情、あるいは後方互換性
 >コンパイラ技術の進化
 >プロセッサ設計理論の進化 (パイプライン, スーパースカラー, etc)
>なんてのも大きな要因だね。一時期 RISC で流行った遅延分岐命令なんての
>は、パイプライン化の賜物ですな。
このあたりは勉強不足なので詳しくはわかりませんが
コンパイラ技術や設計理論が向上すれば命令セットにも変更がある、というのはわかります。
705695:02/11/10 21:56
>>704
まぁ意味は判らんでもないけどな。
ニーモニックって言われたら
同じ転送命令なのにCPUによってたとえばmovとかldという違いがなぜ生じるか
って意味に読めるからな。
CPU毎に違うのは方言だと思えばいいんじゃないかな…と思った
皆さんこんにちは。
かなりむかーし、デバッガでニモニック弄ってたのですが、
今、WIN2000で動くものをアセンブリ言語で作りたいと思った場合
アセンブラの他に何が必要なのでしょうか?
アセンブラはMASM32と言うのをゲトしたんですがPSDKとDDKというのも
あった方がいいのでしょうか?
MicrosoftからはWIN2000用?は落とせないみたいなのですが。
>>707
ヘルプ集
>>707
お手軽に始めたいなら
Delphi 6 Personal (のインラインアセンブラ) + Turbo Debugger
あ、ありがとう。言い忘れました。
フリーで揃えたいのですがDelphi 6 Personal ってフリーでしょうか?

DirectX使うのに、directX-SDK要るというのは分るのですが、プラット
フォームSDKとDDKって何をする時必要なのか分らないのです。
711710:02/11/11 21:53
Delphi 6 Personal はフリーでした。
test
test2
714デフォルトの名無しさん:02/11/12 04:01
a
715710:02/11/12 04:05
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.
721707:02/11/12 22:46
BCC+MASM32+IDE(?)それとW2KVDDとDX8.1bSDK揃えました。(が、まだ物欲満足せず。(たわけ
アセンブリ言語が難しいと言う前にアセンブラがごちゃごちゃで挫けそうです。Cもしかり。
TASMとMASMの日本語マニュアルないときついっす。

722デフォルトの名無しさん:02/11/13 00:32
ttp://linuxassembly.org/asmutils.html
これのWin32版ほしいなぁ。
俺の場合、はじめて読む〜シリーズとNASMの日本語訳マニュアルで学んだ。
http://guriponn.tripod.co.jp/trans/nasmdoc0.htm
これは途中までだけど人の手による翻訳
http://www.bekkoame.ne.jp/~bero/docj/nasm/nasmdoc0.htm
こっちは機械翻訳
>>707には関係ないかもしれないけど。
もし初学者なら書籍が必要だと思う。
皆さん助言ありがあとう。
書籍は当時買った物が今でも推奨されているのはなんか感慨深いなぁ。
ここで挙がってないみたいだけど、
「8086 ASSEMBLY LANGUAGE」著.西村義孝 SOFTBANK
は良書だと思います。
725707:02/11/13 13:22
Packed File(600MB)中のファイル一覧を表示させ任意ファイルの出し入れ。
たったこれだけの事をやりたいだけなのに、先へ進めません。
>>725
それはアセンブラでやるようなことではないでしょう
727707:02/11/13 15:27
>>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
多摩板にすごい奴発見!
どうやったんだろ?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、自社名を出してみました。
仕事柄、ちょっとした小技です。
>>732
ほっとけ。
きっと割れ厨だ。
>>734
なんで割れ?
736デフォルトの名無しさん:02/11/18 05:44
メモリの実行モジュール領域を逆アセンブルし、それを修正しアセンブルってどうやったらいいのかな?
>>735
んなのマニュアル(オンラインだけど)見ればすぐわかる
割れ厨はMSDNのCDなんて落とさないだろ
738Warez:02/11/18 08:29
MSDNは必須だろ.
>>738
同意。F1で出ないヘルプなんて。

とか思ったがJava使い出してブラウザ開いておくのも大使立てまではないと思った、。
>>736
追記
×どうやったらいいのかな?
○どのツールがお薦めですか?
ところでPentiumってどういう意味?
>>741
486の次だから586にしようとしたんだけど、数値だけだと商標とれなかったり
したので、penta (5の意味。ペンタグラムとかペンタゴンとかのアレ)に、
接尾辞 -ium をつけた合成語。
8bitCPUから続く保証の名
744デフォルトの名無しさん:02/11/18 20:41
>>731
吐ける
ちなみにPentiumは形容詞。なので、比較的オフィシャルな場面では、
いちいち、ペンティアムプロセッサといった表記をしている。

あと、Intelかどうかはわすれたが、すでにヘクシアムとか、
セプティアムはとられてるというのを聞いたことがある。
746741:02/11/18 22:12
>>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アセンブラでプログラムを組んだことを思い出して
最近懐かしくなって、またやりたくなってきました。
751bloom: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 と言われるとキャラメルキーボードを思い出す。
>>757
かまぼこキーボードじゃないのか?
>>752
実際、たとえばMIPSにはローテイト命令がない(もちろんシフト命令はある)。
C言語にもシフト演算子があってもローテイト演算子はないわけで、なきゃ
ないでそれほど困らないということなのかな。
>>749
昔は解説サイトがいくつかあったんですけど、今はほとんどないです。
この辺でも参考にどうぞ

日本語
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

今はそれなりに詳しく書いたサイトのデータが見つかったら、もしよかったら編集してアップしますね。
761760:02/11/19 22:34
なんか日本語おかしい(汗
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 でこけます。
ソースはホームページのサンプルを参考に打ったので間違いないと思うんですが、どうしたらうまくいくでしょうか?
ダウン?どこから?
766manko_chinko ◆GLc2rpKRNM :02/11/21 21:09
linkerになんかオプションつけなきゃならんのでは    
>>764
>.186って・・・
768754:02/11/21 21:14
ダウンロードは、http://www.movsd.com/masm.htm ここから行いました。
サンプルプログラムは、http://www.d1.dion.ne.jp/~ecb/assembler/assembler00.html このページを参考に打ってみました。

これからガリガリと勉強していきたいとおもってます。
よろしくです。
>>764
Warning no stack segment
というエラー(じゃ無いんだが)が出るとか?

メッセージはよく覚えてないので、微妙に違うかもしれん。

770デフォルトの名無しさん :02/11/21 21:22
アセンブラの凄さを教えてください。
771754:02/11/21 21:26
アセンブラを勉強できれば、他の環境でもいいのですが、調べてみたところ、あいにくこれしか判りませんでした。
他に、いい開発環境があったら、教えて頂けないでしょうか?
お願いします。アセンブラの利点を教えてほしいんです。
773manko_chinko ◆GLc2rpKRNM :02/11/21 21:35
アセンブラじゃないと出来ないことは多い
>>771
アセンブラを勉強するだけなら D6パーソナルでいいんじゃない?
>>773
いいからお前はだまっとれ。
776 ◆iu9n5o3nSQ :02/11/21 22:24
 
777754:02/11/22 00:09
色々な方法で何回か試してみたんですが、上手くいきません。
C++とか入手して、__asm { } 内に記述した方が早いでしょうか;;
インライン・アセンブラ とかいって出来るような事が書いてありました
778もまずにパピコ:02/11/22 00:17
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でも先頭に出てるだろう。
>>777
とりあえずイソテルニーモニックなインラインアセンブラがすぐ使える
フリーのコンパイラは
Borland Delphi 6 Personal
http://www.borland.co.jp/delphi/
Digital Mars C and C++ Compilers
http://www.digitalmars.com/
使い方はマニュアル見るなり、ぐぐるなりすれ。
>783
ニーモニックが違うけど gcc も加えておいてくれ。
>>777
僕もMASM32でやってみたけど同じくリンカでこけました。
オプションの意味もエラーの意味もわからないので打つ手無し。
TASM&LINKなら通りました。
僕も最近始めたんだけど(707っす)処理系擬似命令の違いで
かなり躓いてます。
プログラマの隠れ里はアセンブラにMASM32使ってるんでTASM
持ってないならそっちがいいかも。
786デフォルトの名無しさん:02/11/22 07:24
シャープポケコンPC-G850Vを注文できるところ知りませんか?
>>785
オレも同じく。今日はヒマだから、これに取り組んでみるよ。
擬似命令で悩むなら >>719-720の方がいいと思うが?
配置やセッションの知識はC言語使えば判ってくるだろうし
789785:02/11/22 09:39
>>787
インラインアセンブラは擬似命令通ります?

やりたい事をどうアセンブリ言語で組み立てるのか、アルゴリズムが解らないと
悩むのならわかるのですが、それ以前で躓いてます。
数学習いに行ったら英語で教えられたって感じ?
あちこちサイトまわったけどみんなそんな感じでした。
COMファイル作るのに”ASSUME、ORGはおまじない”ってのは愛嬌だと思えても、
説明無しに擬似命令使(いまく)って、
mov ax,4c00h
int 21h
じゃ、何を教えたいんだろう?と思ってしまう。
790789:02/11/22 09:44
上の>>787>>788の誤りですぅ。
16bitリンカ
>>789
目的は?
1、COMの16bitバイナリを作りたい
2、アセンブラ言語を使い、勉強したい

1なら、確かに擬似命令を勉強しないとダメですね。 リンカの概念(セッション等)も必要です

2なら、D6パーソナルのインラインアセンブラで良いと思います。
 擬似命令はDB,DW,および DD 疑似命令しかありませんから悩む必要はありません。
またDelphiはリンカまでを1パスで行いますから、セッションとかのややこしい概念も必要ありません
794デフォルトの名無しさん:02/11/22 14:37
お前らここ使えそうじゃないですか?

http://www.cpuid.com/
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

ftp://ftp.microsoft.com/softlib/mslfiles/lnk563.exe
↑これを使えばリンク失敗しないと思われ。
ハードウェア資源を最大限生かせる          のか?
803789:02/11/22 20:28
ありがとー >>801

>>792,>>796
初心者対象にした「アセンブラでプログラミング」の解説サイトのサンプル
が通らないのです。処理系擬似命令の違いで。
>>764さんが参考にしたサイトでも、NOWSMART ASSEMBLER,MASM32,LASMを紹介
しておきながらサンプルはTASMでやってたりするんです。
>>764のリストですがTASM環境、MASM環境なら通りますが、MASM32では通らな
いのです。インラインアセンブラは問題外ですよね。

これは一例で、ほとんどがアセンブリ言語でプログラミングと称していても
サンプルは処理系依存の擬似命令を使いまくっているわけで、この為
Turbo/Macroアセンブリ言語でプログラミングになっていて、それでいて
その部分を説明していないんだから、何を教えたいんだろう?と思うのです。
ハードウェア資源っつっても今じゃOSの縛りがあるからなぁ(当然だけど)
窓環境とかで使うとすれば画像処理にMMX/SSEあたりを使うぐらいしか思いつかん

スマン、当方エロゲヲタだ(藁
>>303
ある程度しかたないさ。「アセンブリ言語でプログラミングと称し」ている時点で、言語だもん。
「ニーモニックでプログラミング」なら少しはどうにかなるかもしらんし、ならんかも。
ええと>>764のコードには INT 21h があるけど、これって DOS環境でしか動かないんじゃ?
807764:02/11/22 23:44
>>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があるから、それを見てみるといいです
812764:02/11/24 01:16
昔、X68k 触ってたとき、scd.x とかいう、アドレスレジスタや、データレジスタ、スタックポインタの値が、一目でわかるツールがあったのですが。そういったものは、市販になるのでしょうか?

デバッカがあって初めて、動きをが把握できると思っているのですが・・
ご指導お願いいたしますm(__)m
>>812
ソースレベルデバッガか、アセンブラのデバッグには
あんまり使い易くないと思うのは漏れだけ?

Win32ならTD32がフリー。
http://www.borland.co.jp/cppbuilder/freecompiler/
のTurbo Debugger
>>764
デバッガいいよね。
DOS CONSOLE ならwinは標準でDEBUG.EXE ってのを持ってるよ。
WIN用ならBorlandのTurbo Debuggerってのあるよ。(無料)
http://www.borland.co.jp/cppbuilder/freecompiler/turbodebugger.html
他にも色々あるけどこの辺からどぞ。

話変わって、MAsmEd って、なんか良さげなIDE見つけたんだけど、使ってる人
居ますか? うちじゃ(WIN2000)PROJECTが作れない、CONSOLEが上手く動か
ないんですよぉ。
815814:02/11/24 02:38
かぶちゃったぁ。
809も僕なわけですがMASM32ならCode View系のデバッガが欲しいとこ。
TASMならTurbo Debuggerでいいんだけど。
816814:02/11/24 02:47
http://membres.lycos.fr/hitchhikr/MAsmEdMenu.html
書き忘れましたMAsmEdのURLです。誰か検証お願いしますぅ。
LASM体験版ならデバッガもついてくる。
学習用ならこれで十分かも?
818814:02/11/24 03:04
デバッガで1ドットづつ描画されるのを見た時は感動したなぁ。
RATSでIPLから追っかけてた日々が懐かしかったり。
819814:02/11/24 07:22
MAsmEDの件は解決しました。
これ状況感知型ヘルプって言うのかな?
わからない擬似命令とか選んでF1でヘルプ見られてとってもグッ!
お騒がせしました。
820デフォルトの名無しさん:02/11/24 22:38
PC/AT互換機とういうか普通のPCで
x86のout命令使いたいんですが、
ポート表とか解説してあるサイト知りませんか?
821810:02/11/24 22:53
>>811
どうもありがとうございます。
アセンブラソースを発見し、エミュレータで実行もできました。
ソース内容を見て研究してみます。
また分からないことがあったら質問させてください。
>>820
ひょっとしたら、ここにあるかも
http://www.oadg.or.jp/
824820:02/11/25 00:08
>>823
ちょわぁー!
まじサンクス
825デフォルトの名無しさん:02/11/27 00:35
826デフォルトの名無しさん:02/11/27 20:04
.code 16 は
「ここから16bitステートのコードを書きますよ」という意味だと思いますが
.textはどういう意味なんでしょうか?
827デフォルトの名無しさん:02/11/27 20:07
追い出されてやってまいりました
http://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なんでしょうか・・

教えてください・・


関係無いけどアセンブラリンク
http://www.ueda.info.waseda.ac.jp/~watanabe/Unix/mmx_3dnow/
>>827
ARM7TDMIなどでは、普通
ARMステートではR0-15
ThumbステートではR0-7
を使う

ThumbステートではR8-15をHighレジスタH0-7として一部の命令で使用可能。
これと区別するためR0-7をLowレジスタと呼ぶこともある。
>>826
対象のアセンブラはなんだ?
普通「ここからtextです」ね。なお、textというのは命令のことなのです。
831」 ■┏┓■Ly酉~~ :02/11/28 21:35
MASM5.0で組んでたらアセンブル中に戻ってこなくなった。仕方なくリセット。
エラーメッセージすら出ないし、アセンブラも落ちることってあるんすね。(DOSなのに……
6.0買えってことなんでしょーか。(´・ω・`)ションボリック
フリーになってmasm32としてでてるよ 
>>831
MASM の最新版が欲しいのなら >>639-640
>>832-833
でもDOSでは動かない罠。
dpmi 使えば動くと思うけどそこまでせんか。
>>835
dpmiだけでは無理だった気がします。
wdosxとかいうのと併用すれば動くかもしれませんが。
そこまでするならLASMかBorland C++ Suite あたりの
安いアセンブラ買ってきた方が早い気もするが。
838835:02/12/02 07:21
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無くしちゃって落とせるんならホスィ
ヒントだけでもキボン
856855:02/12/05 04:06
すいません自己解決しました
win98ddkに入ってるのね……
しかもファイル名も変わってるし
857855:02/12/05 04:32
でもこれ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命令で決まるはずだが?
866劇的初心者:02/12/07 03:54
<Enter>キーについて教えてください
たとえば会計プログラムで 
"合計金額はですか?"→"500" 500の後に<Enter>キーを
押すと次のコマンドに移るといったようなやり方どうやるんでしょうか?
>>866
...アセンブラで?
868866:02/12/07 09:32
すいません、書き方変でした。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
---------------------------------------
>>868
DOS 8086なら >>49 でint 21hあたりを調べてみては?
>>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 割り込みベクトル
>>877
ありがとさん
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が立ってるみたい
なんですが、どういう仕様になってるんでしょうか?
2byte目の上位2bitはr/m(レジスタメモリフィールド)
例)
C1E807 shr eax,7
C12807 shr dword [eax],7

詳しくはインテルの日本語マニュアルなどを参照
http://www.intel.co.jp/jp/developer/download/index.htm
888get!!
889886:02/12/12 22:39
>>887
あ、盲点でした。
ありがとうございます。
890デフォルトの名無しさん:02/12/13 15:03
Z80ニモニックで、Aレジスタの下位4ビットが

OR240
DAA
ADDA,160
ADCA,64

としてASCIIコードでの“0..9,A..F”に変換でき
るってのを暗記してたが既出ですかね…?
#x86ニモニックにもちょっと直せば使える
「そうかDAAってこう使うのか!」とリア厨の時
感動したのが懐かしい…死半世紀前(泣)
891890:02/12/13 15:06
げ。コピペタブが飛ばされた。鬱死

OR 240
DAA
ADD A,160
ADC A,64
892デフォルトの名無しさん:02/12/13 15:36
(´∀`(⊂(ΦωΦ⊂ )⊃=3
 ↑
 >>891
893」 ■┏┓■Ly-┛~~~ :02/12/16 06:23
うちの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版をコンパイルしよう
896」 ■┏┓■L_酉~:02/12/17 04:50
>>894 PC9821ね、スマソ
>>895 どうもです。今、汎用でフリーのアセンブラを9801/21のDOSで
試してるんだけど結構動きますね。
AT機WIN上の98エミュレータでも動いたり(遅いけど)、微妙に驚愕っすよ。
897デフォルトの名無しさん:02/12/17 21:15
最初にaddとかmovの命令をつんだMPUって何?
>>897
4004かな?8008?
>>898
少なくとも 8008 より 4004 の方が早いと思うが。
最初に好きとか嫌いとかいいだしたCPUって何?
わらえばいいのか?
902デフォルトの名無しさん:02/12/18 02:42
スレ違いなのかもしれませんが・・
厨房プログラマです。
私はプログラム書くとき、コメントとか改行をこまめに入れる癖が
あるのですが、私のプログラムを読んだ同僚厨房から
「コメントや改行たくさん入れるのはパフォーマンスが
悪くなるんだぞ」
と馬鹿にされました。この厨房の間違いをアセンブラレベルで
証明しようと「パターソン&ヘネシー」とかひっくり返して
探したんですがいい例がみつかりません。
自分が厨房なのは百も承知なのですが、もっと厨房なやつから
ばかにされたことが悔しくてなりません。
どなたか、私のかわりのにこいつの間違いを正してやってください。
それともやっぱり私の方がもっと厨房なのかな?
中学生でパターソン&ヘネシー
読んでるの?んなわけないよな
読んでてそんな質問するなら、1万どぶに捨てたようなもんだ
904デフォルトの名無しさん:02/12/18 03:30
>>900
それなんの歌だっけ?
>>904
ときめものことが言いたいのか?
>>900
HuC6280
>>902
昔のbasicの時代の遺物でなけりゃ、奇妙な勘違いだね。
同じソースに無駄にコメントや改行入れてコンパイルして、完全に同じobjが作られる事を見せてみたら?
>>907
ちがうだろ。今でもインタプリタな言語(今風だとスクリプト言語)だったら遅くなる。
コンパイラが実行形式(Javaのバイトコード含む)吐く言語なら遅くならん。

だが、インタプリタであっても初回の解析時に構文解析木やバイトコードに変換する
処理系が多いから、ループや関数の二回目以降の実行速度は変わらなくなる。
909907:02/12/18 11:30
え?アセンブラのソースの事じゃないの? スクリプトならそりゃ別の話だね
910908:02/12/18 12:39
>>909
>>902は「アセンブラレベルで証明したい」と書いてるだけで、
そのプログラムがアセンブリ言語で書かれてるとは書いてないが?

アセンブリ言語のソース読める奴が、アセンブラ/コンパイラ型の言語で
コメントや改行増やすことで遅くなるなんてアフォな勘違いするとは思えない。
>>910
確かにね…。

その発言者が「どの段階で」遅くなるから云々
なのかがわからないとなんともかんとも。

一応自分の知ってる範囲でモノを述べると、
M80やMASMはコメント&改行が増えると明らかに
アセンブル速度は低下するが、その幅は
マクロを多用した場合の比ではなく誤差の範囲(数%)。
BASIC(N88やMSX)では最初の1回目の実行に
関しては僅かに遅く感じるが、これも誤差の範囲(数%)。
PerlとJavaの場合は数万行ものソースでも食わさないと
コメントの有無による違いがほとんど体感できない。
Rubyについては常用してないので何もいえない。
C/C++の場合はプリプロセスに付いてのみ負荷が掛かってるものと
思われるが、今時のマシンでは気にする暇も無く処理終了w
#最適化フェーズのほうがよほど負荷掛かってると思うぞ。
;>>950
;今度こそ立てろよ。
913:02/12/18 18:21
突然ですが、
アセンブラってXeon、P4サポートしているのあるんですか?
8086でよぉ、debugでさぁ、コメントってぇ、入れることで禁のぉ?
915907:02/12/18 21:58
>>914
DOSの? とりあえず出来ないって答えになるけど
>>913
聞いた事ないが…。
いざとなればdbでコードを埋め込む技がある。
>>913
MASM 6.15 なら対応してるんじゃねーの?
>>913
MASMはいまや無料配布(DL可)だよ…。
Windows??DDKとかって奴に入ってる。(英語版)
で、最新のCPUにはパッチを当てて対応する。
>>911
ツーか、ネタだろ。
そんなことも説明できない厨房が「アセンブラ」スレなんか見るわけないと思うぞ。
パッチ当てだと 6.14 にしかならんわけだが。
そういえば今日本屋で見かけた本にも MASM 6.14 の入手法は書いてあったが、
6.15 の入手法は書かれていなかったな。
922902:02/12/19 00:24
>>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
その速いつー話で、いやに仕変しにくいソースが
どれほど転がっていたか...
最後に担当者居なくなって、派遣社員の漏れが保守されられたよ。
仕変?仕様変更?
926924:02/12/19 01:30
>そういえば今日本屋で見かけた本にも MASM 6.14 の入手法は書いてあったが、
>6.15 の入手法は書かれていなかったな。

http://msdn.microsoft.com/vstudio/downloads/tools/ppack/download.asp
で適当にvcpp.exeかvcpp5.exeをDLしてコマンドプロンプトで/C オプション
つけて解凍してみそ。
927デフォルトの名無しさん:02/12/19 01:48
>926
あなたすごいです。
横からですけど、いただいまた^^
自分も6.15探していたので、かなりありがたいです^^
本当にありがとうございます!
vcppとvcpp5の違いって何?
929@:02/12/19 01:55
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と送信するプログラムの
クライアントがわの作り方を調べたいんですけど、
作り方を説明してるようなサイトを知っていたら教えてもらえないでしょうか。
サンプルソースを持ってる方いたらもらえないでしょうか。
932@:02/12/19 02:30
>>930
サンクスってなんだ?
コンビニか?
>>931
何故にアセンブラで?
高級言語でソケット使えば簡単にできる物を
わざわざアセンブラで苦労して作る必要があるの?
>>933
其処にアセンブラがあるから
935931:02/12/19 03:47
1つ、アセンブラが好きだから。
2つ、ファイルサイズを小さくしたいから。
3つ、高級言語では俺の力ではゆうずうが聞かないから。
4つ、お遊びで、独自言語(コンパイラ)を作ってるから、それにも使いたいので。
などなど
意味わかんない質問してスミマセン。
936931:02/12/19 03:48
>>934
YES
自己満足。なんかすごそうだろ。俺アセンブラ使って作ったんだぜーって(藁
938937:02/12/19 04:06
実際はただの無駄骨なだけなんだけどな(激藁
まあ無知なうちに一回ぐらいやっておくと二度と馬鹿なことはしないでしょ。
>>937
無意味な煽りは、やめなはれ
ここはアセンブラのスレで>>931の書いてる事に落ち度は無い
940931:02/12/19 04:28
>>937
すごいことだと思ってません。
たとえばアセンブリ言語アセンブラを作ったとしても、
それは1つ1つの命令をデバックすれば作れるものだから、
すごいというより、ただの根気と初心者以上の知力があれば出来るかと思う。

>>938
はい、そうですね。
自分にもっと力があればこんなことはやろうとしないかも知れませんね。


お願いです、どなたか>>931の質問に答えてもらえないでしょうか。
941931:02/12/19 06:18
あ、トランスポート層のプロトコルはUDPでもいいです。
>>931
糞2chなんかでは聞かない方がいいよ
ヴァカが多いから
探せば C で書かれたサンプルソースは見つかりそうなものだが、
アセンブラのはそう簡単には見つからんだろう。
それから C + Win32API で書かれているものを ASM + Win32API に
書き直したところで、ファイルサイズが劇的に減るとは思えない。
944931:02/12/19 16:56
>>943
知らないなら書くなやカス
WinSock逆アセして分かったよ
>>943
だから文盲は出てこなくていいって。
946931:02/12/19 20:32
>>944
おぉそんなものがあるんですか、早速逆アセンブラして、読んでみます^^
たすかります〜^^!

>>945
ありがとうございます^^;
ペコ↓m(_ _;)m↓ペコ
おい、↓の>>1!このスレの 1をそのまま使うんじゃねぇ!!

アセンブラヽ(`Д´)ノモルァ
http://pc3.2ch.net/test/read.cgi/tech/1040297337/
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と同様ゼロページを積極的に活用する事でそれを補っています。

スーパーファミコンのソフトはほとんどアセンブラで書かれていたというから
驚きます。
955931:02/12/20 11:48
逆アセンブラしたらcall KERNEL.506ってコードがあるんですけど、
これはkernel32.dllを呼び出してるんですか?
引数は506って意味ですか?
956931:02/12/20 11:51
あと、逆アセンブラみなさんはなにを使ってますか?
フリーの使いやすい、お勧めなどあったら教えてください。
nasmについてくる奴
masmについてくる奴
bcc32とかボーランドについてくる奴
VCについてくる奴
GNU binutil の objdump
以上
958デフォルトの名無しさん:02/12/20 12:10
>>953
256 個もレジスタがあるのに..
diswinのソースが少し勉強になった
>>955
kernel.dllの序数506のエントリを呼んでる。
番号→名前の調べ方は忘れた。.def見れば書いてあった様な気がするが。
ちなみに、引数はそんな所に出て来ない。
>>958
Apple][でマシン語のプログラムを組む時、Apple-Basicがゼロページを
食い荒らしていて、結構面倒かった記憶がある。
ところで次スレ建てなくて良いのか?
963949:02/12/20 23:23
>>950
何故にいきなり「ドライバ」が出てくるのか ?
何故に call 命令しらないと言われるのか ?

2ch はわからんことだらけだよ。
>>963
そのうち「これが電波なんだ」ってわかるようになるよ。安心すれ
966931:02/12/21 01:44
>>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ですけど・・・・
あるのかないのかよくわからん…
>966
ドライバを書くためにWinSockを逆汗してるんだろ?
そうじゃないなら、素直にWinSockを使えよ。
WinSockの使い方が分からんのなら、こことか見とけ。
http://www.nakka.com/lib/inet/
970931:02/12/21 08:12
>>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 の機能全てを使い切る。

どれでも好きなのを選べよ。
厨房は気が短い。
馬鹿は一生馬鹿のまま。
>>972
自己紹介か ?
974962:02/12/21 21:37
>>965
あ、それなんだな。気づかんかった。
975931:02/12/22 00:59
>>971
2番を目指したいですね。。ファイナルアンサー!!

>>973
ワラタ
>>975
> 2番を目指したいですね。。ファイナルアンサー!!

まあ、先は長そうだけど、頑張れ。
TRY PC別冊って内容的にどうかな?
>>977
>>977
最初のとっかかりとしては悪くはない。
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 その他まだ持ってるなぁ。
984980:02/12/25 20:34
>>981 ゴメン書き方が悪かったみたいです。
 要は、Win2000上で、CP/Mファイルをアセンブルしたいわけで・・・・
>>983 以前にWin95,98上でエミュレートするのは持っていたのですが、
 2000上になると、FCBエラーで動作しないわけで、ただコンパイルしたいだけ
 なんですが、.A86→.H86 自分で作るしかないのかなって作れるかどうかは不安!!
>>984
そういうことか。
DOS用でもFCB互換コール使わないものがあった様な気がする。
どんなのだったかなー。全然記憶にねーよ。
Win2k上のDOSemulator上のCP/Memulatorでアセンブルするというのはどうでしょう?
987980
>>986
その手がありましたか! 一度やってみます。
ありがとう!