機械語なら俺に質問し ..
[2ch|▼Menu]
116:デフォルトの名無しさん
03/03/06 23:25
386において、プリフィックスはオペコードの前に来るんだけど
これって先頭にプリフィックスがあるかどうかってどういう風に
判別してるの?

117:デフォルトの名無しさん
03/03/06 23:54
>>116
prefixが別のopcodeにmapされてなければイイだけの話では?

118:デフォルトの名無しさん
03/04/02 14:50
URLリンク(www.falcom.co.jp)
これ修正パッチ(というか実行ファイルそのもの)なんだけど
これってフルスクリーン専用ゲームなんだけど、ウインドウモード専用に出来ない?

バイナリエディタで開いても俺にはさぱりわからない・・・


119:デフォルトの名無しさん
03/04/02 22:12
>>118
俺には無理
つか、出来るやつなんて居ないだろ
Cで書かれてんだし

120:デフォルトの名無しさん
03/04/04 09:57


121:デフォルトの名無しさん
03/04/04 10:14
>>118
仮想OSでできなかったっけ?
グラフィックボードにもよるらしいけど。
死ぬ気で勉強すればつくれんじゃん?

122:デフォルトの名無しさん
03/04/04 11:42
こんなゲームでも一応DX使ってるだろ
仮想OSだとその辺が・・・

123:デフォルトの名無しさん
03/04/05 05:28
ロボット作って

124:118
03/04/06 09:15
何とか自力で改造できました。
どうもありがとうございました。


125:あぼーん
03/04/06 09:19
  ∋8ノノハ.∩
   川o・-・)ノ <先生!こんなのがありました!
__/ /    /   
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
 ...|| ̄ ̄ ̄ ̄||
URLリンク(saitama.gasuki.com)

126:デフォルトの名無しさん
03/04/08 09:30
昔はハンドアセンブラなんてのもあったな
  _、_
( , ノ` )      …
  \,;  シュボッ
    (),
  _、_
( ,_ノ` )y━・~~~  フー…

127:デフォルトの名無しさん
03/04/09 14:44
その昔、UNIX の X-Windowシステムを動的にアップデートした神がいるらしい…。

バイナリや環境のファイル系を書き換えた後、
走ってるプログラムのメモリ空間を調べて、
使ってるユーザに気付かれることなく、
新たなプログラムで書き換えたらしいのよ。



128:デフォルトの名無しさん
03/04/09 15:02
super jmp

129:デフォルトの名無しさん
03/04/09 15:05
>>118
フルスクリーンとウインドウモードではコードが違うわけで、
そこらへんを考慮して作られているのなら
簡単にウインドウモードにできるわけだが。

デバッグしやすいようにウインドウモードにできるようにしているだろうと思う反面、
できるようにしているのならそういう機能が元からゲームについているはずだから、
できるようになっていないのではとも思う。

130:デフォルトの名無しさん
03/04/09 16:19
>>129
フルスクリーンしなくても早いよねー。AlephOneとか。

131:デフォルトの名無しさん
03/04/16 01:37
でも、みんなZ80くらいだったら
ちょっとしたサブルーチンの手直しくらいは
ダンプ見ながら16進でガリガリやってたよね?
オレだけ?

132:デフォルトの名無しさん
03/04/16 16:54
同士よ(w
PC88のグラフィックのスクロールくらいのはよくHEX直書きしてたなぁ。
VSYNCとめてOUTでVRAM切り替えてメモリ転送×3回。
もちろん今じゃ書けん。。。

133:山崎渉
03/04/17 15:34
(^^)

134:118
03/04/18 23:14
あげ

135:デフォルトの名無しさん
03/04/18 23:18
小学生の頃、IOにのってた機械語ソースを必死に打ち込んでインベーダーやりました。
今はVBで精一杯な30才です。よろしくね

136:デフォルトの名無しさん
03/04/18 23:32
I/O なつかしいな。
テンキーで16進数打ち込んで、リアルタイムで縦横チェックサムが
出るプログラムを作ったよ。最初BASICで、そのあとハンドアセンブル
で機械語化。
そのプログラム使ってEDASとかいうアセンブラを打ち込んだ。


137:山崎渉
03/04/20 03:42
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

138:デフォルトの名無しさん
03/05/04 16:38
_| ̄|○Z80について質問させてください。
40本の端子の名称と働きと信号の流れについて、Z80ファミリのICの種類と働き、汎用レジスタ、専用レジスタの違い・・・
学生で今こんなことを勉強しているのですがサパーリ分かりません(ι´д`)

139:デフォルトの名無しさん
03/05/04 16:44
インラインアセンブラでHLT吐こうとしても
特権何とかエラーが出て実行できない
どうすればよろしいのでしょうか?

win2000でvc++使ってます

140:デフォルトの名無しさん
03/05/04 17:18
>>138
ネタか ?
万が一マジだと言うなら、何のために勉強してるか書いてくれ。
答えることが多すぎるし、どのレベルで回答すればいいか誰もわからんので、たぶんスルーされるよ。

>>139
Windows2000 の仕様だからあきらめろ。
(と言うか、一体なにをやりたいんだか...。)

141:138
03/05/04 17:27
_| ̄|○マイコンボードってのを作ってます

142:デフォルトの名無しさん
03/05/04 17:52
>>141
本物 (=Zilog製) の Z80 なのか ?

143:デフォルトの名無しさん
03/05/04 18:43
EI
HALT


144:デフォルトの名無しさん
03/05/04 18:57
>>139
NTカーネルだとドライバ組むしかないな
DDKで検索してみれば?

145:デフォルトの名無しさん
03/05/04 22:06
>>138
激しく板違いなので、プログラム板に関係する部分の質問を
簡潔にまとめて質問しなおしてね。
今の状態は荒らしにしか見えないっす。

146:デフォルトの名無しさん
03/05/05 16:39
近藤マシン語臣

147:デフォルトの名無しさん
03/05/05 22:07
リング0は9xですらドライバ要るかもな

148:デフォルトの名無しさん
03/05/20 21:48
DX使わずに
アセンブラで、ブロック転送を行うコード書ける人居ますか?


149:デフォルトの名無しさん
03/05/20 21:56
工業高生はマイコンプログラミングの実習の時
やりたい事をフローチャートに描き
それをマニュアルのコピーみながらアセンブリ言語に直し
機械語対応表をみながら16進機械語に直し
マイコンボード付属の16キーで打ち込むっ

150:デフォルトの名無しさん
03/05/21 00:37
>>149
それが、慣れてくるとフロー書きとアセンブリ作業をすっ飛ばして
「やりたい事を16キーで打ち込む」に昇華されるのだよ

151:デフォルトの名無しさん
03/05/21 19:29
>>150
さすがにそれは....

152:デフォルトの名無しさん
03/05/26 16:32
mipsで困ってます。助けてください。
4017b4で 「2 TLB exception (load or instruction fetch)」とかいう
エラーが出てます。


 bool* bi = p_ledCmdVal->GetLedIndexBool(); //問題のC++コード

 //機械語
 4017ac:8c430000 lw    v1,0(v0)
 4017b0:00402021 move  a0,v0
* 4017b4:8c620010 lw    v0,16(v1)
 4017b8:00000000 nop
 4017bc:0040c821 move  t9,v0
 4017c0:0320f809 jalr    t9
 4017c4:00000000 nop
 4017c8:8fbc0010 lw    gp,16(sp)
 4017cc:8fbf0020 lw     ra,32(sp)
 4017d0:8fb00018 lw    s0,24(sp)
 4017d4:03e00008 jr     ra
 4017d8:27bd0028 addiu  sp,sp,40

153:デフォルトの名無しさん
03/05/26 16:39
 bool* bi = (*p_ledCmdVal->GetLedIndexBool)();

154:山崎渉
03/05/28 12:43
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎―◎                      山崎渉

155:デフォルトの名無しさん
03/06/02 15:27
010001010010111000111010100011010101100100101001010010101101000
1101000101010101110010101100000101100010

156:1だよん
03/06/02 18:36
マトリックスに0と1だけでプログラミングできる奴いなかったけ?

157:デフォルトの名無しさん
03/06/02 21:25
>>156
そういや、マトリックスの新作は糞だったな
確かにCGは良いのだが、、、あの終わり方はないだろう・・・

158:デフォルトの名無しさん
03/06/03 11:30
>>151
>>130とか>>131とか

159:156
03/06/03 13:24
>>156の名前欄は気にしないでください。

160:デフォルトの名無しさん
03/06/03 22:38
>>127

し○だ先生のところの方ですか?

161:デフォルトの名無しさん
03/06/03 22:40
死んだ先生

162:デフォルトの名無しさん
03/06/03 22:42
みてね♪
URLリンク(www1.free-city.net)

163:デフォルトの名無しさん
03/06/03 22:50
DB 0CDh, 01h, 00h


164:デフォルトの名無しさん
03/06/05 23:11
本気で質問です。

コマンドプロンプトを使うと、
C:¥>
と出ずに、
C:¥>Documents and Settings¥○○>
と出てしまいます。
どうすれば、
C:¥>
と出せるのでしょうか?

ここで、つまづいています…
使っているOSはウィンドウズXPです。

165:デフォルトの名無しさん
03/06/06 01:32
>>164
C:\Documents and Settings\○○>
が長いのが気に入らないのかな?

PROMPT=$N:\$G
ってすれば
C:\>
って出るよ。

ユーザー環境変数に追加しておけば、
毎回指定しなくてもいい。
 システムのプロパティ→詳細設定→環境変数→ユーザー環境変数→新規→
 変数名:PROMPT 変数値:$N:\$G

なぜ機械語スレに書くのか分からんが。

166:デフォルトの名無しさん
03/06/06 09:34
>>165
ありがとうございます。
全くのド素人で、どこに質問すれば良いのかさえも解らなかったのです。

167:デフォルトの名無しさん
03/06/06 14:41
>>166
> 全くのド素人で、どこに質問すれば良いのかさえも解らなかったのです。

ねえ、ローカルルールぐらい読んだらどうよ。

> あらゆる質問はまず すれ立てるまでもない質問はここで スレにしてください。

168:デフォルトの名無しさん
03/06/08 04:51
>>167
なるほど、スレ立てるまでも無い質問はここでしてください。って言うのが在るのですね。
御親切に、ありがとうございます。
以後、気を付けます。

169:デフォルトの名無しさん
03/06/21 11:47
機械語の御プログラミングはどこで勉強すればいいのでしょうか?
プロセッサのマニュアルでオペコードをまずは暗記するところからでしょうか?

170:デフォルトの名無しさん
03/06/21 12:17
ここのスレのみなさんでNTLDR(w2k)を一緒に輪読していきませんか?
当然逆アセンブラなど使いません。外国語をそのまま飲み込むがごとく、
機械語のまま(16進数での表示にはなりますが。。。)素直に読みます。
これならライセンス違反にもならないですよね。
日付は1999/12/17 21:00のものを予定しています。

171:デフォルトの名無しさん
03/06/21 22:09
ハンド逆アセンブルも逆アセンブルだから、
本当に機械語のまま読まんとあかんのやな。
俺には無理だー(やる気が無いから)。

172:デフォルトの名無しさん
03/06/21 23:29
IA-32 インテル(R) アーキテクチャ・ソフトウェア・デべロッパーズ・マニュアル
上巻:基本アーキテクチャ (日本語 PDF ファイル: 4,183KB)
fURLリンク(download.intel.co.jp)

IA-32 インテル(R) アーキテクチャ・ソフトウェア・デべロッパーズ・マニュアル
中巻:命令セット・リファレンス (日本語 PDF ファイル: 9,139KB)
fURLリンク(download.intel.co.jp)

IA-32 インテル(R) アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル
下巻:システム・プログラミング・ガイド (日本語 PDF ファイル: 7,838KB)
fURLリンク(download.intel.co.jp)

とりあえず、これらは熟読しないとダメだな。

173:デフォルトの名無しさん
03/06/21 23:40
386の命令は可変長。命令の構造は以下の通り。この辺りは誰でも知ってるか。
前置バイト + オペコード + MODRM + アドレスディスプレースメント + 即値定数

386のこの命令の表現形式を頭に叩き込んでるところ。掛け算の九九並に体に馴染ませてから
NTLDRを読み始めたいと思います。

174:デフォルトの名無しさん
03/06/22 00:36
昔リスティングファイルを読んで
マシン語とアセンブリ言語の対応を表にしたことがあったなぁ。
CC(INT 3) と CD xx(INT xx) なら今でも覚えてるけど、
他はおぼろげだなぁ。

175:デフォルトの名無しさん
03/06/22 05:48
ntldrを読もうとしましたが、どうにも難しい。
BIOSから直接ロードされるファイルはNTDETECT.COMなんでしょうか。
適当に読んで行けばそのうち分りそうなものですけど。
今の時点では、NTDETECT.COM -> ntldr -> NTOSKRNL.EXE
の順番にロードされると勝手に予想してますけど。
NTDETECTの中を見ると十六進表記で'66'が異様に沢山ならんでいます。
0x66の意味は上のインテルのマニュアルの中巻の2章に載っています。

命令プリフィックス(上では前置バイトと書いたけどこれは古い言い方らしい)とは
G1 ロック及びリピートプリフィックス
G2 セグメントオーバーライドプリフィックス
G3 オペランドサイズオーバーライド
G4 アドレスサイズオーバーライド
の4グループに分かれます。これらはそれぞれ1byteを使って表現されます。
ということで、命令プリフィックスのバイト数は0から4バイトになると思われます。
グループの順序は不問。一つのグループから複数のプリフィックスを指定することは
ダメらしいです。1バイトオペコードマップに埋め込まれて記載されてます。

個別の値をこの際暗記してしまえば、命令文に対する見通しも良くなるはずです。
カッコ内は続くオペコードが決まっている場合のそれ
G1 = {F0(LOCK), F2(REPNE,REPNZ), F3(REP,REPE,REPZ)}
G2 = {2E, 36, 3E, 26, 64, 65} それぞれCS, SS, DS, ES, FS, GSセグメントを指定
G3 = 66
G4 = 67
です。なんのことはありません。


>>174
しばらくは機械語の読み方の練習になりますが、
読めるようになったら一緒にがんばって逝きましょう。

176:デフォルトの名無しさん
03/06/22 06:15
ntldrから起動されるものはNTOSKRNL.EXE以外にも
hal.dllやNTKRNLPA.EXEなんかも同時にメモリにロードされるのかな。
ntldrでどこまで準備しているのかは分らないけど、
おそらくPE、PGビットはオンになっているはず。

この辺りの事情に詳しい人はWindows板なんかにいるのかな。
ちなみに2000のntldrはXPをブートできないらしい。
URLリンク(www.sitetm.net)
NTOSKRNL.EXEに制御を渡すまでにどこまで準備しておくのか。
ここがカーネルの設計方針とどう関わってくるのか、ヘタレな漏れには
いまいち分らず。Linuxは例外として、BSDでは古いローダでも
起動できるのを考えると、あんまり良い印象なし。

177:名無し@沢村
03/06/22 06:38
>>173
違うよ。
オペコード(1または2バイト)+MODRM(1バイト)+SIB(1バイト)+アドレスディスプレースメント(1または2または4バイト)+即値定数(1または2または4バイト)
だよ。
またMODRMはmod(7-6ビット)、reg(5-3ビット)、R/M(2-0ビット)の各フィールドからなるんだよ。
例えば、MOV(reg1からreg2へ)命令の場合、
100100w 11reg1reg2なんだよ。
wというのは、16ビットか32ビットかを指定するもので、それによってレジスタが決まるんだよ。
命令によってはオペコードの中にwフィールドがないものもあり、その場合はregフィールドの値だけでレジスタが決まるんだよ。
まあ、他にもややこしいことはいろいろあるよ…



178:デフォルトの名無しさん
03/06/22 06:58
MODRMの説明
MODRMとはmod(上位6,7ビット)とR/M(下位0,1,2ビット)の名前を結合。
MODRM = mod + R/M
R/Mはmodビットの状態(11bのときはレジスタ)によってレジスタオペランド(R)、
メモリオペランド(M)の両方を指定できるという意味からR/Mらしい。
真中の3ビットは、レジスタオペランドの指定やオペコード拡張用
(lgdtやlidtみたいな特殊なもの)に使われます。

mod(2bit),真中(3bit),R/M(3bit)

7 6 5 4 3 2 1 0
mod  真中   R/M

というもの

179:デフォルトの名無しさん
03/06/22 06:59
まず最初に表現したい命令ありき。そのなかで必要となるオペランドの
有無、種類によってバイト長も変わってくる。

1.オペランド数がゼロの場合は1バイト命令
8bitをフルに使って命令を表現

2.オペランド数が1の場合も1バイト命令
5bitで命令を表現し、残りの3bitでレジスタを指定する。
7     3 2   0
オペコード  レジスタ
という形

3.オペランド数が2つ(レジスタ、メモリ)の場合は2バイト命令
1バイト目は8bitでオペコードを表現
2バイト目はmodは{00b,01b,10b}のパターン
R/Mはメモリオペランド
真中はレジスタ

4.オペランド数が2つ(レジスタ、レジスタ)の場合は2バイト命令
1バイト目は8bitでオペコードを表現
2バイト目はmodは11bのパターン
R/M、真中でレジスタ二つを指定

という基本的四つの形式。
真中3ビットを特殊命令に使うケースはここでは省略してます。

180:デフォルトの名無しさん
03/06/22 07:30
MODRMにおけるレジスタ指定のための3bitのパターンをここで暗記。

汎用レジスタを指定する表現
    32bit  16bit  8bit
000   EAX   AX   AL
001   ECX   CX   CL
010   EDX   DX   DL
011   EBX   BX   BL
100   ESP   SP   AH
101   EBP   BP   CH
110   ESI   SI   DH
111   EDI   DI   BH

セグメントレジスタを指定する表現
000   ES
001   CS
010   SS
011   DS
100   FS
101   GS
110   (予約)
111   (予約)

181:デフォルトの名無しさん
03/06/22 07:37
レジスタを表現する3bitの具体的値ひとつにしてもそれだけでは
4通りの意味に読み取れる(000bにしてもEAX,AX,AL,ES)。
それを判別するのはオペコードの種類によって異なるということ。

一般的にはMODRMが必要になる形式はオペランドが二つという命令。
先頭の1byteを見て、オペランド数がいくつなのかをまず連想すれば
速く読めるようになるかな。1byte目が0fなら2バイト命令ということで
MODRMは3バイト目となるのも大事か。

MODRMは上位2bitを見てレジスタ―メモリなのかレジスタ―レジスタの
どちらのパターンなのか判別。16進数で言えば、MODRMが"c0"より大きい値のときは
レジスタ―レジスタというパターン。それ以下のときはレジスタ―メモリ
という形式となる。
そしてレジスタは上の一覧の通り、種類はオペコード次第。

>>177
お待ちしておりました。

182:デフォルトの名無しさん
03/06/22 07:39
>>177と178〜は同一人物か…?
プレフィクス(0〜4)+オペコード(1〜2)+(MODRM+SIB)(0〜2)+
  ディスプレースメント(0〜4)+即値データ(0〜4)
プレフィクスとは、LOCK、REP、REPNE
オペランド&アドレスの16or32のサイズ逆転に、セグメントオーバーライド関連
オペコードは、そのまんま命令で、
MODRM(SIB)は、>>178以降で、説明してるようだが、本当に分かってるのだろうか…

183:182
03/06/22 07:44
別人だったのね…

184:名無し@沢村
03/06/22 10:41
>>180
正しくは、
wフィールドが存在しない命令では、
    32bit  16bit  
000   EAX   AX   
001   ECX   CX   
010   EDX   DX   
011   EBX   BX   
100   ESP   SP   
101   EBP   BP   
110   ESI   SI   
111   EDI   DI   
となり、
wフィールドが存在する命令では、
    32bit  16bit  両方
    (w=1)  (W=1) (W=0)
000   EAX   AX   AL
001   ECX   CX   CL
010   EDX   DX   DL
011   EBX   BX   BL
100   ESP   SP   AH
101   EBP   BP   CH
110   ESI   SI   DH
111   EDI   DI   BH
となる


185:デフォルトの名無しさん
03/06/23 05:08
昨日書いたものはレジスタオペランドの表現方法。
今日は[命令・レジスタ・メモリ]という命令文における、
メモリアドレスの表現形式についてまとめてみる。

レジスタオペランド指定のその単純な表現と違い、
メモリオペランドは少し複雑になっている。
mod=00,{R/M,base}=101みたいな特殊なケースもあるし。
自分の中で整理するまでは時間がかかりそうなので、
ここでとりあえず理解している範囲をまとめてみる。

メモリオペランド指定にはMODRMが1byteのものと2byteのものの
2種類に分けられる。2byteMODRMでないと表現できないメモリオペランドとは
・インデックスレジスタを使うもの
・ベースアドレスにESP(つまり100)を指定するもの
 (R/Mにおける100がMODRM自身の2byte拡張に割り当てられているため)
の二通りのケースが考えられる。この二つは1byteのMODRMでは表現できない。

指定されるメモリのアドレス表現は
セグメント―ベースアドレス―インデックスアドレス(+スケールファンクタ)
―ディスプレースメント の4部分で指定する。
この4っつの使用は任意である。ただしセグメント指定がないときはデフォルト
セグメントのDSを用いるという意味になるし、ベースアドレスが無い時は
ディスプレースメントが必要不可欠となる。

メモリ中のアドレス指定において、セグメントレジスタは独立しているからいいとして
ベース、インデックス、ディスプレースメントの三つの組み合わせは、
例外があったりして少し複雑である。全ての組み合わせを考慮して、
そのビットパターンを網羅することもいいかもしれないが、具体的バイナリを
読めるようになることに目的をおいているので、あまり厳密には考えない。

186:デフォルトの名無しさん
03/06/23 05:31
1.セグメント
デフォルトではDSセグメントを使うが、その他のセグメントを参照する場合は
命令プリフィックスで指定する。(プロテクトモードでは、セグメントレジスタに
指定されているのは当然、セグメントディスクリプタへのインデックス値であって
アドレスではない。)

2.ベースアドレス
セグメント内におけるベースアドレス。1byteMODRMにおいてはR/Mにおいて32bitの
レジスタのみを使える。2byteMODRMの場合は2byte目のbase領域(0-2bit)において
32bitのレジスタを指定する。

3.インデックス
これを使うときはMODRMは2byteになる。インデックスレジスタを使わないときは
スケールファンクタは00になっていなければならない。
スケールファンクタ(2bit)の値の意味するところは
00 x1
01 x2
10 x4
11 x8
というもの

4.ディスプレースメント
MODRMが1byte、2byteに関係なくmodの値が
・00はディスプレースメントなし
・01は8bitのディスプレースメントあり
・10は32bitのディスプレースメントあり
という意味。

187:デフォルトの名無しさん
03/06/23 05:35
2byteMODRMについての詳しい図はインテルのマニュアル中巻の図2-1にあります。
というか自分が読んでいる古い386の本と用語が少し代わっています。
2byteのMODRMなどというものはなく、MODRM(1byte)とSIDというらしいです。
意味するところはSIDは2byte目のMODRMと上で言われているものと変わりません。
スケールファンクタとは単にスケールというらしい。
SIDとは上にも書いたように、メモリオペランド表現専用です。

>>沢村様
wフィールドとはなんでしょう?オペコードのどこかのビットということに
なるのかな?

188:デフォルトの名無しさん
03/06/23 07:15
ベースレジスタの指定には10種類の値を指定できなくてはいけない。
8(汎用レジスタ)+SID有り+ベースレジスタなし=10種類
そこでいつくかの特殊ケースを設定されている。

・ESPを指定するはずの100を2byteMODRM有りの意味に使う
・mod=00, {R/M,base}は常識的にはディプレースメントなし
 +ベースレジスタはEBP(101)という意味になるが、
 これを特殊ケースとして、
 「ベースレジスタ無し+32bitディスプレースメントあり」の意味に使う
 これはディスプレースメント無しのモードではEBPをベースレジスタとして
 使えないという意味になる。
 代用としてはmod=01,R/M=101,ディスプレースメントは0を設定する。

というもの

インデックスフィールドに関する例外としては
・100のときはESPをインデックスレジスタとして使う、という意味ではなく、
インデックスレジスタ無しという意味になります。このときスケールは00でなければ
ならない。

即値フィールドはディスプレースメントの後と決まっている。


これで、あとはオペコードを暗記するだけでバイナリが読める、はず。

189:デフォルトの名無しさん
03/06/23 08:17
s/ファンクタ/ファクタ/

自分で書いてていうのもなんだけど、内容めちゃくちゃだな。
インテルのPDFにMODRM,SIDのビットパターン一覧が載ってるから
それみて覚えるのが一番効率がいいことは確か、か。

190:mathmania ◆uvIGneQQBs
03/06/23 16:59
DOSの機械語(マシン語)と、UNIXの機械語(マシン語)は違うものですか?

191:デフォルトの名無しさん
03/06/23 17:10
DOSとUNIX でマシンが違うならね

192:デフォルトの名無しさん
03/06/23 17:12
あ、DOSとUNIXか、なら一般的には違うものだな。
もし同じCPUであっても DOS は16bitコード UNIXは32bitコードだろうからね

193:デフォルトの名無しさん
03/06/24 21:28
01010101001001010101010101111111111010101001101

194:デフォルトの名無しさん
03/06/25 02:43
>>192
基本的に16bitでも32bitでもCPUが同じなら機械語は同じだろ
ただ、それを解釈するCPU、もしくはCPUのモード(方言)が違うだけ

195:デフォルトの名無しさん
03/06/25 13:09
>>194
まあ基本的にはそうなんだが、
x86の場合はデータサイズが変わっちゃうからねえ。
どっちのモードで動いているか把握しておかないと悲惨な事になるぞ。



196:デフォルトの名無しさん
03/07/18 21:36
よい2進数のエディタはないですか?

197:デフォルトの名無しさん
03/07/18 21:40
>>196
メモ帳の二進数モード

198:デフォルトの名無しさん
03/07/19 00:21
>>196
stirling

199:デフォルトの名無しさん
03/07/19 00:24
七輪グゥ?

200:山崎 渉
03/08/02 02:33
(^^)

201:デフォルトの名無しさん
03/08/06 18:10
int mc91(int n){
if (n>100) return n-10;
else return mc91(mc91(n+1));
}

上のCプログラムを出来ればアセンブリでおながいします m(_ _)m

202:デフォルトの名無しさん
03/08/06 20:56
>>201
しょーがねーな
_mc91:
 cmp.l #100,er0
 ble 1f
 sub.l #10,er0
 rts
1:
 inc.l #1,er0
 jsr @_mc91
 jsr @_mc91
 rts

展開するのはめんどいので素直に再帰。


203:201
03/08/06 21:19
>>202
有難う御座います。

しかしプログラム間違えてました申し訳無いです

else return mc91(mc91(n+11));

でした。しかも、MIPSアセンブリ言語でした。

因にプログラムの動きは
n>100の時は1回だけ-10して終了。
n=<100の時はn=91になるまで計算を繰り返す。
でつ

204:山崎 渉
03/08/15 17:05
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

205:デフォルトの名無しさん
03/08/26 10:03
第2次記念パピコ

206:デフォルトの名無しさん
03/12/15 00:17
GCCにアセンブリソースを吐かせて勉強しやう

207:
03/12/15 01:05
浮動小数点のフォーマット(データ構造)と、四則演算のやり方を説明できる方いませんか?
あるいは、こういうこと解説してある本でも良いんですけど。

今はとりあえず我流で3バイトの整数部+1バイトの指数部(X*2^n)でやってるんですが、
なんか違うというか、もっと上手いやり方があるような気がして。

208:デフォルトの名無しさん
03/12/15 01:08
>>207
C実践プログラミング(オライリー)に書いてあった

209:207
03/12/15 01:19
>>208
即レスありがとう。
ググってみると結構高い本みたいですが、探してみます。

210:デフォルトの名無しさん
03/12/15 02:11
>>207
フォーマットは、IEEEの規格があるのでCPUのマニュアルなんかに書いてあるはず。
足し算引き算は、指数部の桁を合わせて仮数部を計算。
掛算は、指数部を足し算して仮数部だけで掛算。
割算は、指数部を引き算して仮数部だけで割算。

誤差がどうのこうのってな事があるので、数値演算の本を読んだほうがいいと思う。


211:デフォルトの名無しさん
03/12/15 09:29
>>207
fURLリンク(download.intel.co.jp)
第8章を参照。

212:デフォルトの名無しさん
03/12/15 14:01
パタヘネにも載ってたな、そういえば

213:207
03/12/15 22:58
>>210,>>211
レスありがとうございます。

>>211
あ、私の説明が全く不十分だったのですが、8ビットの加減算しか出来ないCPUで
(今使っているのは8051って石の派生チップなんですが)Cのfloat相当の
浮動小数点の処理を効率よくやる方法はないものかな、と思っておりまして。

でもレスありがとうございます。

214:デフォルトの名無しさん
03/12/16 00:06
>>213
浮動小数点のフォーマットがよく分かるよ、
ってことだったんだけど。

215:デフォルトの名無しさん
03/12/16 02:14
>>213
8051か。
外とfloatのデータをやりとりしないなら、
俺フォーマットのほうが幸せかもしれない。

昔Z80で数値演算する本がえらく参考になったが…
もう手に入らんだろうなあ。


216:デフォルトの名無しさん
03/12/20 13:33
000000000000000010010101101100110000000000000000000000001000001100000000000000000000000010000011

217:デフォルトの名無しさん
03/12/20 19:23
00 01 02. 03 04 05 06 07 : 08 09 0A 0B
---------------------------------
00 00 95 B3 00 00 00 83 : 00 00 00. 83

218:デフォルトの名無しさん
04/01/12 08:54
機械語プログラミングってコメントどこに書くの?

219:デフォルトの名無しさん
04/01/12 09:15
E9 0D 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 : ..Hello, world!

220:デフォルトの名無しさん
04/02/04 23:13
PC互換機、OSはWindows2kで動作するお勧めのZ80アセンブラは何よ

221:名無し@沢村
04/02/05 19:34
きんたまのぉ〜おっちゃんがぁ〜くそ屁をこいた〜糞こいたぁ〜

URLリンク(hp.vector.co.jp)

222:デフォルトの名無しさん
04/02/06 08:34
PEとCOFFってどう違うの?

223:鳥取砂丘&rlo;ムレーハ村リ゚フ@&lro; ◆Dream/3P/.
04/02/06 18:25
・EXEヘッダがある
・PEヘッダがある
・オプショナルヘッダが独自
あとはエクスポート・インポート関係?(´・ω・`)


224:デフォルトの名無しさん
04/02/07 07:01
↓から来た香具師の質問と思われ。

「コンパイラ・スクリプトエンジン」相談室 3
スレリンク(tech板)

↑の401が貧乏人向けに素敵なページを紹介して解決した模様?
解決したならしたとこっちで言わんと駄目だろうに。

225:↑スレの388
04/02/07 08:06
>>224
乙であります。
来週からそこの資料見て作業しようと思っております。
ありがとうございました。

自分はインストラクションコードへのコンパイルや外部シンボル
などのリロケーションテーブルまでは作成済みの段階であり、
あとはその資料を見ながら適当にexeやobjの形にしていく
だけであります。

今はexeを作成する際に、Cランタイムをmsvcrt.dllから拝借でき
ないか、と考えておりまして、とりあえずmingwのスタートアップ
コードを眺めている次第であります。stdioやmallocとかの初期化は
どうやんのかとか、その辺の情報ありましたら引き続き情報提供
願います。オーバー

226:名無し@沢村
04/02/07 21:12
おい、おまーら聞け、おれのマシン語のサイトにPEフォーマットの仕様をUPしたからな。
恐ろしすぎるぞ!!おまーら↓

URLリンク(hp.vector.co.jp)


227:デフォルトの名無しさん
04/02/07 21:43
>>226
もう少し読みやすくしてくれ。
オンライン・ハイパーテキストのためのスタイルガイド
URLリンク(kanzaki.com)

228:デフォルトの名無しさん
04/02/07 21:54
デバッグ情報のことをきくのはスレ違い?
デバッガで見た時わかりやすいように関数名とか埋めこみたいんだけれども

229:デフォルトの名無しさん
04/02/08 20:19
>>226
文字列の表示だけじゃつまらん。TSRの作り方も解説してくれ。

>>228
たいていアセンブラにデバッグ情報を埋め込むためのオプションがあると思うけど。

230:デフォルトの名無しさん
04/02/08 21:51
>>229
bcc32とかで-S付けてアセンブリソース吐かせると、?debugなんちゃらが付いてくるじゃないですか
簡易コンパイラ作りたいので、あの意味が知りたいのです

231:名無し@沢村
04/02/08 23:09
ザコのおまーらよ、言語は何やってる?
C言語?C++?Java?VB?COBOL?HSP?ふっ…おまーらって、ホントザコだな。
おれはE言語やってるね。
おまーら、D言語ってのは聞いたことあるが、E言語って聞いたことないだろ?
おまーらよ、E言語ってのはな、「executive language」日本語に訳すると「実行可能言語」だよ。
まあ、ぶっちゃけ、早い話がマシン語のことなんだよ。わかる?
おまーらよ、E言語はまたの名を「実行可能言語」とか「実行ファイル記述言語」とか呼ばれるよ。
それにしても、E言語ってすげー命名だな。命名者はおれだぞ!このおれだ。
おれはもしかして、E言語の祖と呼ばれるようになるかもしれないな。どうよ?

URLリンク(hp.vector.co.jp)


232:デフォルトの名無しさん
04/02/08 23:10
URLリンク(www.kmonos.net)

233:デフォルトの名無しさん
04/02/08 23:14
URLリンク(erights.org)
> Douglas Crockford writes:
> 'I chose E because of the progression B, C.
> I observed that there was no language D.
> I figured it was a bad luck letter, so we moved on to E.
> That 'E' was also the initial of Electric Communities was noticed at the time.
> It also tied in to our development of the Unum distributed object model.'

234:デフォルトの名無しさん
04/02/09 00:22
00101000,
1110010101101000!
10100100?

235:デフォルトの名無しさん
04/02/09 16:39
実際にPEの構造わかっても、スタートアップのランタイムの初期化とか
インポートテーブルとか、超面倒ですな。
やる気なくなってきた。

236:デフォルトの名無しさん
04/02/15 13:02
おとなしく高級言語つかえよ
あがくなって

237:デフォルトの名無しさん
04/02/15 17:52
ふふふ……

238:名無し@沢村
04/02/18 22:08
おれのマシン語のサイトに掲示板ができたぞ!
ほんにおまいら〜♪

URLリンク(hp.vector.co.jp)


239:わかるかな。
04/02/20 04:00
6E 75 72 75 70 6F

240:わかるかな。
04/02/20 04:01
6E 75 72 75 70 6F 6E 75 72 75 70 6F 6E 75 72 75 70 6F 6E 75 72 75 70 6F 6E 75 72 75 70 6F

241:わかるかな。
04/02/20 04:03
6E 75 72 75 70 6F
6E 75 72 75 70 6F
6E 75 72 75 70 6F
6E 75 72 75 70 6F
6E 75 72 75 70 6F
6E 75 72 75 70 6F



242:ANSI
04/02/20 04:05
6E 75 72 75 70 6F

243:デフォルトの名無しさん
04/02/20 06:42
>>239-242
8140814081408140814081408140814081402081510A814081408140814081408140837E814081DA
8151816A0A8140814081408140814081408140814081402F0A814081408140814081408140814081
40202F814081408140815F815F0A814020B3B2B0DD8140814083A12F97B9814081408140207C8140
7C0A81408140B3B2B0DD8140207C2E81977C81408140814081407C81407C8140B6DEAFB6DEAFB6DE
AF0A81408140814081408140814081407C202F207C8140814081408140906C0A8140814081408140
8140814081407C2F81407C814081408140203C2081403E814083A981BF0A81408140814081408140
2081512F8140207C8140815E815E2E82753B814581CD8145292F0A81408140814081408140816981
5183749C638140814081408140814081408140202F20814081A93E3E3233392D323432

244:デフォルトの名無しさん
04/02/21 14:51
あーうぜえ

245:あぼーん
あぼーん
あぼーん

246:あぼーん
あぼーん
あぼーん

247:デフォルトの名無しさん
04/02/26 14:15
>>184
wフィールドとは8bitのレジスタアクセスが可能な
命令にだけあるフィールドであって、セグメント属性や
命令プリフィックスで指定されるオペランド長(16/32bit)
の指定とは全然別の概念でしょ。

248:デフォルトの名無しさん
04/02/26 15:54
>>245
>>246
いったい何が・・・

249:鳥取砂丘 ◆Dream/3P/.
04/02/26 16:40
  _
  /〜ヽ
 (。・-・) >>248 フフフそれはね・・・
 ゚し-J゚

250:デフォルトの名無しさん
04/02/26 21:29
取鳥砂丘ウザイ

251:デフォルトの名無しさん
04/02/28 20:36
>>248
よく見るオタクのAA。

252:デフォルトの名無しさん
04/03/02 21:23
ステートメントってどういう意味ですか?

253:デフォルトの名無しさん
04/03/02 21:38
>>252
URLリンク(dictionary.goo.ne.jp)

254:デフォルトの名無しさん
04/03/11 21:13
スレリンク(saku板:175番)

175 :ム板住人 :04/03/11 15:31 HOST:ipf011-087.kcn.ne.jp<8080><3128><8000><1080>
削除対象アドレス:
スレリンク(tech板:255-257番)
削除理由・詳細・その他:
5. 掲示板・スレッドの趣旨とは違う投稿
6. 連続投稿・重複
7. エロ・下品

3連続のウンコAA+削除人に対する悪態です。


未来の書き込みに削除依頼を出す馬鹿。


↓では、三連続ウンコAA+削除人に対する悪態どうぞ。

255:デフォルトの名無しさん
04/03/11 21:32
消されたんだよ。完全にな。

256:デフォルトの名無しさん
04/03/11 21:45
じゃあなんで254まで透明削除されているんだよ

257:デフォルトの名無しさん
04/03/11 21:49
254 もあぼーんだったんだよ。
多分 254 と同じ人が 255-257 を書き込んだんだと判断したんだろ。

258:デフォルトの名無しさん
04/03/11 22:01
なるほど。
削除報告していないあたり、依頼を見て削除したわけじゃなさそうだな。

259:デフォルトの名無しさん
04/03/11 22:10
だから「”削除”人はがんばりすぎ」とか悪態つかれたんだろうな。
がんばってるのは良いことなのにな。

260:デフォルトの名無しさん
04/03/11 22:27
最近この板うっすら荒らされてるんで、見張っててもらえるのは有り難い。

261:デフォルトの名無しさん
04/03/11 22:31
↓というわけで、以下何事もなかったかのように再始動

262:デフォルトの名無しさん
04/03/12 19:26
実際にPEの構造わかっても、スタートアップのランタイムの初期化とか
インポートテーブルとか、超面倒ですな。
やる気なくなってきた。

263:名無し@沢村
04/04/07 03:19
おまいらよ、超便利マシン語エディタ「Visual E++」ができたから見ちみれ!!
プログラム言語の歴史が変わった歴史的瞬間だ。

URLリンク(hp.vector.co.jp)


264:デフォルトの名無しさん
04/04/07 09:06
確かにいいかもしれないが、リリースコンパイルしてから公開しろよ

265:デフォルトの名無しさん
04/04/09 01:11
凄まじい勢いで良スレ!
俺を導いてくれ!

266:デフォルトの名無しさん
04/04/09 01:26
>>263
ウィルス

267:デフォルトの名無しさん
04/04/09 19:53
アセンブリや機械語に一番近い言語ってC言語なの?

268:デフォルトの名無しさん
04/04/09 19:55
>>267
コンパイルしたら機械語なんです。
若いヒトにはそれがわからんのです。

269:デフォルトの名無しさん
04/04/10 04:15
>>112の意図は?

270:デフォルトの名無しさん
04/04/10 04:31
>>269
ただのしったか

271:デフォルトの名無しさん
04/04/10 05:02
>>267
forth もある。

272:デフォルトの名無しさん
04/04/10 09:47
CPUが対応していない命令セットの場合にどう扱われるのか
教えてください。NOPとして無視されるのでしょうか?
(K6-2でSSE命令とか、Pentium4で3DNow!命令とか)

273:デフォルトの名無しさん
04/04/10 09:52
>>272
そのふたつならエラー

274:デフォルトの名無しさん
04/04/10 09:59
ありがとうございます。
アプリケーションが不正な処理で
強制終了されるということでしょうか?

275:274
04/04/10 10:19
勉強不足で、質問が変でした。解決しました。
(DelphiだとEInvalidOpになるようです)

276:デフォルトの名無しさん
04/04/12 05:57
アセンブリと機械語って処理速度同じなの?

277:デフォルトの名無しさん
04/04/12 07:21
同じコードの表現方法が違うだけですからね

278:デフォルトの名無しさん
04/04/12 08:04
じゃあアセンブリやりゃ機械語必要ないじゃん。

279:デフォルトの名無しさん
04/04/12 08:07
バイナリエディタ

280:名無しさん
04/04/12 11:24
機械語(16進数)
01 08 04 fe 38 22 65 88

アセンブリ(例)
 LDA $100
 STA $101
JMP ADDRESS100

マシン語をバイナリエディタで組んだ人なんて聞いたことない。
もっとも本についていたバイナリデータを打ちこんだことは
あるが。。。今だったらあり得ない。
簡単なお絵かきツールだったのだが根性で打ちこんだ15年前。
懐かしい。

281:デフォルトの名無しさん
04/05/14 05:32

ところで、マシン語とかよく分からないんで、
検索したら以下のサイトにたどり着きました。

URLリンク(hp.vector.co.jp)

そこでマジ質問なんですが、
このサイトって信用して大丈夫なんでしょうか?
なんか全面的に不安なんですが…。


282:名無し@沢村
04/05/14 05:52
>>277
>同じコードの表現方法が違うだけですからね

そうとも限らないぞ。
解釈の仕方によっては、同じアセンブリ言語が別のマシン語コードに翻訳される場合も有り得る。

283:デフォルトの名無しさん
04/05/14 10:50
>>280
>今だったらあり得ない。
まーそう仰らずに
「ファイル名を指定して実行」で debug と入れてくださいな。

284:デフォルトの名無しさん
04/05/14 11:10
>>282
究極だったのはAlphaプロセッサー上でのVAXマクロコンパイラだったなあ。 
VAXアセンブリで書かれたコードをコンパイルしてAlphaのバイナリを
吐き出すというゲテモノ。 

285:デフォルトの名無しさん
04/05/14 12:49
機械の言語を手に入れるため、僕はメーテルと旅に・・・。

286:デフォルトの名無しさん
04/05/14 21:12
↓メーテルのエロシーンの回数を答えよ

287:デフォルトの名無しさん
04/05/14 21:44
「次は惑星アライメントー、アライメントー」
「惑星アライメント・・・、半端者は生きることを許されない星・・・」


288:デフォルトの名無しさん
04/05/14 21:46
  LD A, R
  LD (ERO), A

289:デフォルトの名無しさん
04/05/14 22:09
次スレ

ゴダイゴなら俺に質問しろ!
スレリンク(tech板)

290:デフォルトの名無しさん
04/06/24 12:07
PE/COFFの公式ドキュメントの翻訳がどこかのHPにあったと思いましたが、
あれ、どこにあるかわかる人いますか?

291:デフォルトの名無しさん
04/06/24 12:29
>>290
転載サイト
URLリンク(www.interq.or.jp)

本家MSサイトに残っているページへのリンク集
URLリンク(ec.uuhp.com)



292:デフォルトの名無しさん
04/06/24 12:31
>>291
あー、これこれ。探してたのは。どもね。

293:デフォルトの名無しさん
04/06/27 15:45
何かとおもったら、MSDNに載ってる奴じゃん。

294:デフォルトの名無しさん
04/07/03 03:03
ギーーーッゴッ、ギーゴッゴギゴーッギゴギー…

295:名無しさん@そうだ選挙に行こう
04/07/11 11:33
昔はマイコンBASICのノリで機械語(16進ダンプ)を入力したもんだよ。
ああ、昭和は遠くなりにけり。

296:デフォルトの名無しさん
04/07/15 21:19
x86のニーモニック表(オペコード付き)って何処かにないかな?

297:デフォルトの名無しさん
04/07/15 21:41
機械語でWindowsのexeを作る開設サイト知りませんか?

298:デフォルトの名無しさん
04/07/15 22:14
>>296
intelにあるよ

299:デフォルトの名無しさん
04/07/16 12:34
>>280
まぁマシン語を組むのに必要なのはどちらかというと
CADとかアイディアプロセッサとかの類だからな。

300:デフォルトの名無しさん
04/07/28 07:45
昔256bitRISCの機械語体系を自作したなあ。
命令はMSB側4ビットで、次の4ビットがアドレッシングで、残りは全部データっつう
簡単な代物だけど。
アセンブラを自作するのが面倒で、それで遊ぶのをやめてしまったな。
今からすると命令16個しかないから、簡単そうだけど。

301:デフォルトの名無しさん
04/09/02 19:56
このスレで言うところのマシン語って何を指すの?

302:デフォルトの名無しさん
04/09/02 22:33
定義厨は帰っていいよ

303:デフォルトの名無しさん
04/09/03 12:34
なんだよ定義厨って。

304:デフォルトの名無しさん
04/10/15 06:48:34
初心者が「CODE コードから見たコンピュータのからくり」読んで
なんかもっと根本的に知りたくなって今、Z80の古い本読んでるんだけど、
これから
トラ技系の簡単なので物理的になんかやりつつURLリンク(www.cqpub.co.jp)
「はじめて読むマシン語」「はじ〜8086」「はじ〜486」
といって問題ないですか?

305:デフォルトの名無しさん
04/10/15 11:16:26
同じ系統のCPUの進化を追いかけるより、86系の次は68系やってみるとか。
その方がもっと君の腕の幅が広がるだろう。


306:デフォルトの名無しさん
04/10/15 14:37:04
プロセッサは一つの言語みたいなもんだからな。
x86だけやってても駄目。いろんな言語を選り好みなく
使わないと。

307:デフォルトの名無しさん
04/10/15 14:42:42
x86 マシン (というかDOS/V機) のエミュレータ上で
マシン語の勉強したいんですけど、
何かいいのありますか?

308:デフォルトの名無しさん
04/10/15 16:33:39
dos窓でdebugって打ってみ


309:ほんたま
04/10/15 19:31:12
>>307
おみゃ〜よ、そりは「スリムドカン」を使って勉強するといいよ。
「スリドカン」はdos窓で動くプログラムはもちろんのこと、windowsプログラムもサクッ!とつくれるマシン語でプログラムする開発環境よ。
おまけにダイアログボックスを編集してプログラムに取り込めるリソースエディタまで付属しているから、ちょっとしたマシン語版のVisual C++といえるな♪
これだけのものが無料でダウンロードできるんだから、マシン語を勉強したいと思う者にはバイブル的存在だ。
「スリムドカン」によるプログラミングの詳しい解説は↓のホームページを見るといいよ♪

URLリンク(hp.vector.co.jp)

310:デフォルトの名無しさん
04/10/15 20:50:52
>309
ありがとうございます。
評価してみたいと思います。

311:デフォルトの名無しさん
04/10/15 23:06:43
かなり志が低いサイトだな・・・

URLリンク(hp.vector.co.jp)


312:デフォルトの名無しさん
04/10/16 00:21:27
ほんたまタイーホ


313:デフォルトの名無しさん
04/10/16 00:46:41
アーア、リアルやっちゃった。ほんたまちゃん、これはマジまずいよ。
リソース書き換え出来るのはよく知られてはいるけどさ、色んな海外製
フリー/シェアソフトの日本語化とかやってるの見ても、直接リソース
書き換えているのって無いじゃん。みんなパッチという形にしてるじゃん。なんでかな?
直接弄ったら、著作権侵害されたとかリバースエンジニアリングされた
とか、クラックされたとかで訴えられたりしないようにするためにわざわざパッチという
グレーな形態にしてごまかしているんだよ。それなのに、よりによってマイクロソフトの製品に
対して実例で図付きで示すなんて、勇気あるな。しかもワードなんかもやってみようなんて
改竄を薦めているし。これはマジ訴えられる可能性大きいよ。
まあ、訴えられないにしても、ベクターにチクッたら即刻ID永久削除だね。
せっかくいいソフト作ってたのにかわいそう。スリムドカンは永久に
抹殺されるのか。残念。こういうコラム書くなら別のサイトで完全に名前
隠してやれば良かったのに。正直な人なんだなぁ。



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5400日前に更新/154 KB
担当:undef