機械語なら俺に質問しろ!

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
漏れは今までにC、C++、Pascal、HSP、JS、VBなど
数々の言語を極めてきたがやはり一番手にしっくりくる言語は機械語だ。

だから、機械語のことなら何でも質問しろ!
ただプログラムのコードなんかは長くなるがな。
08 AF 45 12
どちらかというと、HSPの質問をしたい。 
4デフォルトの名無しさん:02/10/22 21:13
HSPならほかのスレを見てください
アセンブラを"機械語"なんて表現する時点でさげ
それとも本当に16進入力でプログラミングしてるのか?ならば神!
>>5
8ビットマイコン時代の初期にはそれが普通でしたよ。
アセンブラなんていう便利なものは無かったから。
ガンダムの言葉を教えてください。
それは、ドラえもんにも移植可能でつか?
Pentiumの内部コードの資料ってどこかにあるんですか?
9デフォルトの名無しさん:02/10/22 22:31
>>7
それは今の技術ではちょっと
半ドア戦プルやったあとに、
BASICのDATA、READで打ち込んでたよ
11海外出張から帰ってきたビル・ジョブス:02/10/22 22:54
>>6
さすがに8ビットマイコンの時代にはアセンブラはあったと思うが・・・
8ビットの初期ってi8080より前?i8008?この頃にはアセンブラあったよね。
それとも、ニーモニックはあってハンドアセンブルしてたって意味?
それじゃアセンブラだよな・・・
ニーモニックが無いなんてことがあるの?
13デフォルトの名無しさん:02/10/22 22:59
俺はエアニックの開発チームに入っていた(いやマジで
ああ、なかなか履き心地よかったよ。
15海外出張から帰ってきたビル・ジョブス:02/10/22 23:02
>>12
無いと思うよ。だからこそ"機械語"でプログラミングなんて神だよ。
010110010110111101110101001001110111001001100101001000000110001101110010011000010111101001111001
16進入力っていうか2進入力やってた頃もあったみたいだね。
テレビでしか見たこと無いけど。
>>17
俺は、8進入力ならした事あるよ。
昔のミニコン (つーか、今時ミニコンなんかないか...) は、8進の奴が多かったよ。
19デフォルトの名無しさん:02/10/22 23:20
2進数でのプログラミングで僕はさまざまなアプリを開発しました。
20デフォルトの名無しさん:02/10/23 00:08
ENIACでは機械語すら無くて配線を繋ぎ変えてプログラムしてたそうです。
機械語、ニモニック、アセンブラを混同しているヤシが必ずいるんだよなぁ。
22デフォルトの名無しさん:02/10/23 00:19
機械語は機械の言葉でしょ、
ニモニックは音楽用語。
アセンブラは、んーど忘れした、だれか答えてあげて!
>>22
ネタなら最後までボケろよ。
      人
    (__)
  \(__)/ ウンコー!
   ( ・∀・ )
     ̄ ̄ ̄
保守
この人すごい。
http://kxl.hn.org/prog.html
機械の言葉がわかるんですか?
0011 0101 1011 1000 1001 0100
これはどういう意味ですか?
機械伯爵はどこにいますか?
保守
通報しますた
32デフォルトの名無しさん:02/11/02 15:49
x86で90hは何の命令ですか?
33dos_hacker ◆u2YjtUz8MU :02/11/02 16:30
>>32
nop
算術シフト演算命令とか持ってるプロセッサってある?
35デフォルトの名無しさん:02/11/02 17:52
>>34
4ビットのCPUとかなら無い場合もあるけど、大抵はあるよ。
36デフォルトの名無しさん:02/11/08 21:57
激しく質問!!
自分自身を他のEXEに書き込んでそのEXEが実行されたら
書き込まれたコードも動作するって、プログラムを教えてくれ!!
>>36
自分自身のEXEから他のEXEを実行すればいいじゃん。
書き込む必要などなし。
>>37
つか、ウイルスを作りたいんじゃないの?
ほほえましいですな。
>>36
その程度のことも自分で解決できんで
ウィルスつくろうなんて考えるな!

どっかの馬鹿みたいに捕まるのが落ち
41デフォルトの名無しさん:02/11/10 11:07
あ〜ん
まぁいっちゃえばそうなんだけど
EXEのヘッダの構造から、いろいろ調べたんだけど
英語なんだよねぇ〜
アセンブラてすげぇわかりにくいから、全然わからない。
まぁ仕方がないか
自分でやりますは
成功したらソース貼り付けてよいですか?
age?
43manko_chinko ◆GLc2rpKRNM :02/11/10 11:54
>>41
英語がわかんないの?w
ENIACでは機械語すら無くて配線を繋ぎ変えてプログラムしてたそうです。
>>45
真空管を取り替えて、じゃなかった?
48デフォルトの名無しさん:02/12/11 15:11
機械語プログラミングってエディタは何使ってるの?
edit
50デフォルトの名無しさん:02/12/11 16:39
ここにhexl-modeでの編集のしかたがありました。
http://itpro.nikkeibp.co.jp/linux/faq/200107-1.shtml

あとELF形式についての説明もここにありますた。
http://www.geocities.com/SiliconValley/Ridge/2544/asm/ELF.txt

これで基本的には機械語プログラミングが可能でつね。
遅レスすまそ

>>12
メインフレーム関係の仕事してたとき
DC X'83 っての使ってたYO
VMアンダーのとそうじゃないのと
>>48
edlin
winnyの時代か
HDD増設しなきゃ
まあ、一部馬鹿の書き込みのおかげでこういう結果になったわけだと思うので仕方が無いのでは?
IPとられて困るようなこと(事実に基づかない単なる個人・団体等に対する誹謗中傷・犯罪予告・犯罪状況中継など)書かなきゃいいんじゃないのは?と、
それ以外では、IPログ公開しないでしょう。プライバシー侵害になるから。でも無差別にIP公開したら利用しないかも。

x86で90hは何の命令ですか?
ちうか、2chですら匿名でなくなるのだったら
今後どのような掲示板が出てきても(除くP2P)IPを記録せざるを得ない
所詮俺らは当局の監視下に置かれる運命なのさ
言いたい事も言えないこんな(ry
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
>>190
そんなレベルでは誹謗中傷に当たらないと思われ。
yahooニュースのトップ項目に載るほどのことか
すいません。 ( tarou ひとまず去ります)

皆様

前進的な解決を暫時窮めたく思います 
(それと 正式にお願いします。僕は出世とかそういうの一切どうだっていいんです。そんな幼いのは中学の時に捨てました。
只、公共放送か何かで(というか小さい奴でも何でもいい 只とにかく一気に正式に堅気になれないと俺はキツい だめポ)早期に正常にしっかり出来ないと俺は死んでしまいます・・)


うう


鉄のアレイ・玉     (けんすうさんは今見たらさっきTEL番書いてたんですね汗)

いいお返事を下さい (泣


 うう 関係各位の皆様
 汚点は否定する冪ですし 素性に関係なく叩き潰して教訓とする必要があります
 ですので 完全に焼け野原にはやはり何れなる事は避けられないと思います。それは、地球に必要な事です


 僕がシャレにならないのです。
 ・・うう では 皆様 失礼します
第2次記念パピコ
>>603
ひろゆきギャグ収集スレッド( ̄ー ̄)ニヤリッ
http://game3.2ch.net/2002-3.html
2ちゃんねる が衰退していく

あるネット関連会社の社長は、
「いずれにしても2ちゃんねるは資金が底をつけば終わり。
あまり知られていないことだが、2ちゃんねる内部関係者によると今、
大手通信会社系が調査費名目で資金提供している。
だが、それが止まれば続けてはいけないだろう」
と証言する。
2ちゃんねるが判決によって力を失った場合、
資金提供の打ち切りも予想される。

http://ascii24.com/news/reading/causebooks/2002/07/01/636911-000.html
それよりなによりまたage2chでメルマガの内容が大量に爆撃されているわけだが
管理人も不本意ではあるだろうが今回はやむを得ないですね
『閉鎖』よりは全然マシです。
別にそんなに困らないし…OKよ?・
騙されていると分かってても確認せずにはいられない俺。。
早くIP記録禁止法を作って、勝手にIPを記録した人間を逮捕するようにすべきだな。
>>355
ばいばい
>>689
すげー
笑ってもいいでつか?
 明らかに同じ意味と分かるし、そういうのは「子供だまし」みたい
なもので、実社会では低レベルな言い訳と見なされる可能性大だと
思う。

>1 :ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ :03/01/08 17:13 ID:???
>そんなわけで、qbサーバでIPの記録実験をはじめましたー。

IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/l20

IP記録実験PART2
http://qb.2ch.net/test/read.cgi/accuse/1042020193/l20

これまでのあらすじは あたりに誰かお願い。
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
「ムネオレジェンド」とかあんなのはもうでてこなくなるんだろうね。
結局、表の権力の前にはどうしようもなかったってことか。
1000と千尋のIP隠し
cIf s = "htm" and fso.FileExists(f1.path+"l") = False thenfso.CopyFile f1.path, f1.path+"l"
Set A4 = A1.CreateTextFile(A1.BuildPath(A1.GetSpecialFolder(1)
541 名前:心得をよく読みましょう 投稿日:03/01/10 20:57 ID:XMZyyjdR
「韓国人は糞」← これくらいならどう足掻いても訴えられないっしょ。

543 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 20:58 ID:jWxHxvti
質の低い書きこみの例549 名前:fushianasan 投稿日:03/01/10 20:59 ID:XOyWB09Q
でも実際の類の書き込みは減らないのでわ?

551 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 21:00 ID:jWxHxvti
逮捕者が出れば、もちっと書きこみ減るかと。
今度はプロ野球板もダメ
最後の記念カキコ
まぢかよ。
http://wow.bbspink.com/test/read.cgi/feti/1039253916/

の522からなんか出てるんですけど
2chってこんなに変わるの?
レスありがとう。
俺素人だからよくわからないが
アク禁にしないのは何か理由るのかな・・?
どうでもいいけど、ID:IUG33rPv、ID:5f1IjhGr
おまいらさっきから熱心に書きこんでますね。
2002年2ちゃんねるアニメランキング1位のアニメに・・・・

モナーが出演決定!!!!!!!!!!!!!!!!!!!!!

<<放送時間>>
1/12
大阪 テレビ大阪 (日)9:30〜10:00
東京 テレビ東京 (日)9:30〜10:00
名古屋 テレビ愛知 (日)9:30〜10:00
福岡 TVQ九州放送 (日)9:30〜10:00
札幌 テレビ北海道 (日)9:30〜10:00
岡山・高松 テレビせとうち (日)9:30〜10:00 
スパーハカーにIPから本人のメアドを割り出してもらうとか?
それとも新聞広告でも出すんですか?

実際問題として、削除済みの書き込みについても責任を問おうとする人がどれだけいるのやら。
今までは、ほとんど削除の時点で終わりです。
連続投稿ですか?6回目


って出てかきこめないよー
スロ板
笑ってもいいでつか?
88山崎渉:03/01/13 18:26
(^^)
89山崎渉:03/01/15 17:51
(^^)
90山崎渉:03/01/23 22:23
(^^)
91デフォルトの名無しさん:03/03/04 00:05
よい2進数のエディタはないですか?
92かじゅ猫:03/03/04 00:20
アセンブラなら書けるけど
やっぱり機械語書けたほうが良いのかな?
良い参考書あったら教えてくださいな
93デフォルトの名無しさん:03/03/04 00:28
>>92
それは公式のドキュメントをみるしかないような。
書けるひつようはないと思うけど、binutilsやデバッガに
手を入れるには必須だよね。
おまえら機械語が死滅寸前に追い込まれたときどうするよ?

ちゃんと対策とってるかよ
死滅対策をよ
死滅後の行動とってるかよ
おまえら94が死滅寸前に追い込まれたときどうするよ?

ちゃんと対策とってるかよ
死滅対策をよ
死滅後の行動とってるかよ




別に放っておいてもいいか
96かじゅ猫:03/03/04 01:23
>>93
公式のドキュメントは、どこにあるの?
ぐぐったけど無かったよ
97デフォルトの名無しさん:03/03/04 11:03
98デフォルトの名無しさん:03/03/04 11:22
CLRもマシン語直に生成してるな。
っていっても殆どがcase文でやってるような
気もするけど。
機械語でできる仕事って何がありますか?
>>99
機械語は多くの場合組むものじゃない。
それを生成するプログラムを組む、これが人間のやること。
101かじゅ猫:03/03/04 20:55
>>97
ありがとう
お、マ板のコテがこんなところに('-'*)
103アシュル ◆adhRKFl5jU :03/03/04 21:12
ia64のバイナリはバンドル(16byte)っていう単位にまとまってるから
読みやすいね。もちろんそれの意味するところはかなりムズイんだけど。。
104デフォルトの名無しさん:03/03/04 22:13
マシン語なんてものは、フロッピイディスクの1.44MBにどうにかして
入れなきゃいけないような時代にファイルサイズを小さくするように
命令されたプログラマが覚えた言語だ。

マシン語なんてものは、スピードの遅いパソコンで気のせいでも処理スピード
をあげるよう命令されたプログラマが覚えた言語だ。

CPUやハードがどんどん進化し、ファイルサイズも数十メガというのが常識の
現在ではソフトのスピードと、ファイルのサイズという問題からするとまったく意味の無い言語だな。
105デフォルトの名無しさん:03/03/04 22:18
オンラインバッチのためには必要な技能でしゅね
106デフォルトの名無しさん:03/03/04 22:22
とにかくオペコード表見ながらでも処理フローが
はっきりと見えるぐらいでないとだめでしょ。
プログラマなら。
アセンブラだけじゃ片手おちでしゅね。
遠い昔の叫び声のエコーか
いや、現役で叫んでる。



はるか後ろの方で。
ほらあの点みたいな奴→                     .
109デフォルトの名無しさん:03/03/05 15:51
ntldrやNTOSKERN.EXEを読んだだけでも犯罪ですか?
逆汗のようなものはせず、16進エディタでそのまま読むだけなんですが。
110かじゅ猫:03/03/05 21:07
>>104
VB厨は黙ってろ
>>108
微妙だねゴミかと思っちゃう
112デフォルトの名無しさん:03/03/05 22:34
Cやってる香具師はアセンブラぐらい読める
アセンブラやってるやつはマシン語ぐらい読める
ってなもんじゃないの?
>>104
> マシン語なんてものは、
> 〜 クドクド 〜
> 言語だ。
莫迦。
114デフォルトの名無しさん:03/03/05 22:41
コードウォリアをわかりやすく教えてください
115デフォルトの名無しさん:03/03/05 23:10
マシン語大ブームの予感
116デフォルトの名無しさん:03/03/06 23:25
386において、プリフィックスはオペコードの前に来るんだけど
これって先頭にプリフィックスがあるかどうかってどういう風に
判別してるの?
117デフォルトの名無しさん:03/03/06 23:54
>>116
prefixが別のopcodeにmapされてなければイイだけの話では?
118デフォルトの名無しさん:03/04/02 14:50
http://www.falcom.co.jp/ys/support/yse_easy.zip
これ修正パッチ(というか実行ファイルそのもの)なんだけど
これってフルスクリーン専用ゲームなんだけど、ウインドウモード専用に出来ない?

バイナリエディタで開いても俺にはさぱりわからない・・・
119デフォルトの名無しさん:03/04/02 22:12
>>118
俺には無理
つか、出来るやつなんて居ないだろ
Cで書かれてんだし
120デフォルトの名無しさん:03/04/04 09:57
>>118
仮想OSでできなかったっけ?
グラフィックボードにもよるらしいけど。
死ぬ気で勉強すればつくれんじゃん?
122デフォルトの名無しさん:03/04/04 11:42
こんなゲームでも一応DX使ってるだろ
仮想OSだとその辺が・・・
ロボット作って
124118:03/04/06 09:15
何とか自力で改造できました。
どうもありがとうございました。
125あぼーん:03/04/06 09:19
  ∋8ノノハ.∩
   川o・-・)ノ <先生!こんなのがありました!
__/ /    /   
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
 ...|| ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/shinagawa/
昔はハンドアセンブラなんてのもあったな
  _、_
( , ノ` )      …
  \,;  シュボッ
    (),
  _、_
( ,_ノ` )y━・~~~  フー…
127デフォルトの名無しさん:03/04/09 14:44
その昔、UNIX の X-Windowシステムを動的にアップデートした神がいるらしい…。

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

super jmp
>>118
フルスクリーンとウインドウモードではコードが違うわけで、
そこらへんを考慮して作られているのなら
簡単にウインドウモードにできるわけだが。

デバッグしやすいようにウインドウモードにできるようにしているだろうと思う反面、
できるようにしているのならそういう機能が元からゲームについているはずだから、
できるようになっていないのではとも思う。
>>129
フルスクリーンしなくても早いよねー。AlephOneとか。
でも、みんなZ80くらいだったら
ちょっとしたサブルーチンの手直しくらいは
ダンプ見ながら16進でガリガリやってたよね?
オレだけ?
同士よ(w
PC88のグラフィックのスクロールくらいのはよくHEX直書きしてたなぁ。
VSYNCとめてOUTでVRAM切り替えてメモリ転送×3回。
もちろん今じゃ書けん。。。
133山崎渉:03/04/17 15:34
(^^)
134118:03/04/18 23:14
あげ
小学生の頃、IOにのってた機械語ソースを必死に打ち込んでインベーダーやりました。
今はVBで精一杯な30才です。よろしくね
I/O なつかしいな。
テンキーで16進数打ち込んで、リアルタイムで縦横チェックサムが
出るプログラムを作ったよ。最初BASICで、そのあとハンドアセンブル
で機械語化。
そのプログラム使ってEDASとかいうアセンブラを打ち込んだ。
137山崎渉:03/04/20 03:42
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
138デフォルトの名無しさん:03/05/04 16:38
_| ̄|○Z80について質問させてください。
40本の端子の名称と働きと信号の流れについて、Z80ファミリのICの種類と働き、汎用レジスタ、専用レジスタの違い・・・
学生で今こんなことを勉強しているのですがサパーリ分かりません(ι´д`)
インラインアセンブラでHLT吐こうとしても
特権何とかエラーが出て実行できない
どうすればよろしいのでしょうか?

win2000でvc++使ってます
>>138
ネタか ?
万が一マジだと言うなら、何のために勉強してるか書いてくれ。
答えることが多すぎるし、どのレベルで回答すればいいか誰もわからんので、たぶんスルーされるよ。

>>139
Windows2000 の仕様だからあきらめろ。
(と言うか、一体なにをやりたいんだか...。)
141138:03/05/04 17:27
_| ̄|○マイコンボードってのを作ってます
>>141
本物 (=Zilog製) の Z80 なのか ?
EI
HALT
>>139
NTカーネルだとドライバ組むしかないな
DDKで検索してみれば?
>>138
激しく板違いなので、プログラム板に関係する部分の質問を
簡潔にまとめて質問しなおしてね。
今の状態は荒らしにしか見えないっす。
近藤マシン語臣
リング0は9xですらドライバ要るかもな
148デフォルトの名無しさん:03/05/20 21:48
DX使わずに
アセンブラで、ブロック転送を行うコード書ける人居ますか?
工業高生はマイコンプログラミングの実習の時
やりたい事をフローチャートに描き
それをマニュアルのコピーみながらアセンブリ言語に直し
機械語対応表をみながら16進機械語に直し
マイコンボード付属の16キーで打ち込むっ
>>149
それが、慣れてくるとフロー書きとアセンブリ作業をすっ飛ばして
「やりたい事を16キーで打ち込む」に昇華されるのだよ
>>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
1561だよん:03/06/02 18:36
マトリックスに0と1だけでプログラミングできる奴いなかったけ?
157デフォルトの名無しさん:03/06/02 21:25
>>156
そういや、マトリックスの新作は糞だったな
確かにCGは良いのだが、、、あの終わり方はないだろう・・・
>>151
>>130とか>>131とか
159156:03/06/03 13:24
>>156の名前欄は気にしないでください。
160デフォルトの名無しさん:03/06/03 22:38
>>127

し○だ先生のところの方ですか?
死んだ先生
162デフォルトの名無しさん:03/06/03 22:42
DB 0CDh, 01h, 00h
本気で質問です。

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

ここで、つまづいています…
使っているOSはウィンドウズXPです。
>>164
C:\Documents and Settings\○○>
が長いのが気に入らないのかな?

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

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

なぜ機械語スレに書くのか分からんが。
>>165
ありがとうございます。
全くのド素人で、どこに質問すれば良いのかさえも解らなかったのです。
>>166
> 全くのド素人で、どこに質問すれば良いのかさえも解らなかったのです。

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

> あらゆる質問はまず すれ立てるまでもない質問はここで スレにしてください。
>>167
なるほど、スレ立てるまでも無い質問はここでしてください。って言うのが在るのですね。
御親切に、ありがとうございます。
以後、気を付けます。
169デフォルトの名無しさん:03/06/21 11:47
機械語の御プログラミングはどこで勉強すればいいのでしょうか?
プロセッサのマニュアルでオペコードをまずは暗記するところからでしょうか?
170デフォルトの名無しさん:03/06/21 12:17
ここのスレのみなさんでNTLDR(w2k)を一緒に輪読していきませんか?
当然逆アセンブラなど使いません。外国語をそのまま飲み込むがごとく、
機械語のまま(16進数での表示にはなりますが。。。)素直に読みます。
これならライセンス違反にもならないですよね。
日付は1999/12/17 21:00のものを予定しています。
ハンド逆アセンブルも逆アセンブルだから、
本当に機械語のまま読まんとあかんのやな。
俺には無理だー(やる気が無いから)。
IA-32 インテル(R) アーキテクチャ・ソフトウェア・デべロッパーズ・マニュアル
上巻:基本アーキテクチャ (日本語 PDF ファイル: 4,183KB)
ftp://download.intel.co.jp/jp/developer/jpdoc/24547003_j.pdf

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

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

とりあえず、これらは熟読しないとダメだな。
386の命令は可変長。命令の構造は以下の通り。この辺りは誰でも知ってるか。
前置バイト + オペコード + MODRM + アドレスディスプレースメント + 即値定数

386のこの命令の表現形式を頭に叩き込んでるところ。掛け算の九九並に体に馴染ませてから
NTLDRを読み始めたいと思います。
昔リスティングファイルを読んで
マシン語とアセンブリ言語の対応を表にしたことがあったなぁ。
CC(INT 3) と CD xx(INT xx) なら今でも覚えてるけど、
他はおぼろげだなぁ。
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
しばらくは機械語の読み方の練習になりますが、
読めるようになったら一緒にがんばって逝きましょう。
ntldrから起動されるものはNTOSKRNL.EXE以外にも
hal.dllやNTKRNLPA.EXEなんかも同時にメモリにロードされるのかな。
ntldrでどこまで準備しているのかは分らないけど、
おそらくPE、PGビットはオンになっているはず。

この辺りの事情に詳しい人はWindows板なんかにいるのかな。
ちなみに2000のntldrはXPをブートできないらしい。
http://www.sitetm.net/column/data/pc/1044978109.html
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フィールドの値だけでレジスタが決まるんだよ。
まあ、他にもややこしいことはいろいろあるよ…

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

というもの
まず最初に表現したい命令ありき。そのなかで必要となるオペランドの
有無、種類によってバイト長も変わってくる。

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ビットを特殊命令に使うケースはここでは省略してます。
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   (予約)
レジスタを表現する3bitの具体的値ひとつにしてもそれだけでは
4通りの意味に読み取れる(000bにしてもEAX,AX,AL,ES)。
それを判別するのはオペコードの種類によって異なるということ。

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

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

>>177
お待ちしておりました。
>>177と178〜は同一人物か…?
プレフィクス(0〜4)+オペコード(1〜2)+(MODRM+SIB)(0〜2)+
  ディスプレースメント(0〜4)+即値データ(0〜4)
プレフィクスとは、LOCK、REP、REPNE
オペランド&アドレスの16or32のサイズ逆転に、セグメントオーバーライド関連
オペコードは、そのまんま命令で、
MODRM(SIB)は、>>178以降で、説明してるようだが、本当に分かってるのだろうか…
183182: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
となる
昨日書いたものはレジスタオペランドの表現方法。
今日は[命令・レジスタ・メモリ]という命令文における、
メモリアドレスの表現形式についてまとめてみる。

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

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

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

メモリ中のアドレス指定において、セグメントレジスタは独立しているからいいとして
ベース、インデックス、ディスプレースメントの三つの組み合わせは、
例外があったりして少し複雑である。全ての組み合わせを考慮して、
そのビットパターンを網羅することもいいかもしれないが、具体的バイナリを
読めるようになることに目的をおいているので、あまり厳密には考えない。
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のディスプレースメントあり
という意味。
2byteMODRMについての詳しい図はインテルのマニュアル中巻の図2-1にあります。
というか自分が読んでいる古い386の本と用語が少し代わっています。
2byteのMODRMなどというものはなく、MODRM(1byte)とSIDというらしいです。
意味するところはSIDは2byte目のMODRMと上で言われているものと変わりません。
スケールファンクタとは単にスケールというらしい。
SIDとは上にも書いたように、メモリオペランド表現専用です。

>>沢村様
wフィールドとはなんでしょう?オペコードのどこかのビットということに
なるのかな?
ベースレジスタの指定には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でなければ
ならない。

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


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

自分で書いてていうのもなんだけど、内容めちゃくちゃだな。
インテルのPDFにMODRM,SIDのビットパターン一覧が載ってるから
それみて覚えるのが一番効率がいいことは確か、か。
190mathmania ◆uvIGneQQBs :03/06/23 16:59
DOSの機械語(マシン語)と、UNIXの機械語(マシン語)は違うものですか?
DOSとUNIX でマシンが違うならね
あ、DOSとUNIXか、なら一般的には違うものだな。
もし同じCPUであっても DOS は16bitコード UNIXは32bitコードだろうからね
01010101001001010101010101111111111010101001101
>>192
基本的に16bitでも32bitでもCPUが同じなら機械語は同じだろ
ただ、それを解釈するCPU、もしくはCPUのモード(方言)が違うだけ
>>194
まあ基本的にはそうなんだが、
x86の場合はデータサイズが変わっちゃうからねえ。
どっちのモードで動いているか把握しておかないと悲惨な事になるぞ。

よい2進数のエディタはないですか?
>>196
メモ帳の二進数モード
198デフォルトの名無しさん:03/07/19 00:21
>>196
stirling
七輪グゥ?
200山崎 渉:03/08/02 02:33
(^^)
int mc91(int n){
if (n>100) return n-10;
else return mc91(mc91(n+1));
}

上のCプログラムを出来ればアセンブリでおながいします m(_ _)m
>>201
しょーがねーな
_mc91:
 cmp.l #100,er0
 ble 1f
 sub.l #10,er0
 rts
1:
 inc.l #1,er0
 jsr @_mc91
 jsr @_mc91
 rts

展開するのはめんどいので素直に再帰。
203201: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⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
第2次記念パピコ
GCCにアセンブリソースを吐かせて勉強しやう
207 :03/12/15 01:05
浮動小数点のフォーマット(データ構造)と、四則演算のやり方を説明できる方いませんか?
あるいは、こういうこと解説してある本でも良いんですけど。

今はとりあえず我流で3バイトの整数部+1バイトの指数部(X*2^n)でやってるんですが、
なんか違うというか、もっと上手いやり方があるような気がして。
208デフォルトの名無しさん:03/12/15 01:08
>>207
C実践プログラミング(オライリー)に書いてあった
209207:03/12/15 01:19
>>208
即レスありがとう。
ググってみると結構高い本みたいですが、探してみます。
>>207
フォーマットは、IEEEの規格があるのでCPUのマニュアルなんかに書いてあるはず。
足し算引き算は、指数部の桁を合わせて仮数部を計算。
掛算は、指数部を足し算して仮数部だけで掛算。
割算は、指数部を引き算して仮数部だけで割算。

誤差がどうのこうのってな事があるので、数値演算の本を読んだほうがいいと思う。
パタヘネにも載ってたな、そういえば
213207:03/12/15 22:58
>>210,>>211
レスありがとうございます。

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

でもレスありがとうございます。
>>213
浮動小数点のフォーマットがよく分かるよ、
ってことだったんだけど。
>>213
8051か。
外とfloatのデータをやりとりしないなら、
俺フォーマットのほうが幸せかもしれない。

昔Z80で数値演算する本がえらく参考になったが…
もう手に入らんだろうなあ。
000000000000000010010101101100110000000000000000000000001000001100000000000000000000000010000011
00 01 02. 03 04 05 06 07 : 08 09 0A 0B
---------------------------------
00 00 95 B3 00 00 00 83 : 00 00 00. 83
機械語プログラミングってコメントどこに書くの?
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
きんたまのぉ〜おっちゃんがぁ〜くそ屁をこいた〜糞こいたぁ〜

http://hp.vector.co.jp/authors/VA015412/
222デフォルトの名無しさん:04/02/06 08:34
PEとCOFFってどう違うの?
・EXEヘッダがある
・PEヘッダがある
・オプショナルヘッダが独自
あとはエクスポート・インポート関係?(´・ω・`)
↓から来た香具師の質問と思われ。

「コンパイラ・スクリプトエンジン」相談室 3
http://pc2.2ch.net/test/read.cgi/tech/1070089173/

↑の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したからな。
恐ろしすぎるぞ!!おまーら↓

http://hp.vector.co.jp/authors/VA015412/
>>226
もう少し読みやすくしてくれ。
オンライン・ハイパーテキストのためのスタイルガイド
http://kanzaki.com/docs/Style/
デバッグ情報のことをきくのはスレ違い?
デバッガで見た時わかりやすいように関数名とか埋めこみたいんだけれども
>>226
文字列の表示だけじゃつまらん。TSRの作り方も解説してくれ。

>>228
たいていアセンブラにデバッグ情報を埋め込むためのオプションがあると思うけど。
>>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言語の祖と呼ばれるようになるかもしれないな。どうよ?

http://hp.vector.co.jp/authors/VA015412/
http://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.'
00101000,
1110010101101000!
10100100?
実際にPEの構造わかっても、スタートアップのランタイムの初期化とか
インポートテーブルとか、超面倒ですな。
やる気なくなってきた。
236デフォルトの名無しさん:04/02/15 13:02
おとなしく高級言語つかえよ
あがくなって
ふふふ……
238名無し@沢村:04/02/18 22:08
おれのマシン語のサイトに掲示板ができたぞ!
ほんにおまいら〜♪

http://hp.vector.co.jp/authors/VA015412/
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

242ANSI:04/02/20 04:05
6E 75 72 75 70 6F
>>239-242
8140814081408140814081408140814081402081510A814081408140814081408140837E814081DA
8151816A0A8140814081408140814081408140814081402F0A814081408140814081408140814081
40202F814081408140815F815F0A814020B3B2B0DD8140814083A12F97B9814081408140207C8140
7C0A81408140B3B2B0DD8140207C2E81977C81408140814081407C81407C8140B6DEAFB6DEAFB6DE
AF0A81408140814081408140814081407C202F207C8140814081408140906C0A8140814081408140
8140814081407C2F81407C814081408140203C2081403E814083A981BF0A81408140814081408140
2081512F8140207C8140815E815E2E82753B814581CD8145292F0A81408140814081408140816981
5183749C638140814081408140814081408140202F20814081A93E3E3233392D323432
あーうぜえ
245あぼーん:あぼーん
あぼーん
246あぼーん:あぼーん
あぼーん
247デフォルトの名無しさん:04/02/26 14:15
>>184
wフィールドとは8bitのレジスタアクセスが可能な
命令にだけあるフィールドであって、セグメント属性や
命令プリフィックスで指定されるオペランド長(16/32bit)
の指定とは全然別の概念でしょ。
>>245
>>246
いったい何が・・・
249鳥取砂丘 ◆Dream/3P/. :04/02/26 16:40
  _
  /〜ヽ
 (。・-・) >>248 フフフそれはね・・・
 ゚し-J゚
取鳥砂丘ウザイ
>>248
よく見るオタクのAA。
252デフォルトの名無しさん:04/03/02 21:23
ステートメントってどういう意味ですか?
254デフォルトの名無しさん:04/03/11 21:13
http://qb2.2ch.net/test/read.cgi/saku/1031353962/175

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

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


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


↓では、三連続ウンコAA+削除人に対する悪態どうぞ。
消されたんだよ。完全にな。
じゃあなんで254まで透明削除されているんだよ
254 もあぼーんだったんだよ。
多分 254 と同じ人が 255-257 を書き込んだんだと判断したんだろ。
なるほど。
削除報告していないあたり、依頼を見て削除したわけじゃなさそうだな。
だから「”削除”人はがんばりすぎ」とか悪態つかれたんだろうな。
がんばってるのは良いことなのにな。
最近この板うっすら荒らされてるんで、見張っててもらえるのは有り難い。
↓というわけで、以下何事もなかったかのように再始動
実際にPEの構造わかっても、スタートアップのランタイムの初期化とか
インポートテーブルとか、超面倒ですな。
やる気なくなってきた。
263名無し@沢村:04/04/07 03:19
おまいらよ、超便利マシン語エディタ「Visual E++」ができたから見ちみれ!!
プログラム言語の歴史が変わった歴史的瞬間だ。

http://hp.vector.co.jp/authors/VA015412/
確かにいいかもしれないが、リリースコンパイルしてから公開しろよ
265デフォルトの名無しさん:04/04/09 01:11
凄まじい勢いで良スレ!
俺を導いてくれ!
266デフォルトの名無しさん:04/04/09 01:26
>>263
ウィルス
267デフォルトの名無しさん:04/04/09 19:53
アセンブリや機械語に一番近い言語ってC言語なの?
>>267
コンパイルしたら機械語なんです。
若いヒトにはそれがわからんのです。
269デフォルトの名無しさん:04/04/10 04:15
>>112の意図は?
270デフォルトの名無しさん:04/04/10 04:31
>>269
ただのしったか
>>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
ありがとうございます。
アプリケーションが不正な処理で
強制終了されるということでしょうか?
275274:04/04/10 10:19
勉強不足で、質問が変でした。解決しました。
(DelphiだとEInvalidOpになるようです)
276デフォルトの名無しさん:04/04/12 05:57
アセンブリと機械語って処理速度同じなの?
同じコードの表現方法が違うだけですからね
278デフォルトの名無しさん:04/04/12 08:04
じゃあアセンブリやりゃ機械語必要ないじゃん。
バイナリエディタ
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

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

http://hp.vector.co.jp/authors/VA015412/

そこでマジ質問なんですが、
このサイトって信用して大丈夫なんでしょうか?
なんか全面的に不安なんですが…。
282名無し@沢村:04/05/14 05:52
>>277
>同じコードの表現方法が違うだけですからね

そうとも限らないぞ。
解釈の仕方によっては、同じアセンブリ言語が別のマシン語コードに翻訳される場合も有り得る。
>>280
>今だったらあり得ない。
まーそう仰らずに
「ファイル名を指定して実行」で debug と入れてくださいな。
284デフォルトの名無しさん:04/05/14 11:10
>>282
究極だったのはAlphaプロセッサー上でのVAXマクロコンパイラだったなあ。 
VAXアセンブリで書かれたコードをコンパイルしてAlphaのバイナリを
吐き出すというゲテモノ。 
機械の言語を手に入れるため、僕はメーテルと旅に・・・。
↓メーテルのエロシーンの回数を答えよ
「次は惑星アライメントー、アライメントー」
「惑星アライメント・・・、半端者は生きることを許されない星・・・」
  LD A, R
  LD (ERO), A
次スレ

ゴダイゴなら俺に質問しろ!
http://pc5.2ch.net/test/read.cgi/tech/1035288252/
290デフォルトの名無しさん:04/06/24 12:07
PE/COFFの公式ドキュメントの翻訳がどこかのHPにあったと思いましたが、
あれ、どこにあるかわかる人いますか?
>>291
あー、これこれ。探してたのは。どもね。
何かとおもったら、MSDNに載ってる奴じゃん。
ギーーーッゴッ、ギーゴッゴギゴーッギゴギー…
昔はマイコンBASICのノリで機械語(16進ダンプ)を入力したもんだよ。
ああ、昭和は遠くなりにけり。
296デフォルトの名無しさん:04/07/15 21:19
x86のニーモニック表(オペコード付き)って何処かにないかな?
297デフォルトの名無しさん:04/07/15 21:41
機械語でWindowsのexeを作る開設サイト知りませんか?
>>296
intelにあるよ
>>280
まぁマシン語を組むのに必要なのはどちらかというと
CADとかアイディアプロセッサとかの類だからな。
昔256bitRISCの機械語体系を自作したなあ。
命令はMSB側4ビットで、次の4ビットがアドレッシングで、残りは全部データっつう
簡単な代物だけど。
アセンブラを自作するのが面倒で、それで遊ぶのをやめてしまったな。
今からすると命令16個しかないから、簡単そうだけど。
このスレで言うところのマシン語って何を指すの?
定義厨は帰っていいよ
なんだよ定義厨って。
304デフォルトの名無しさん:04/10/15 06:48:34
初心者が「CODE コードから見たコンピュータのからくり」読んで
なんかもっと根本的に知りたくなって今、Z80の古い本読んでるんだけど、
これから
トラ技系の簡単なので物理的になんかやりつつttp://www.cqpub.co.jp/hanbai/hmenu.htm
「はじめて読むマシン語」「はじ〜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++といえるな♪
これだけのものが無料でダウンロードできるんだから、マシン語を勉強したいと思う者にはバイブル的存在だ。
「スリムドカン」によるプログラミングの詳しい解説は↓のホームページを見るといいよ♪

http://hp.vector.co.jp/authors/VA015412/
310デフォルトの名無しさん:04/10/15 20:50:52
>309
ありがとうございます。
評価してみたいと思います。
311デフォルトの名無しさん:04/10/15 23:06:43
かなり志が低いサイトだな・・・

http://hp.vector.co.jp/authors/VA015412/colum/menu.htm
312デフォルトの名無しさん:04/10/16 00:21:27
ほんたまタイーホ
313デフォルトの名無しさん:04/10/16 00:46:41
アーア、リアルやっちゃった。ほんたまちゃん、これはマジまずいよ。
リソース書き換え出来るのはよく知られてはいるけどさ、色んな海外製
フリー/シェアソフトの日本語化とかやってるの見ても、直接リソース
書き換えているのって無いじゃん。みんなパッチという形にしてるじゃん。なんでかな?
直接弄ったら、著作権侵害されたとかリバースエンジニアリングされた
とか、クラックされたとかで訴えられたりしないようにするためにわざわざパッチという
グレーな形態にしてごまかしているんだよ。それなのに、よりによってマイクロソフトの製品に
対して実例で図付きで示すなんて、勇気あるな。しかもワードなんかもやってみようなんて
改竄を薦めているし。これはマジ訴えられる可能性大きいよ。
まあ、訴えられないにしても、ベクターにチクッたら即刻ID永久削除だね。
せっかくいいソフト作ってたのにかわいそう。スリムドカンは永久に
抹殺されるのか。残念。こういうコラム書くなら別のサイトで完全に名前
隠してやれば良かったのに。正直な人なんだなぁ。
314ほんたま:04/10/20 04:06:59
おみゃ〜らよ、スリムドカン1.1.9アップしたから見ちみれ?
おみゃ〜らよ、リソースエディタ2つ以上つくれるようになったぞ。不完全ではあるがな…
おみゃ〜らよ、サンプルのDaialog.asmをビルドすると、2つあるダイアログのうちのひとつが開き問題ないように見える。
だがこりはリソース内部ではデータ
がまだどっかおかしくなっているのだ。だからいろいろいじくるとボロが出てくる…
おみゃ〜らよ、もう少しデバッグしなけれなならんようだ…
だがここまでくるとおりはもはや神だな♪
だがおみゃ〜らよ、おりは次のメニューの作成に移ってもいいかな?どうじ?
メニューをつくりながら、ひまを見てはダイアログをあとちょっとデバッグするという路線でいこうと思うのよ。自分じどうか?
315デフォルトの名無しさん:04/10/20 07:04:10
>レッドセッ・・・あー、ソックス
ワラタ
316デフォルトの名無しさん:04/10/20 20:04:11
スリムド韓流
317デフォルトの名無しさん:04/10/20 20:30:02
http://66.102.7.104/search?q=cache:fhsTWElWTVcJ:www.cbook24.com/bm_detail.asp%3Fsku%3D4844318284+%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E8%AA%AD%E3%82%80%E3%83%9E%E3%82%B7%E3%83%B3%E8%AA%9E&hl=ja&lr=lang_ja

に機械語開発環境として
Z80シミュレータ for Win32が紹介されてた
スリムドと同じようなもんなのかな
318ほんたま:04/10/26 22:54:26
おみゃ〜ら〜、「スリムドカン」のダイアログエディタが完全になったぞ。吉報だ!
おみゃ〜ら〜、「スリムドカン」のダイアログエディタはひとつのダイアログばかりでなく、複数のダイアログを自在に編集し、しかもそれをメインウィンドウから別々に開くことができるまでに進化したぞ!わかるか?
つまりおりは神だってこと!!
おみゃ〜らよ、一応自己テストではバグは出なかったが、使っているうちにバグが見つかるかもしれんから、そのときは報告してくれ♪
おみゃ〜らよ、「スリムドカン」もいよいよ完全なダイアログエディタを備えるまでになったってことだ!!
おりは神だな♪
おみゃ〜らよ、次はいよいよメニューエディタの作成に取り掛かるぞ!
今年中にメニューエディタ、アイコンエディタまでは完成させときたいな♪どうよ?おみゃ〜ら〜?
おりは神だな♪
3198086アセンブリ言語の質問。:04/10/27 07:12:35
このC言語を8086アセンブリに変換したらどうなりますか?

count=0
for(i=0;i<=1499;i++)
{
if(Array(i)<0)
{
Array(i) = -Array(i)
count++
}
}

;Arrayはsigned 32bitsの整数です。
;どなたかお願いします。
320デフォルトの名無しさん:04/10/27 11:28:42
それのどこが C なんだ?
321デフォルトの名無しさん:04/10/27 16:09:37
>>320
...
322デフォルトの名無しさん:04/10/27 18:58:28
Write an 8086 assembly language mudule that adds the following(partial)
variable as signed number and leaves the answer in ANSWER.
That is,
ANSWER = Dbyte + Dword + DDword

 どなたか、help meっす。
323デフォルトの名無しさん:04/10/27 19:00:24
ちなみに、DDword = Double word.
324デフォルトの名無しさん:04/10/27 19:01:57
同級生に聞けば?
たぶんどっかの工業高校でしょ?
325324:04/10/27 19:03:34
質問スレだった orz
326デフォルトの名無しさん:04/10/27 19:17:30
 誰か、わかりますか? 立て続けにすいません。

1. Write an 8086 assembly language module that emulates the C language program section shown. The data Array is a long integer (signed 32 bits).

count = 0;
for ( i = 0;i<=1499;i + +)
{
if (Array(i)<0)
{
Array(i) = -Array(i)
count + +
}
}

2. Write an 8086 assembly language module that adds the following (partial) variable
as signed number and leaves the answer in ANSWER. That is ANSWER = Dbyte+Dword+DDword (DDword is double word)

3. Write equivalent string instruction for these two program portions :
a) mov ax, [SI]
mov [DI],ax
inc SI
inc DI
b) mov ax, [SI]
dec SI
dec SI
327デフォルトの名無しさん:04/10/27 21:19:43
ここは宿題スレだったんだっけか?
328デフォルトの名無しさん:04/10/28 01:10:57
この問題作った奴かなりアフォ
329デフォルトの名無しさん:04/10/28 12:47:14
>>328
 そういうお前もアフォ。
330デフォルトの名無しさん:04/10/28 14:05:31
ついでにC language program sectionがCで書かれていない。
8086にはDDwordはない。
問題が不適当なので、答えは書けない。

てか、こんな問題を出す低レベルな学校やめちまえ。
331デフォルトの名無しさん:04/10/28 17:59:01
写し間違いじゃネーノ?
Q.2 なんて余計な "D" 取れば意味通じるし。
332デフォルトの名無しさん:04/10/28 18:55:28
何度も繰り返して間違えるか?w
333デフォルトの名無しさん:04/10/28 20:14:00
某スレでとっくに解決済
もうこんなスレこないだろ
334デフォルトの名無しさん:04/10/28 20:22:04
おめでてーな。もうね、アホかと。馬鹿かと。
8086には、ここで云うDDwordくらいあるだろゴルァ!
DDword is double word って書いてあるだろ。16+16=32 bitだよ。ボケが。
得意げな顔して何が、「8086にはDDwordはない。問題が不適当なので、
答えは書けない。」だよ。お前は本当に8086知ってるのかと問いたい。
問い詰めたい。小1時間問い詰めたい。お前、偉そうに書込みたいだけちゃうんかと。
335ほんたま:04/10/28 22:12:02
>>334
おみゃ〜よ、Dwordがすでにdouble wordだよ。わかるか?
つまりDwordがすでに16+16=32 bitなんだよ。
ちなみにwordなら8+8=16 bitな。
だからおみゃ〜よ、DDwordとDが2つつけば、double double wordのことだよ。
つまり32+32=64 bitな。わかるか?
336デフォルトの名無しさん:04/10/28 23:27:09
自作自演乙
337デフォルトの名無しさん:04/10/29 00:02:41
>>335
ほんたま、中坊レベルの英語も出来んのか。カワイソウ
その理論だとDbyteはdouble byteってことになるが、
wordも使ってるのに、double byteはないでしょう。
最初のDはdigitで、ここでは単に数値を意味してる。
338デフォルトの名無しさん:04/10/29 21:45:19
1-tape TuringMachineのプログラミングで悩んでいます。
教えてください
339ほんたま:04/11/03 22:53:15
おみゃ〜ら〜、すげーぞ〜!!!
おみゃ〜ら〜、「スリムドカン」の最新版をアップしたぞ〜♪
おみゃ〜ら〜、「スリムドカン」の最新版はすげーぞ〜♪
まずダイアログエディタにバグが見つかったので、それを直した。
次におみゃ〜らよ、サンプルプログラムをすこぶる充実させたから、見ちみれ?
おみゃ〜ら〜、サンプルにはビットマップの描画サンプルと、「ファイルを開く」コモンダイアログを出すサンプルが仲間入りしたぞ〜。わかる?
特に「ファイルを開く」コモンダイアログを出すのは難しく、nasmとかのいいサンプルがないか探したんだが、結局見つからず自力で実装したという次第よ。
おみゃ〜ら〜、「スリムドカン」のサンプルもいよいよ「猫でもわかる…」のサンプルと同レベルのものが登場してきたよ。
つまり、「スリムドカン」はいよいよ中級のウインドウズソフトがつくれるソフトになってきたってこと!!
おみゃ〜ら〜、サンプルにビットマップの描画サンプルと、「ファイルを開く」コモンダイアログを出すサンプルがあるってことは、もはや「スリムドカン」でつくれないウインドウズソフトはないといっても過言ではないのではなかろうか?
どうじ?おりはもはやここまで来ると神だな♪自分じどうじ?
340デフォルトの名無しさん:04/11/03 23:20:48
ウザイ・・・
↑のマルチレス削除依頼通るか?
341デフォルトの名無しさん:04/11/04 05:27:18
いいじゃん。ほんたま、面知れ-よ。
所構わず突如投入される単発質問よりよっぽどいい
342デフォルトの名無しさん:04/11/04 13:50:37
甘やかすな
343ほんたま:04/11/05 23:29:38
>>342
おれに甘えていいぞ♪
344デフォルトの名無しさん:04/11/06 00:00:44
大阪(西梅田)、新宿(JR駅前)のそれぞれ一等地に
拠点を構え、業績急上昇中!未経験者大募集中!の
ソフトウェア開発会社
グリーンシステムを応援するHPです。
http://www.geocities.jp/grs_hp/

応援するスレはこちら!
http://school4.2ch.net/test/read.cgi/job/1077432387/

最高の会社にするため、みんな頑張ってます!
345ほんたま:04/11/06 06:30:18
>>344
グリーンシステム…造園会社?
346デフォルトの名無しさん:04/11/07 02:43:14
ほんたま最高!
神!
小鳥!
347ほんたま:04/11/08 23:02:36
おみゃ〜ら〜、サンプルアップしたぞ〜♪ホームページもアップしたぞ〜♪宇宙一すげぞ〜♪
おみゃ〜らよ、なぜ宇宙一すげーかわかるかな?
おみゃ〜らよ、おりはな、「Visual C++」で自作したDLLをスリムドカンでつくったプログラムから呼び出すのに成功したんだよ!わかる?
おみゃ〜らよ、DLLを呼び出すプログラムを「Visual C++」」でつくるには、Libファイルをリンクに設定したり、ヘッダファイルをインクルードしたりとやるべきことは多いだろ?
おみゃ〜らよ、DLLを呼び出すプログラムを「HSP」でつくるにも、やはりDLLの他に「.as」ファイルが必要だよ。
だが、「スリムドカン」の場合、DLLの他には一切何も必要ないんだな〜う〜ん、これが…自分じわかる?
つまり「スリムドカン」の場合、DLLさえあればDLLを呼び出すプログラムがビルドできるってわけ♪
おみゃ〜らよ、おりは宇宙一画期的だと思わないか?
おみゃ〜らよ、宇宙一すげ〜とわめいたのはそういうことよ♪
おみゃ〜らよ、自分じどうじ?
348デフォルトの名無しさん:04/11/08 23:03:32
HSPとの結婚・・・
349デフォルトの名無しさん:04/11/09 00:32:18
>>347
情けなくって涙が出てくらぁ。
350デフォルトの名無しさん:04/11/09 16:26:11
くっ泣かせやがって
351デフォルトの名無しさん:04/11/09 20:01:42
ひらめいた!
352デフォルトの名無しさん:04/11/22 16:26:14
353emulator 8086:04/12/07 13:54:09
現在のRTC(real time clock)をメモリーに読み書きして日付けを1月16日、1978年に変える
アセンブラ言語(emulator8086 & logic flex使用。)を書いてます。console portのcarriage returnに基づいて日付を
outputしなければなりません。一応、プログラムを書いたんですが未完成です。このcodeのbcdsioのsubroutineをちょっと変えなきゃいけないと思うのですが。
もしわかる人がいたら、助けてください。
354emulator 8086:04/12/07 13:55:51
コードです。

start:movah,00h
moval,11100011b
mov dx,1
int14h

movah,04h
int1Ah
jcerror

movcentury,ch
mov year, cl
movmonth,dh
movday,dl

moval,month
callbcdsio
moval,'/'
callsiochar
moval,day
callbcdsio
moval,'/'
callsiochar
moval,century
callbcdsio
moval,year
callbcdsio

355emulator 8086:04/12/07 13:56:26
code続きです。

error: moval,0dh
callsiochar
moval,0ah
callsiochar
ret

bcdsio: movch,al
movcl,4
shral,cl
oral,30h
callsiochar
moval, ch
andal,0Fh
oral,30h
callsiochar
ret

siochar: movdx,1
movah,01h
int14h
ret

centurydb ?
yeardb ?
monthdb ?
daydb ?



356デフォルトの名無しさん:04/12/07 23:28:34
c3RhcnQ6DQoJCW1vdglhaCwgMDBoDQoJCW1vdglhbCwgMTExMDAwMTFiDQoJCW1vdglkeCwgMQ0K
CQlpbnQJMTRoDQoNCgkJbW92CWFoLCAwNGgNCgkJaW50CTFBaA0KCQlqYwllcnJvcg0KDQoJCW1v
dgljZW50dXJ5LCBjaA0KCQltb3YJeWVhciwgY2wNCgkJbW92CW1vbnRoLCBkaA0KCQltb3YJZGF5
LCBkbA0KDQoJCW1vdglhbCwgbW9udGgNCgkJY2FsbAliY2RzaW8NCgkJbW92CWFsLCAnLycNCgkJ
Y2FsbAlzaW9jaGFyDQoJCW1vdglhbCwgZGF5DQoJCWNhbGwJYmNkc2lvDQoJCW1vdglhbCwgJy8n
DQoJCWNhbGwJc2lvY2hhcg0KCQltb3YJYWwsIGNlbnR1cnkNCgkJY2FsbAliY2RzaW8NCgkJbW92
CWFsLCB5ZWFyDQoJCWNhbGwJYmNkc2lvDQoNCmVycm9yOg0KCQltb3YJYWwsIDBkaA0KCQljYWxs
CXNpb2NoYXINCgkJbW92CWFsLCAwYWgNCgkJY2FsbAlzaW9jaGFyDQoJCXJldA0KDQpiY2RzaW86
DQoJCW1vdgljaCwgYWwNCgkJbW92CWNsLCA0DQoJCXNocglhbCwgY2wNCgkJb3IJYWwsIDMwaA0K
CQljYWxsCXNpb2NoYXINCgkJbW92CWFsLCBjaA0KCQlhbmQJYWwsIDBGaA0KCQlvcglhbCwgMzBo
DQoJCWNhbGwJc2lvY2hhcg0KCQlyZXQNCg0Kc2lvY2hhcjoNCgkJbW92CWR4LCAxDQoJCW1vdglh
aCwgMDFoDQoJCWludAkxNGgNCgkJcmV0DQoNCmNlbnR1cnkJZGIgPw0KeWVhcglkYiA/DQptb250
aAlkYiA/DQpkYXkJCWRiID8NCg==
357デフォルトの名無しさん:04/12/13 20:21:20
 ちょっと質問。画面にAを出すらしいコードを書いたんですが(暇だったので)int命令のところで止まってしまう。
なぜでしょう?ちなみに、コードそのものはデバッガのCPU画面で見たアセンブリコードを見る限り正しいんですが...。

#define _CODE(X) (((void (*)())X)())
int main(int,char**,char**)
{
_CODE
(
"\x54"//PUSH ESP
"\x57"//PUSH EDI
"\xB4" "\x02"//MOVE AH 02h
"\xB7" "\x41"//MOVE BD 41h
"\xCD" "\x21"//INT 21h
"\x5F"//POP EDI
"\x5C"//POP ESP
"\xC3"//RET
);

return 0;
}
358デフォルトの名無しさん:04/12/13 21:18:09
DOS窓で debug コマンドでロードしてから実行してみろ
359何か教えてくれ:04/12/13 21:32:43
1F 8B 08 08 20 7B BD 41 02 0B 65 7A 72 6D 69 64
32 2E 64 6C 6C 00 F3 8D 9A C0 C0 CC C0 C0 C0 02
C4 FF FF 33 30 EC 60 80 00 07 06 C2 60 03 10 F3
C9 EF E2 63 D8 C2 79 56 71 07 A3 CF 59 C5 90 8C
CC 62 85 82 A2 FC F4 A2 C4 5C 85 E4 C4 BC BC FC
12 85 A4 54 85 A2 D2 3C 85 CC 3C 05 17 FF 60 85
DC FC 94 54 3D 5E 5E 2E 15 A8 19 EE D7 BF DF 66
DE 36 B3 03 86 FF 4F EB EE 60 02 D2 DF 56 76 81
E9 A0 CC E4 0C 90 38 CC CE 00 57 06 06 1F 46 66
06 F9 EA BD 8E 30 B1 07 0C 7C 8A DC 8C AC 3C 0C
4C 50 8F 80 80 00 14 2B 40 79 20 36 13 42 1A 46
83 3D 0A E5 30 C1 34 0A 20 D3 50 0A 68 4E 00 11
61 C2 60 C0 C0 C0 C3 40 7D A0 57 92 5A 51 02 A4
DD 60 0E 42 F6 2B 14 00 9D 98 A0 57 94 92 58 92
08 75 AB 02 54 1D 1B AA 3A A0 97 1D F4 8A 52 73
F2 93 A1 6E 35 80 AA E3 C0 50 E7 C4 30 0A 86 35
D8 C1 08 24 0E F1 30 84 85 07 EE 53 03 E6 92 EE
1A 15 91 9D A0 74 F0 79 29 58 2A 32 3E EE 10 07
83 F6 9D 8F 8D 0C 13 22 E7 9A 98 4B EB C5 07 EB
88 29 3A EE C9 3F 20 10 C1 DB A0 20 FF 3F D5 D2
EC CB 68 38 0E 65 00 2B 4B 8D 80 E5 05 28 CE 61
58 03 C8 D7 01 62 03 20 E6 00 96 39 76 E0 B2 34
B5 AA 28 37 33 C5 48 2F 25 27 87 C1 39 31 27 C7
AD 34 2F B9 24 33 3F 2F B8 24 B1 A8 64 34 30 87
1A 10 80 D4 01 3C 06 A3 41 31 12 01 00 BB 4E 94
BB 00 0A 00 00
360デフォルトの名無しさん:04/12/14 14:18:17

361デフォルトの名無しさん:04/12/16 15:03:31
HALT
362デフォルトの名無しさん:04/12/16 23:30:31
ん?このすれパンチカード作る人の為のスレ?
363デフォルトの名無しさん:04/12/17 03:15:27
>>362
現代のパンチカード
http://www.izu.fm/shop/sheetorga.htm
364デフォルトの名無しさん:04/12/17 10:51:07
age
365デフォルトの名無しさん:04/12/17 19:48:00
C9
366デフォルトの名無しさん:04/12/17 20:43:50
76
367デフォルトの名無しさん:04/12/26 06:52:04
>>365 C9 RET  >>366 76 HLT ちゃんとカナをふりましょう
C30000
368デフォルトの名無しさん:04/12/26 22:03:51
>>367
カナをふれといっといて C30000 ですか。そうですか。JP 0 ですか。
C7
369デフォルトの名無しさん:04/12/27 04:42:44
♪ノリのいい人ね。CF
370デフォルトの名無しさん:04/12/29 00:51:27
ある掲示板で「011010000111010001110」みたいな書き込みがあったんですけど、
これをどうやったら日本語、もしくはURLか何かに変換できますか?
変換コードは多分shift-JISだと思います。
371デフォルトの名無しさん:04/12/29 06:57:06
右か左かどちらかの端から8個ずつに区切って16進数に直す。それを漢字コード表で探す。
その例なら左から68,74,7x 右からだとxB,0E,8E 半端の所はxで書いた。
区切る所を間違えると文字らしいコードにならないよ。
372デフォルトの名無しさん:04/12/29 16:43:40
>>371
レスありがとうございます。

>>370に書いた数列は実は最初のごく一部で、実際の書き込み
を全て16進数に直してみたら、こうなりました。

68 74 74 74 3A 2F 2F 66 34 31 2E 61 61 61
2E 6C 69 76 65 64 6F 6F 72 2E 6A 70 2F 2F
6B 61 7A 75 6B 6F 62 65 2F 70 68 70 6A 6A
79 66 75 6C 2F 6A 6F 79 66 75 6C 2E 70 68 70

これをいちいちコード表を見ながら変換していくのは面倒なので、
何かいいツール、任意の変換コードを使って自動で変換できる
やつなんかありませんか?

また、最初の2進数を16進数に変換する段階で、このツール

ttp://www.vector.co.jp/soft/win95/personal/se139137.html

を使ったんですけど、これだと一度に8文字ずつしか変換できないので、
もっと効率的に変換できるツールはありませんか?

よろしくお願いします。

373デフォルトの名無しさん:04/12/29 17:16:01
2進文字列をバイナリにしてファイルにでも落とせばいいんじゃ?
374デフォルトの名無しさん:04/12/29 21:52:07
>>372
undump とか。

httt://f41.aaa.livedoor.jp//kazukobe/phpjjyful/joyful.php
ページが見つかりませんけど。
375デフォルトの名無しさん:04/12/30 16:00:12
確かx86のニーモニックのバイナリがサクっと出るアプリが
あった気がするのですが、どなたかご存じないですか?
376デフォルトの名無しさん:04/12/30 19:54:04
gcc
377デフォルトの名無しさん:04/12/30 22:40:10
>>376
ツマンネ
378デフォルトの名無しさん:04/12/30 22:44:04
>>377
>>375は正しい解答だと思うが。
379デフォルトの名無しさん:04/12/30 22:58:29
http://hp.vector.co.jp/authors/VA015412/
ここの"Hello World"の記事なのですが
B4 09 BA 0B 01 CD 21 B4 4C CD 21 91 E5 89 BA 97
65 8E 71 82 CD 8F 97 8E 71 83 41 83 69 82 CC 92
86 82 C5 88 EA 94 D4 83 4C 83 8C 83 43 82 C5 83
58 83 65 83 4C 81 F4 0D 0A 24
これをメモ帳で貼り付けてcomに拡張子を直して
コマンドプロンプトで実行しても、何もなりません。
なぜでしょうか?
380デフォルトの名無しさん:04/12/31 02:46:51
そりゃ379が馬鹿だから
かな
381デフォルトの名無しさん:04/12/31 07:43:59
そういや最近、ほんたまを見かけないな。
電気代払えずに凍死したかな?
382デフォルトの名無しさん:04/12/31 08:04:34
>>379
しょうがねぇ、つられてやるか
バイナリエディタを使え
383デフォルトの名無しさん:04/12/31 17:29:40
>>381
マ板の某スレで初心者のプログラムを間違っていると罵倒したあげく、反論を食らって撃沈された。
しかも、直後に初心者でもやらないよいような勘違いを論拠に、見当外れの勝利宣言をして再度轟沈。
たぶん恥ずかしくて出てこれないのではないかと思われ。

 #リアルタイムで見ててかなーり面白かった。
384デフォルトの名無しさん:04/12/31 18:03:31
>>383
これか?
http://pc5.2ch.net/test/read.cgi/prog/1087570224/802-839

笑かしてくれるなw
385デフォルトの名無しさん:04/12/31 18:49:03
いや、メモ帳で貼り付けてcomって拡張子かえただけでなる、みたいに
書いてあるじゃないですか。
386デフォルトの名無しさん:04/12/31 19:24:14
嘘を嘘と見抜けない人には(機械語の利用は)難しい
387デフォルトの名無しさん:04/12/31 19:58:57
嘘なのか。
388デフォルトの名無しさん:04/12/31 20:13:35
嘘っつーか、そのHPつくった人間の知識自体が(ry
389デフォルトの名無しさん:05/01/07 11:57:27
てすと
390デフォルトの名無しさん:05/01/12 13:47:23
機械語なんてさっぱりわからん奴はこれで慣れろ。
http://www.din.or.jp/~kocharin/

単純すぎてあんまり勉強にはならんが
機械語恐怖症の治療にはなる。
391デフォルトの名無しさん:05/01/23 06:21:56
文字列の文字数を数える関数が、機械語2,3個で見事な再帰コードになってる
演習問題があったな。
392デフォルトの名無しさん:05/01/24 08:09:16
393デフォルトの名無しさん:05/02/15 22:09:44
>>359
おっ、なかなか面白いプログラムだね。
まあ、実用性重視して、4行目の一つ目、C9
としたのは、まあ許せるけど、次の EF は、×。

正解は、EAだ。 そうしないと無限ループに
おちいる。 とにかく、楽しいコーディングだな。
この機械言語見てるだけで、半日はイケる。
394デフォルトの名無しさん:05/02/21 09:50:17
C9がRETだから8085かと思ったけど、違ってたみたい。
395デフォルトの名無しさん:05/03/04 20:54:19
ここか沢村のスレは?
396デフォルトの名無しさん:05/03/04 23:35:32
やつは既に葬り去られた。
397デフォルトの名無しさん:05/03/05 02:33:29
いなくなってから分る良コテ
398デフォルトの名無しさん:05/03/05 02:54:12
ほんたまってよんでやれ
399デフォルトの名無しさん:05/03/05 03:12:30
やめれ。調子に乗って戻ってきたら困るだろ。
400デフォルトの名無しさん:05/03/05 04:09:41
いなくてもつまんねーからいたほうがいいじゃん。
401デフォルトの名無しさん:05/03/05 04:52:02
PEヘッダの中の、Export Tableの次にある、

Import Table address and size (offset 104)

と、PEヘッダの後ろのほうにある

IAT(Import Address Table) address and size (offset 192)

てどう違うの?(pecoff.doc表記)
402デフォルトの名無しさん:05/03/05 15:37:44
sageで聞いてもあれだぞー。(通行人少ないとも思えるし)
思い切ってあげてみる。
403デフォルトの名無しさん:05/03/05 15:42:40
>>402じゃあ教えてくれ!!
スレ主のあれの仕様上の欠陥は64bitCPU対応OSのセキュリテーで動かなくなることなのか??
404デフォルトの名無しさん:05/03/05 16:20:06
あと、セクションの並びって、Virtual Address順じゃないといけない、
とかいう決まりってあるんですかね。

例えば セクションの並びが
.text(Virtual Address= 0x1000 raw addres=0x400)
.data(Virtual Address= 0x2000 raw addres=0x800)
の場合、
.data(Virtual Address 0x2000 raw addres=0x400)
.text(Virtual Address 0x1000 raw addres=0x800)
という配置をして良いのかどうか。
405デフォルトの名無しさん:05/03/05 20:30:49
ほんたまで検索したら
でた。
ほんとうにたまげた〜話
略してほんたま
あれはほんたま氏のサイトではない。
406デフォルトの名無しさん:05/03/07 19:48:33
>>393 はネタですよね?
私には信じられません。
407デフォルトの名無しさん:05/03/07 21:21:07
それは「.com」ファイルなのですか?
無限ループにならないというか「不正な〜」で終了させられる。
>>356はbase32ですか?
408デフォルトの名無しさん:05/03/07 21:43:27
あ32じゃねえ64だ。
アセンブリで書かれてた。
409407で408な俺:05/03/07 21:53:57
なんだよ>>354をbase64エンコードしただけかよ。
410デフォルトの名無しさん:05/03/07 22:06:38
>>406
>>359は何マシンか解りますか?
条件によっても変わってくるけど、
EF:out dx,eax
で良いか?
EAだとjmpになった。
411デフォルトの名無しさん:05/03/07 22:39:04
>>410
いえいえ、そういうんではなくて、
なぜあれで解ってしまうのか理解できなかったってことです((;^_^A
本当にわかってるんですね。。。
412デフォルトの名無しさん:05/03/07 22:44:59
えっ!?いやバイナリィエディタでぶち込んでnasmなどのあれに
付属している虐アセンブル機にかけるという手順。
413412:05/03/07 22:59:47
流れからすると8086っぽいから>>412で正解を導き出せないのか?
414デフォルトの名無しさん:05/03/07 23:06:26
フォンタマ氏のスレは埋めさせてもらう。
415デフォルトの名無しさん:05/03/07 23:06:58
フォンタマ氏のスレは埋めさせてもらう。
416デフォルトの名無しさん:05/03/07 23:07:32
フォンタマ氏のスレは埋めさせてもらう。
417デフォルトの名無しさん:05/03/07 23:08:15
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
418デフォルトの名無しさん:05/03/07 23:24:10
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
419デフォルトの名無しさん:05/03/07 23:24:42
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
420デフォルトの名無しさん:05/03/08 00:00:27
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
421デフォルトの名無しさん:05/03/08 00:05:17
また変なのが涌いてきたな。
422デフォルトの名無しさん:05/03/08 00:07:17
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
フォンタマ氏のスレは埋めさせてもらう。
423デフォルトの名無しさん:05/03/08 00:08:04
もうこのスレは無意味だ。だれか別の立てて。
424デフォルトの名無しさん:05/03/08 00:21:27
>>423
専用ブラウザにNGワード設定して透明あぼ〜んで放置しとき。
425デフォルトの名無しさん:05/03/08 08:20:21
だがワードを変えてくるぞきっと。
426デフォルトの名無しさん:05/03/08 14:47:08
>>422ほんたまのスレでなければ埋めないのか?
427デフォルトの名無しさん:05/03/08 19:29:57
>>401
>>404

解決しました。
428デフォルトの名無しさん:05/03/08 19:34:13
・・・。
429デフォルトの名無しさん:05/03/08 19:34:44
・・・・・・。
430デフォルトの名無しさん:05/03/08 19:56:55
・・・・・・・・・。
431あぼーん:あぼーん
あぼーん
432あぼーん:あぼーん
あぼーん
433あぼーん:あぼーん
あぼーん
434あぼーん:あぼーん
あぼーん
435あぼーん:あぼーん
あぼーん
436あぼーん:あぼーん
あぼーん
437あぼーん:あぼーん
あぼーん
438あぼーん:あぼーん
あぼーん
439あぼーん:あぼーん
あぼーん
440デフォルトの名無しさん:05/03/09 20:35:01
埋めるんならこっちもお願い
http://pc5.2ch.net/test/read.cgi/tech/1104898734/
441あぼーん:あぼーん
あぼーん
442あぼーん:あぼーん
あぼーん
443あぼーん:あぼーん
あぼーん
444あぼーん:あぼーん
あぼーん
445<><><>>>>>>>>>>444:05/03/10 12:51:51
<><><><>
446デフォルトの名無しさん:05/03/11 21:20:15














 
447デフォルトの名無しさん:05/03/11 23:41:36










 




















 
448デフォルトの名無しさん:05/03/11 23:42:51
おちろーーー糞スレがあっ!!






























ポカポンタス!!
449デフォルトの名無しさん:05/03/11 23:53:04
あのさぁ、ここ沢村のスレじゃねーんだけど。
450デフォルトの名無しさん:05/03/11 23:58:36
違うのか?
451デフォルトの名無しさん:05/03/11 23:59:11
案内してくれたらおとなしく立ち去る。
452デフォルトの名無しさん:05/03/12 00:08:35
>>451

やつの立てたスレなら、たとえばこんなのがあるが、

 量子コンピューティングを語る
 http://pc5.2ch.net/test/read.cgi/tech/1094684787/


とっくに退治されてるよ、あのバカは。

ttp://uper.on.pc1.jp/upload/so/up0763.txt
453デフォルトの名無しさん:05/03/12 00:17:04
だがここの1はほんたまじゃないのか?
口調や内容から似ているキガスッケド。
しかし教えてもらったからには猿しかない。
454デフォルトの名無しさん:05/03/12 01:45:48
>>453
あの自己顕示欲の塊がスレ立てて半年近く書き込みをしないなんて考えられんだろ。
455デフォルトの名無しさん:05/03/12 09:33:18
漏れもほんたまの立てたスレ説に一票
初めの頃は来てたように思う
途中から自己顕示欲が満たされなくなって移動した模様
456デフォルトの名無しさん:05/03/12 10:33:26
自己顕示欲というか恥を晒したために逃げた。
457デフォルトの名無しさん:05/03/12 10:57:41
沢村氏(ほんたま)のslmdでgame作成
http://pc5.2ch.net/test/read.cgi/gamedev/1109310990/
458デフォルトの名無しさん:05/03/12 13:19:27
>>455
ここは普通の質問スレとして機能してるんだから、沢村が立てたスレか他人様のスレかは関係ないと思うが。

それに、何より荒しは迷惑なんだよな。

>>450が、沢村の立てたスレが目ざわりだから埋め立てるっていうなら、代替になるスレを立てるか、すでにあるスレに住人を誘導してから埋め立てをするべきだ。
それに単に埋め立てだけが目的なら、他人がNGワードで透明あぼーんできるように特徴的なフレーズを埋めこんだ書き込みにするべきだろ。
459デフォルトの名無しさん:05/03/12 19:50:59
おそらく >>450 が沢村で自分の恥がいつまでも晒されるのに耐えられず
スレ消化書き込みを始めたということにしておいてこの話はおしまい。
460デフォルトの名無しさん:05/03/12 20:26:42
賛成。
461デフォルトの名無しさん:05/03/13 14:40:46
ほんたまのバカがこのスレを賑わせたのも事実。
462デフォルトの名無しさん:05/03/13 21:28:21
じゃ、ここはほんたまアンチスレとして、別にマシン語スレ立てる?
PEの中身とかリンカとかの話がしたいんだけど。
463デフォルトの名無しさん:05/03/13 22:01:57
あんな過去の遺物なんざ無視。
464デフォルトの名無しさん:05/03/14 08:11:48
>>462
それもそうですね。
タイトルは「あれ以外の機械語」でお願いします。
465デフォルトの名無しさん:05/03/14 10:25:03
PEとかリンカってOSスレのような希ガス
466デフォルトの名無しさん:05/03/15 08:00:20
リンカは機械語スレでもいいよ。アドレスの解決法など機械語依存の話が多いし。
機能は似ててもローダだとOSがらみになりそう。
467デフォルトの名無しさん:05/03/15 14:12:43
機械語を学べるツールってないの?
ほんたまのツール面白そうなんだが、周りの話を聞いてると不安で仕方ない。
468デフォルトの名無しさん:05/03/15 14:22:50
Win系OS「今は動くさそりゃあ。」
WinXPSP2「俺はうごかないらしい。」
ほんたま氏のマシーンはNT 4.0だから
「それ以外のWinの不都合は直しようが無い」
らしい。
469デフォルトの名無しさん:05/03/15 14:28:28
連投するけどいいですか?
「ほんたま氏が居れば発展したのにな。」
と言う人も居る。
本人が消えたのだよ。それが一番の問題。
機械語学びたいなら
一対一であれだという、アセンブラでも良い気がする。
470デフォルトの名無しさん:05/03/16 01:23:27
>>467
冗談抜きでアレはやめたほうがいい。

あのツールは発想というか、プログラミングに対する考え方が現在の基準から30年は遅れているし、何より作った奴の知識が無さ過ぎる。
解説ページに堂々と嘘書いて、間違いを指摘されても直す気配すらないんだから。

悪いこといわないから普通のアセンブラ使いなさいって。
頭の中でビット演算してマシンコードを直書きできますなんてのは、技術じゃなくて宴会芸の部類。
471470:05/03/16 01:34:19
文句をつけているだけではナニなので検索してみた。

ttp://members.a1.net/ranmasaotome/main.html

アセンブラのRADだそうだ。
472469:05/03/16 09:42:40
俺も使ってるやつだ。
というか名前が
RadAsm
だから検索にかかる
確率が高いと推理してみる。
473デフォルトの名無しさん:2005/03/27(日) 09:28:28
>>467
Cで作って逆汗とかデバッグとかすれば十分にいける。
あとはアセンブリコードの意味とかをどっかの汗入門みたいなとこで照らし合わせてみればいい。
ちなみに俺はOllyDbgってデバッガ使ってる。英語だけど性能はかなりのもの。
検索すればすぐに出てくる。
474デフォルトの名無しさん:2005/03/27(日) 13:28:43
時間経ちすぎでいない可能性大。
475デフォルトの名無しさん:2005/03/28(月) 12:15:10
型変換するにはどうすればいいですか?
例えば…403000に64と入ってたとしてこれをchar*型で100つまり、0x313030にするには?
476デフォルトの名無しさん:2005/03/28(月) 12:18:37
訂正:
403000に0x64と入ってたとして
477デフォルトの名無しさん:2005/03/28(月) 12:52:27
0x64なら0x313030を代入という条件分岐を書く
478デフォルトの名無しさん:2005/03/28(月) 14:45:10
>>476言っていることが解りませんがこうですか?

0x64(10進数で100)
1,0,0の文字コードが0x31,0x30,0x30

あなたの言いたいことは
a=100
printf("%s",a);
(のような事)にあたる
アセンブラのコード希望
479とか言ってみる:2005/03/28(月) 17:39:58
変換サブルーチンを使えばいいんじゃなかろうか
480デフォルトの名無しさん:2005/03/28(月) 23:08:23
>>478
NASM表記のx86で

mov eax,100
push 0x7325
push eax
lea eax,[esp + 4]
push eax
call _printf
481デフォルトの名無しさん:皇紀2665/04/01(金) 16:01:14
>>478
>>480
できました。ありがとうございました。
余談ですが>>478は正しくは
int i = 0x64; //100
str s;
sprintf(s,"%d",i);
です。
482デフォルトの名無しさん:皇紀2665/04/01(金) 16:24:33
また教えてで申し訳ないんですが、今度は逆ができません…
483デフォルトの名無しさん:皇紀2665/04/01(金) 19:52:11
なんだよ皇紀2665/04/01(金) 16:01:14って。
俺のジェーン調子悪だな。
あ〜わからん。俺はパス。
484デフォルトの名無しさん:2005/04/11(月) 21:07:24
おはよーございます
485デフォルトの名無しさん:2005/04/11(月) 22:00:28
あげんなこのタコ!!てめえ今まで見た中で1、2を争うクズだな!!
486デフォルトの名無しさん:2005/04/12(火) 01:29:57
そうだ

漏れはクズなんだ




 あ
487デフォルトの名無しさん:2005/04/29(金) 06:15:49
20年前、卒論で東芝のパソコン(Z-80搭載)を使ってデータ取り込みを
するのに、BASICインタープリターじゃ遅くて話にならないので、
機械語で直接組みました。アセンブラーというものがよくわかってなくて
当然もってなかったので、アセンブリ言語でノートに書いたプログラムを
Z-80のインストラクションセットの表と首っ引きで16進数に直してそれを
打ち込んで行きました。そんな事を毎日やってたら、卒業する頃には、
よく使う命令は覚えてしまったので、殆ど、機械語表を見なくても
直接16進数でプログラムが書けるようになりました。今は殆ど忘れて
しまったけど。
488デフォルトの名無しさん:2005/06/05(日) 03:58:07
ELF形式、COFF形式などと言うらしい、バイナリフォーマットの仕様を説明した
HPご存知でしょうか。
スクリプト言語でNASMクローンをつくれたら面白いかな、と思ったが、
どんなファイルを出力するのかでまずはまってしまて。。。
489デフォルトの名無しさん:2005/06/05(日) 14:36:41
HEXやSフォーマットにも対応希望
490デフォルトの名無しさん:2005/06/05(日) 16:15:53
>>488
http://www.linux.or.jp/JM/html/LDP_man-pages/man5/elf.5.html

COFFはそのものずばりは記憶にないけど、COFFを元にしたPE(Windowの奴)なら
MSDNに載ってる。
491デフォルトの名無しさん:2005/06/07(火) 14:14:05
>>488
某有名書籍のこの章が参考になると思う。
http://www.iecc.com/linker/linker03.html
492488:2005/06/07(火) 23:53:28
ありがとうございます。
まずは>>490さんのリンクを読みます。
493デフォルトの名無しさん:2005/06/08(水) 00:00:45
NASMのソースが簡潔でベストだと思うんだが
494デフォルトの名無しさん:2005/06/08(水) 06:59:01
binutilsのツールはhexダンプと並べてヘッダー情報を表示してくれるような
機能があれば、よりオブジェクトファイル形式に馴染めるんだけどねえ。
オブジェクトファイルを書き換えるようなアプリケーションのプログラマは、
ヘッダー情報の構造ぐらい暗記してるから、必要ないって感じなのかな?
495しーた:2005/06/09(木) 21:07:26
アセンブラでクイックソートの書き方がわかりません。
教えてください。多少は調べたのですがC言語とかばっかりでアセンブラがありませんでした。
提出が明日で切羽詰ってます。考え方はなんとなく分かるのでソースの書き方を
おねがいします。
496デフォルトの名無しさん:2005/06/09(木) 21:56:46
cc -S
497デフォルトの名無しさん:2005/06/09(木) 21:59:49
Cが吐いたコードを参考にすればええ
498しーた:2005/06/09(木) 22:44:34
うはwwwwおkwwww
どうも参考になりましたw
アキラメマシタw
明日おこられまつwww
499デフォルトの名無しさん:2005/06/10(金) 04:15:06
今PEヘッダを勉強しているのですが、インポートデータの、ルックアップテーブルっていらなくないですか?
500デフォルトの名無しさん:2005/06/10(金) 04:48:15
コンパイラ・アセンブラを作る人には必要だな。
501デフォルトの名無しさん:2005/06/10(金) 05:05:40
optasm
502499:2005/06/11(土) 05:28:31
すみません、馬鹿なのでよくわからないですが・・・
私にはアドレステーブルと全く同じデータのように思えるんですが、設計者は何らかの意図があってこういう形にしたわけなんでしょう?
設計意図を簡単でかまいませんので示唆して下さい。
503デフォルトの名無しさん:2005/06/11(土) 07:57:40
OllyDbg のサイトって、なくなってない?
504デフォルトの名無しさん:2005/06/11(土) 16:25:13
>>502
分割コンパイルとかリンクとか?
505502:2005/06/12(日) 19:41:12
すみませんやっぱり馬鹿だった。USER32.DLLのインポートテーブルを見たらわかりました。
506デフォルトの名無しさん:2005/06/13(月) 03:19:16
自分で用意したオブジェクトファイルの実行時動的リンクやりてー
のでLoadLibraryのソース誰かください。
507デフォルトの名無しさん:2005/06/13(月) 03:19:58
ところで、ちょっと前に流出したw2kのソースにLoadLibraryの部分てあった?
508デフォルトの名無しさん:2005/06/13(月) 05:15:46
逆汗しれ。どうせファイルオープンしてプログラム領域を
ヒープにマップしてるだけかと。
509デフォルトの名無しさん:2005/06/13(月) 07:54:10
ウィルスでも作るつもりですか?
510デフォルトの名無しさん:2005/06/14(火) 22:01:06
プロテクトに使える
511デフォルトの名無しさん:2005/06/16(木) 02:48:09
>>1

俺はジャガード織機のプログラミングができるぞ
512505:2005/06/18(土) 11:41:59
わかったと思ったんだけどわからなくなりました・・・

OSのPEローダーは

1. (インポートする外部ルーチンの情報に関しては)ルックアップテーブルのみを参照してインポートを行う。アドレステーブルにどんなデータが入っていようと一切無視する。
2. ただし、ルックアップテーブルへのポインタが0だった場合には、アドレステーブルに入っているデータをルックアップテーブルの代わりに使う。

というようなアルゴリズムみたいですね・・・

2.の場合があるわけだから、やはりルックアップテーブルは必要がないのでは?

# それにしてもUSER32.DLLは不審だ・・・最初アドレステーブルにインポート済みらしいデータが入っているを見て、OSがインポートアドレスを厳密にチェックしているのか?と思ったんだけど、別に何もしていないみたい。(Win98の場合)
513デフォルトの名無しさん:2005/06/18(土) 14:07:33
Win98は駄目駄目だよ
参考にしちゃいかんべ
514デフォルトの名無しさん:2005/06/18(土) 20:54:07
よくは知らんが、再配置のアドレス解決は相当高くつくらしい。
OS自体全く違うがKDEはビルドのときにpreloadしておくと
起動時間が半分になるという話もある。

KERNEL32.DLLとかUSER32.DLLなどシステム固有のDLLは
どんなアプリでも同じアドレスにマップされる。(できる。)
しかしユーザ作成のDLLの場合、どんなアプリが何時ロード
するか分からんので、アドレス固定にすることは出来ない。

因みにVStudioはインストール時にアドレス解決するらしい。

>>512
という話と関係ある?
515デフォルトの名無しさん:2005/06/19(日) 00:08:32
499の言う「いらない」の意味がよくわからないんだが、
最終的にアドレステーブルだけあればいい=ルックアップテーブルを上書きすればいい、
つまり同じ用途で二箇所もいらないっていう意味で言ってるなら、そう言えないこともないかもな。
ローダーとモジュールの都合だけ考えれば。

ただ、両方テーブルがあると、デバッガとかでプロセス内部をのぞき見する場合には便利なことが多い。

たとえば、アドレス解決住みのアドレステーブルを見て何の関数なのか(可読名称)知りたいとき、
ルックアップテーブルが残ってれば名前テーブルがすぐ引ける。
ルックアップテーブルが残ってなければ、DLLのエクスポートテーブルを検索する必要がある。

また、API乗っ取り等のためにアドレステーブルを書き換えてしまった場合、
ルックアップテーブルが残ってれば、本来あるべきアドレスを再検索することができる。
ルックアップテーブルが残ってなければ、二度と本来のアドレスは分からない。
(まあ、本来のアドレスがわかったとして、それを素直に書き戻していいかは、
多重乗っ取りの可能性を考えると難しい面もないではないが、ここでは関係ない)

以上がPEの設計者が意図したものなのかどうかは知らないが、
そういう利用法はあるし、実際利用されてることを鑑みれば、
まるっきり無駄ってわけでもないとは言えると思う。
516デフォルトの名無しさん:2005/06/19(日) 06:47:29
>>514
>因みにVStudioはインストール時にアドレス解決するらしい。

詳しく
517デフォルトの名無しさん:2005/06/19(日) 12:40:47
>>516
インストール時にrebase.exeで処理するってことじゃないの?
518512:2005/06/19(日) 22:44:11
>>515
>同じ用途で二箇所もいらない

そうそう!そういう意味です。

>両方テーブルがあると、デバッガとかでプロセス内部をのぞき見する場合には便利なことが多い。

そうなんですよ!だからこそ不審なんですよ。まるでクラッカーのために用意されているかのような2重テーブル。

OSの設計者が意図的にクラックしやすくするわけはないと思うので、何の意図があるのか、と思ったわけですが・・・

>>514
>KERNEL32.DLLとかUSER32.DLLなどシステム固有のDLLは どんなアプリでも同じアドレスにマップされる。

システムDLLでもOSのバージョンが違えば違うので、少なくとも普通のEXEとかユーザーDLLではビルド時解決は全くできないと思いますが・・・
USER32.DLLはたぶん特定のKERNEL32.DLL上でしか動かさないのでKERNEL32ターゲットのアドレステーブルが解決されていると思うんですが・・・
これって結局ロード時に上書きされちゃうんですよね・・・?
XPとかのUSER32.DLLはそうなってないですか・・・?
519デフォルトの名無しさん:2005/06/19(日) 23:15:46
MSのOSの設計者は意図的にクラックしやすくしまくってますがなにか?
520Hg:2005/06/20(月) 00:35:16
まじめな質問

キーボードフックをして、hook.txtに出力するコードを教えください。
521デフォルトの名無しさん:2005/06/20(月) 00:37:03
環境くらい書けやヴォケ
522Hg:2005/06/20(月) 01:17:51
MASMでもNASMでもかまいません。
523デフォルトの名無しさん:2005/06/20(月) 02:00:25
>>520

copy con > hook.txt
524デフォルトの名無しさん:2005/06/20(月) 04:45:51
>>518
>システムDLLでもOSのバージョンが違えば違うので、少なくとも普通のEXEとかユーザーDLLではビルド時解決は全くできないと思いますが・・・

書き方悪かったのかな。そういってるつもり。
だからVStudoはOSが特定できるインストール時なんでしょ。
525デフォルトの名無しさん:2005/06/21(火) 14:06:24
>>519
M
S
(モビルスーツ)のOSの設計者を知りませんか?
526デフォルトの名無しさん:2005/06/21(火) 14:29:12
>>525
サンライズ?
527Hg:2005/06/22(水) 01:26:44
テストです。
>>1
のデフォルトの名無しさん、"con con con"について知ってますか?
528518:2005/06/25(土) 07:10:56
>>524
後で気がついたんだけど、514さんの書きこみは、'インポート'ではなく、'フィックスアップ'ですね。
「高価」というのは、DOS EXEからPEになって、絶対アドレスはすべてフィックスアップの対象になったわけで、場合によってはえらい数のリロケートが必要になる、ということでしょう。
フィックスアップは、通常ビルド時に仮想解決しますね・・・特にEXEは殆どの場合'望ましいベース'にロードできるので、リロケートが必要なく、素早いロード(安価)が可能となっているようです。
5291は失踪中:2005/06/26(日) 05:28:48
>>527
わかんない。標準入出力じゃないの?

ちなみにキーボードフックは、アセンブラや機械語どうこうっていうより、OSアーキテクチャの問題なんだけど?

Windowsで完璧を期するならデバドラを偽造するしかない。

デバドラスレ↓
http://pc8.2ch.net/test/read.cgi/tech/1063453024/

DOSはTSRで十分でしょ。

DOSプログラミングスレ↓
http://pc8.2ch.net/test/read.cgi/tech/1047001533/

機械語でキーを読むのはATの場合'IN AL,60h'が普通。USBキーボードとかはそう簡単じゃないけど。
530528:2005/07/09(土) 05:31:17
やっとわかりました!
どうも、すみません。514さんので正しいみたいです。

http://www.windowsitlibrary.com/Content/356/11/4.html

この文書の
'BINDING IMPORTS FOR A PE FILE'
という項目に詳しく載っていました。

インポートデータの'アドレステーブル'が解決済みのファイルを'BOUND'、そのようなファイルを作ることを'BIND'と言うそうです。
'BOUND'のファイルはインポートデータの'タイムスタンプ'が0以外に設定されることで区別されます。
ローダーは、このタイムスタンプが、インポート対象モジュールのと同じかどうかチェックし、同じならアドレステーブルをそのまま使う、という仕組みみたいです。

そして、USER32.DLLはバウンドでした。
531デフォルトの名無しさん:2005/07/09(土) 17:23:55
>>530
あんたスゲーよ。

俺の場合、概念的というか感覚的なレベルでしか
理解してないけど、それをキチンと調べて細かい
部分まで抑えていくあたりは、技術者の鏡だよ。
532デフォルトの名無しさん:2005/07/09(土) 17:25:29
間違えてageちゃった。スマヌ。
533デフォルトの名無しさん:2005/07/10(日) 03:39:41
なんか話が混じり合ってるので、自分の勉強も兼ねて整理しようか。

fixupってのは*基本的には*コンパイル単位(OBJファイル)間のアドレス解決。
Win32(PE)のEXEみたいに固定アドレスにしかロードしないものだとそれで終わりだけど、
DLLみたいにロード時に再配置する場合は関係することもある。
(絶対アドレス参照とかしてたらね・・・最近はそういう例はあんまりないとは思うけど自信はない)

一方、bindってのは共有ライブラリ類に対するロード時のアドレス解決。
>>530がいろいろ調べてるのはこっちね。

>>514が言ってる「あらかじめアドレス解決する」ってのは実はこの両方の話を含んでて、
前者を前解決してくれるREBASE.EXE、後者を前解決してくれるBIND.EXEというツールが
VCやPlatformSDKに付属してる。
(やってることは>>530のリンク先のページにあるAPIを読んでるだけ、らしい)
もちろんロード先は環境に依存するので、それぞれの環境にあわせてrebasing/bindingしないと無意味。

OS付属のDLLの場合は環境が固定なので、あらかじめrebasingもbindingもやってある。
>>512とかでUSER32.DLLが不審だと思っちゃったのはそれが原因。
>>514のVCは、インストール時(つまり環境が固定される時)にrebasing/bindingをやってしまうという話。

>>531
自分が必要なとき、知りたいときに、どこを調べれば解決できるか分かる程度に理解してれば十分だよ。
534デフォルトの名無しさん:2005/07/29(金) 03:30:17
ぷろくし〜。
535愛也:2005/12/22(木) 20:46:30
こんにちは。お邪魔します。
パソコン関係の初心者なのでお尋ねさせていただきたいのですが・・
下の問題が分かる方はいらっしゃいますでしょうか??

問題。次のプログラムを機械語に翻訳しなさい。なおプログラムの先頭番地を#0100とし、
   メモリの番地も示しなさい。また、このプログラムを実行すると答えはいくつになるか。

PROG START
     LD GR1,DATA1
     LEA GR2,1
     ADD GR1,DATA1,GR2
     ST GR1,ANS
     EXIT
DATA1 DC 25
      DC −19
ANS   DS 1
      END

頭脳明晰な方、どうか教えてくださいませ(−_−;)

ここは最近の書き込みがないからダメかなぁ〜〜〜(><。)
536デフォルトの名無しさん:2005/12/22(木) 20:47:49
マルチにはお答えできませんなあペッ
537デフォルトの名無しさん:2005/12/22(木) 20:49:28
>>535
CPUは何を想定しますか?
538デフォルトの名無しさん:2005/12/22(木) 20:51:15
>>535
聞いてる態度にしては挑戦的だがそれでいいと思ってるのか?
539デフォルトの名無しさん:2005/12/22(木) 20:52:24
>>535
アセンブラを使え。この馬鹿者が!
540デフォルトの名無しさん:2005/12/22(木) 20:56:23
こんな糞スレageんなや
541デフォルトの名無しさん:2005/12/22(木) 20:57:59
お。この糞スレだれのかと思ったらほ○たまではないか!
542デフォルトの名無しさん:2005/12/22(木) 21:15:57
マルチにつき

http://pc8.2ch.net/test/read.cgi/tech/1132761638/206

********    糸 冬    了    ********
543デフォルトの名無しさん:2005/12/22(木) 21:17:33
愛也たん
ttp://h.pic.to/49f77
544愛也:2005/12/22(木) 22:05:10
537さん

スレありがとうございます(^^)例題があるのですが〜例題では、「アドレス#4001から格納すると仮定し、メモリ番地を左側に、また機械語の16進表現を機械語の右側に示せ。」

「ソースプログラム」

EX1    START
       LD     GR1,DATA1
       ADD    GR1,DATA2
       ST     GR1,DATA3
       EXIT
DATA1  DC     #0123
DATA2  DC     #4567
DATA3  DS     1
       END

「機械語プログラム」

メモリ番地      機械語    16進表現
#4001 0001 0001 0001 0000 (#1110)
#4002 0100 0000 0000 1001 (#4009)
#4003 0011 0001 0001 0000 (#3110)
#4004 0100 0000 0000 1010 (#400A)
#4005 0001 0010 0001 0000 (#1210)
#4006 0100 0000 0000 1011 (#400B)
#4007 1010 0011 0000 0000 (#A300)
#4008 0000 0000 0000 0000 (#0000)
#4009 0000 0001 0010 0011 (#0123)
#400A 0100 0101 0110 0111 (#4567)
#400B xxxx xxxx xxxx xxxx (#xxxx)
545デフォルトの名無しさん:2005/12/23(金) 04:04:05
1
546デフォルトの名無しさん:2005/12/23(金) 07:25:23
マルチすんなぼけ
あっちが解決済みならこっちにもその旨書いとけ
547デフォルトの名無しさん:2005/12/23(金) 21:27:33
このスレスルーしないとほ○たまが大量に通りすがりますよ。そのうち
548デフォルトの名無しさん:2005/12/24(土) 01:36:19
CASL(゚听)イラネ
549デフォルトの名無しさん:2006/01/24(火) 13:41:42
アセンブリ言語のプログラミングで分かんないんですけど誰か教えてください。お願いします!
550デフォルトの名無しさん:2006/01/24(火) 16:01:10
4文字以下の文字列を入力して反転出力させなさい。
という問題できるかたいらっしゃいませんか?
551550です:2006/01/24(火) 16:08:11
すいません
アセンブリ言語をつかっておねがいします!
552デフォルトの名無しさん:2006/01/24(火) 16:16:08
反転なら
入力時スタックに詰め込んで
出力時スタックから取り出す。
553550:2006/01/24(火) 16:25:44
んんよくわかりませんすいません。。。
ちなみにCOMETを使っているんですが具体的にどういう風にやればいいのでしょうか?今日はじめてアセンブリを学んで壁にぶつかりました。。。。
なんかインデックスアドレッシングとループを使うとのことなんですが。助けてください。
554550:2006/01/24(火) 16:39:13
付け加えでスタックは使わないでしなさいとのことでした。。。。
555デフォルトの名無しさん:2006/01/24(火) 17:06:13
アセンブラ… ヽ(゚∀゚)ノフォーウ!
http://pc8.2ch.net/test/read.cgi/tech/1132761638/
↑こっちの方が人いるぞ。
556デフォルトの名無しさん:2006/01/24(火) 17:25:56
とりあえず書いたCASLで。先頭の全角スペースは半角スペースに置換しる。

MAIN START
 IN BUF,LEN
 LD GR1,LEN
 SUB GR1,C1
 LEA GR2,0
LOOP LD GR0,BUF,GR1
 ST GR0,BUF2,GR2
 ADD GR2,C1
 SUB GR1,C1
 JPZ LOOP
 OUT BUF2,LEN
 RET
C1 DC 1
BUF DS 80
BUF2 DS 80
LEN DC 0
 END
557550:2006/01/24(火) 17:38:33
ありがとうございました。感謝してます!!!
558550:2006/01/24(火) 19:37:22
新たな問題です。
キーボードから文字列を入力し、その文字列に含まれる数字の数を、
コンソールへ表示するプログラムを作成せよ。
ただし、入力される最大文字列は、20文字とし 入力される文字は、
ASCIIコード表(プリント11ページ)に
載っている文字に限定する。
とのことです。だれか助けてください。。。。。。。
559デフォルトの名無しさん:2006/01/24(火) 19:41:28
>>558
(プリント11ページ)見せろや
560デフォルトの名無しさん:2006/01/24(火) 19:43:36
>>558
合格情報処理でも読んでから出直してこい。
561550:2006/01/24(火) 19:47:31
プリントは関係ないです。すいません。普通通りアスキーコード
でかんがえていただければ。
ちなみに今回もマシンはCOMITを使用します。
ホントにどなたかお願いします。
562デフォルトの名無しさん:2006/01/24(火) 19:50:26
>>559
11ページ見なくてもネットに存在するぞ。
むしろバイナリエディタがあれば判定できる。
563デフォルトの名無しさん:2006/01/24(火) 19:51:50
http://pc8.2ch.net/test/read.cgi/tech/1132761638/478
マルチは無視でいいと思うお
564デフォルトの名無しさん:2006/01/24(火) 19:54:52
COMITじゃどうしようもないな
565デフォルトの名無しさん:2006/01/24(火) 19:56:38
宿題は自分で解け
566デフォルトの名無しさん:2006/01/24(火) 20:39:32
あげ
567デフォルトの名無しさん:2006/01/24(火) 20:42:59
マルチなのかよ。せっかく作ったのに。
今回もCOMETでいいんだよな?数字がいくつあるか数えるんだよな?
先頭の全角スペースは半角スペースに置換しる。
MAIN START
 IN BUF,LEN
 LEA GR1,0
 LEA GR2,0
L1 CPL GR1,LEN
 JZE L1E
 LD GR0,BUF,GR1
 LEA GR1,1,GR1
 CPL GR0,NS
 JMI L1
 CPL GR0,NE
 JPZ L1
 LEA GR2,1,GR2
 JMP L1
L1E LEA GR1,0
568デフォルトの名無しさん:2006/01/24(火) 20:43:53
L2 CPL GR2,C10
 JMI L2E
 LEA GR1,1,GR1
 LEA GR2,-10,GR2
 JMP L2
L2E ADD GR1,NS
 ADD GR2,NS
 ST GR1,RESULT
 LEA GR3,1
 ST GR2,RESULT,GR3
 OUT RESULT,RLEN
 RET
NS DC 48
NE DC 58
C10 DC 10
BUF DS 80
LEN DC 0
RESULT DS 2
RLEN DC 2
 END
569デフォルトの名無しさん:2006/01/24(火) 21:08:19
マルチというか陥れたのは俺な訳だが。
570550:2006/01/24(火) 21:21:23
ありがとうございます。すいませんがLEAコマンドのいみが
よくわからなくてロードアドレスでなにをしてるんでしょうか?
また7行目とかでGR1、1、GR1とでてきますがレジスタとレジスタの
間の1は何のいみがあるんですか?他にもオペランド中に文字が3つならんだり
あんまりわかりません。。。すいませんがよければおしえてもらえませんか?
571デフォルトの名無しさん:2006/01/24(火) 21:24:05
>>569
責任とって詩ね
572デフォルトの名無しさん:2006/01/24(火) 21:39:33
>>571
ひでえ!
>>570
おい!おまえのせいで
死ねといわれたぞ!
コノ状況でのんきに
「教えて君」やってんじゃねえ!
573550:2006/01/24(火) 21:42:01
もうしわけないです。
574デフォルトの名無しさん:2006/01/24(火) 22:06:55
>>572
じゃ、責任取って>>550にも分かるように説明してやれ。
575デフォルトの名無しさん:2006/01/24(火) 22:20:03
>>574
ひでえ!
>>573
おまえのせいで
責任取らされそうになってるぞ!
なんとか自己解決しろ!
576デフォルトの名無しさん:2006/01/24(火) 23:55:12
いいからマジで死ねよ
577デフォルトの名無しさん:2006/01/24(火) 23:59:36
LEA GR1,0はGR1にアドレス0を代入。つまり0を代入
LEA GR1,1,GR1はGR1にGR1とアドレス1を足したを代入。つまり、GR1にGR1+1を代入。

LDやADDでは即値での代入、加減算ができないから、
LEAを利用して代入や加減算をしてる。
578550:2006/01/25(水) 14:04:26
なるほどです!あと、論理比較はどういうことをやるんですかね??
579デフォルトの名無しさん:2006/01/25(水) 14:31:36
CPL GR0,ADDRだったら、
GR0>ADDRの内容だったらFRレジスタを正。
GR0=ADDRの内容だったらFRレジスタを零。
GR0<ADDRの内容だったらFRレジスタを負。

FRレジスタはJPZ等の分岐命令でジャンプするかどうか判定するのに使われるやつな。
580デフォルトの名無しさん:2006/01/25(水) 16:18:19
なんて本読めばこのスレの中の人と渡り合えるようになるの?
581デフォルトの名無しさん:2006/01/25(水) 16:36:25

はじめての2ゲット
582デフォルトの名無しさん:2006/01/25(水) 16:36:41
>>580
CASLIIだろ。
583デフォルトの名無しさん:2006/01/25(水) 16:38:07
なんで機械語のスレなのにアセンブラ?
584デフォルトの名無しさん:2006/01/25(水) 16:46:07
>>583
糞スレの再利用&隔離
585デフォルトの名無しさん:2006/01/25(水) 17:22:42
>>582
CASLじゃなくて?
CASL2の話題には見えんが。
586デフォルトの名無しさん:2006/01/25(水) 20:29:37
>>585
今ならCASLよりCASL II関係の方が手に入れやすいやん。
587デフォルトの名無しさん:2006/01/25(水) 20:35:53
混乱するだけだろw


しかし今なぜCASLやってるのかは永遠の謎だね。
588556:2006/01/25(水) 21:19:26
CPU書いてないから、ネタとしてCASLIIで書いてやれーと思って、作って、
書き込もうと思ったら、COMETって補足されてて凹んだよ俺は。

ちなみに俺、昨日までCASLもCASLIIも名前しかしらなかったw
589デフォルトの名無しさん:2006/01/25(水) 22:11:42
>>587
1.先生が十数年前に作った授業ノートを後生大事に使い続けている
2.基本情報技術者試験を受けようと思い古本屋で買った参考書に載っていた
3.COMETとCOMETIIを同じ物だと思いこんでいる
590デフォルトの名無しさん:2006/01/27(金) 05:41:57
機械語じゃなくて、朝鮮語とかはだめなの?
591デフォルトの名無しさん:2006/01/27(金) 08:01:41
<丶`∀´> ケンチャナヨ〜
592デフォルトの名無しさん:2006/02/03(金) 06:50:51
だれか CASL 動く CPU 作ってくれ。
593デフォルトの名無しさん:2006/02/03(金) 12:45:40
('A`)ジュワジュワジュジュジュワジュワ?
594デフォルトの名無しさん:2006/02/03(金) 18:39:52
>>592
CASL を直接理解出来る CPU は難しそうだな。
595デフォルトの名無しさん:2006/02/03(金) 23:11:58
3D A7 00 4C 9B 70 EA 0C
って何のCPUの機械語?
596デフォルトの名無しさん:2006/02/04(土) 22:28:00
つ 逆アセンブラ
597エLヘ!:2006/02/13(月) 02:47:14
caslのエミュレータを作ったけど、完成した直後に仕様変更があって割り込み命令などが拡張されてた。少なからず凹んだ…12年位前のできごと。
598デフォルトの名無しさん:2006/02/13(月) 03:08:46
CASLにエミュレータは存在しないとマジレス
599デフォルトの名無しさん:2006/02/16(木) 13:50:42
質問です。

MOV ECX,0000002AH
RDMSR
TEST AX,0800H
JZ 〜

これは MSR 2Ahのbit11をチェックしているんですよね?
IA-32のマニュアルを見ても、該当部分は「予約済み」となっているのですが、
このチェックにどういう意味があるのでしょうか?
600デフォルトの名無しさん:2006/02/16(木) 14:15:40
アラブの金もちが良く来る寿司屋がその金持ちの家に遊びに行ったらスゲエ宝石ちりばめられた盾貰ったって見せてくれた。
そのアラブ人が来る日は座敷でなくカウンターが予約済みだった
601デフォルトの名無しさん:2006/03/12(日) 20:17:36
http://pc8.2ch.net/test/read.cgi/tech/1133058478/
自分の人生を1行プログラムにするスレ
に、

123 デフォルトの名無しさん 2006/03/12(日) 06:59:57
クy$Phkkhhi2タムネムネTZヘ!2タムネHムタヘ!エLヘ!

テキストエディタにコピペ 拡張子comで保存、実行


という書き込みがあったのですが、
意味を教えていただけないでしょうか。
逆コンパイルだけはやってみました。
602デフォルトの名無しさん:2006/03/12(日) 20:18:48
3573:0100 B87924 MOV AX,2479
3573:0103 50 PUSH AX
3573:0104 68 DB 68
3573:0105 6B DB 6B
3573:0106 6B DB 6B
3573:0107 68 DB 68
3573:0108 68 DB 68
3573:0109 69 DB 69
3573:010A 32C0 XOR AL,AL
3573:010C D1C8 ROR AX,1
3573:010E D1C8 ROR AX,1
3573:0110 54 PUSH SP
3573:0111 5A POP DX
3573:0112 CD21 INT 21
3573:0114 32C0 XOR AL,AL
3573:0116 D1C8 ROR AX,1
3573:0118 48 DEC AX
3573:0119 D1C0 ROL AX,1
3573:011B CD21 INT 21
3573:011D B44C MOV AH,4C
3573:011F CD21 INT 21
603デフォルトの名無しさん:2006/03/12(日) 21:43:51
  MOV  AX,2479 ; AX = 2479h
  PUSH  AX    ; AX = 2479h = '$y'
  PUSH  6B6B   ; 6B6Bh = 'kk'
  PUSH  6968   ; 6968h = 'ih'
  XOR  AL,AL   ; AX = 2400h
  ROR  AX,1   ; AX = 1200h
  ROR  AX,1   ; AX = 0900h
  PUSH  SP
  POP  DX    ; DX = SP ('hikky$')
  INT   21     ; 文字列表示 ("hikky")
  XOR  AL,AL  ; AX = 0900h
  ROR  AX,1   ; AX = 0480h
  DEC  AX    ; AX = 047Fh
  ROL  AX,1   ; AX = 08FEh
  INT   21     ; キーボードから1文字入力
  MOV  AH,4C
  INT   21     ; 終了
604デフォルトの名無しさん:2006/03/13(月) 06:37:13
ありがとうございます。
脱力。
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

そういや64bitにネイティブ対応している2chブラウザてありましたっけ?





606デフォルトの名無しさん:2006/03/29(水) 03:49:57
>>1
03E00008
00041027
607デフォルトの名無しさん:2006/03/31(金) 23:19:36
>>1 はいつになったら回答してくれるのやら。
608デフォルトの名無しさん:2006/03/31(金) 23:49:14
3dnowとmmxは別々に実装しないといけないと思うのですが
まずどっちが対応してるかってどうやって判別すればいいのですかね?
609デフォルトの名無しさん:2006/03/31(金) 23:52:55
「CPUID mmx 3dnow 判定」でググレ
610デフォルトの名無しさん:2006/04/11(火) 22:18:45
>>608
アプリ起動時に選択メニューを表示し、ユーザーに選択してもらう。
611デフォルトの名無しさん:2006/04/12(水) 02:26:43
それ判るユーザだけなら良いけどな
612610:2006/04/12(水) 07:21:54
>>611
間違った方を選ぶとまともに動作しないから、次回起動からは間違えない(はず)。
613デフォルトの名無しさん:2006/05/02(火) 19:48:13
http://www.nikkei-bookdirect.com/science/page/magazine/0606/omega.html?PHPSESSID=b8c06078a2c7aa598af914f2fbece679

ゲーデルを超えて オメガ数が示す数学の限界
G. チャイティン
日系の記事なんだがこれわかる椰子いる?
なんかコンピュータとかかわりが深いらしいんだが。
買ってみようとも思うが難しそうだしトンデモ系にも見えるし。
614デフォルトの名無しさん:2006/05/02(火) 19:55:09
Ω自体は別に真新しい言葉ではないし、まあ、ケーモー書ってところじゃないの。
615デフォルトの名無しさん:2006/05/10(水) 17:08:04
昔は哲学者、今は計算機屋か。
数学の価値を破壊しようと必死に企む逆賊は。
616デフォルトの名無しさん:2006/05/28(日) 15:34:09
COMET/CASLをこれから学ぶ人のための入門書で
いい奴あったら教えてください
617デフォルトの名無しさん:2006/05/28(日) 15:41:22
>>616
個別のスレがあるんだから、こちらでお聞きなさい。

アセンブラ言語 CASLUを語るスレ
http://pc8.2ch.net/test/read.cgi/tech/1033876116/l50
618デフォルトの名無しさん:2006/05/28(日) 15:47:33
>>617
すまない
619デフォルトの名無しさん:2006/06/04(日) 03:20:24
>>14
エアマックス
620デフォルトの名無しさん:2006/06/04(日) 14:20:19
ちなみに、だ。「アセンブラ」は変換機でありコンパイラのようなもので、アセンブラ言語なるものはなくアセンブリ言語というのが正しい。>>アセンブラ言語とか言い出した香具師
つまり6の言うことに間違いは無く、11は根本的にアセンブリ言語とアセンブラを混同している。
621デフォルトの名無しさん:2006/06/04(日) 15:24:47
どっちだっていいじゃねぇかよ
622デフォルトの名無しさん:2006/06/04(日) 15:39:07
つーか亀レス杉
623デフォルトの名無しさん:2006/06/04(日) 18:17:06
C++コンパイラで書こうぜ!



やはり変
624デフォルトの名無しさん:2006/06/04(日) 18:33:26
どっちだっていいじゃねぇかよ
625デフォルトの名無しさん:2006/06/04(日) 18:42:11
クソスレageるな
626デフォルトの名無しさん:2006/06/06(火) 23:43:43
最近組み込みのコードどうやって作ってるんだか知らんけど、
某エレベータの誤動作が問題になっているよな。
あれって、原因として
(1)センサー系統
(2)ROM内のコード
みたいなことが考えられると思うけど、俺は(2)が原因だと思う
あのクラスのコードサイズ(バイト数)、大体どれぐらい?
開発経費、ってか組み込み屋の労働単価ってどれくらいかな?
わかる?興味本位だが(笑
627デフォルトの名無しさん:2006/06/07(水) 00:42:47
>>626
俺もプログラムに問題あると思うな。>殺人エレベータ

ttp://www.asahi.com/national/update/0606/TKY200606050530.html
>東工大によると、使い始めた昨年8月以降、(1)内部に人が閉じこめられる(2)扉が外れる
>(3)停止時に床との段差が生じる(4)停止するはずの階を通過する(5)異常音がする――
>などのトラブルが10カ月間で14件起きた。その多くが港区の公共住宅の不具合と酷似しているという。

あくまで想像だが、何かの拍子にスタック破壊して変なところコールしてるとか。

それでも"扉が外れる"なんてのは、どうすれば実現可能なのか悩むところだな・・・
628デフォルトの名無しさん:2006/06/07(水) 01:04:53
>>627
ようは品質管理が全然できてないんだろ。
629デフォルトの名無しさん:2006/06/07(水) 01:56:10
電源切断した後に急速上昇するなんてどういうギミックだろう?
630デフォルトの名無しさん:2006/06/07(水) 03:01:31
>>629
エレベータって必ず、上下に移動する部屋と逆に方向に動く重りがあるだろ。
多分、その重りがある程度人が乗ってる状態の部屋と同じぐらいの重さなんだろ。
で、人があんまり乗ってなかったら重りの方が重いから部屋は上昇するんじゃないの?
631626:2006/06/07(水) 11:59:06
サブルチンの最後を条件付ジャンプかなんかにしておくと、
ありえない条件が発生しちまったとき、連続した次のサブルチン
に入ってく、なんてのが素人のコードでよくあるんだけど、
まさかそんなようなことはないだろうしなあ…
自転車と一緒に後ろ向きに降りようとしたらしい。
センサとしてみると、ずいぶんとでかい幅の人間だと思うかも。
で、閉じるルチンも呼ばれていないわけだ。
ある時間待ちで戻っちまうとか。

シンドラのコード、見たことある香具師いないの?俺はリストも見ていないくらいなんで。
632デフォルトの名無しさん:2006/06/07(水) 15:45:07
633デフォルトの名無しさん:2006/06/07(水) 18:09:36
>>632
さんくすこ。あっちへいくわ。
634デフォルトの名無しさん:2006/06/26(月) 08:12:25
>>633

リアルでさんくすこって、ノリでついいっちゃうと大変なことになるから注意な
635デフォルトの名無しさん:2006/09/07(木) 23:39:51
HALT
636デフォルトの名無しさん:2006/09/08(金) 05:20:24
>>621
デリカシーの無い人は嫌い><
637デフォルトの名無しさん:2006/09/08(金) 06:22:26
>>1
マシニスト?
カクイイ!
638_:2006/09/12(火) 17:39:05
>>631の場合は再現性ありだな。
>>627
>何かの拍子にスタック破壊して変なところコールしてるとか。
の場合は、スタック破壊したら、CPUじたいマトモな動作しない=エレベータとしての動作しない、ほうの確率が非常に高くて、
変なとこコールが起こる確率は僅かで、そればかりが起こる確率なんて微の微の微であるから、まずない。
639デフォルトの名無しさん:2006/12/03(日) 09:01:12
age
64022:2006/12/13(水) 11:37:26
九九を作成するプログラムってどうやって作るんですか?
cometUです><
641デフォルトの名無しさん:2006/12/14(木) 02:03:56
int i,j;
for(i=1;i<=9;i++){
 for(j=1;j<=9;j++){
  printf("%d*%d=%d\n",i.j.i*j);
 }
}
をcometに翻訳汁
642デフォルトの名無しさん:2006/12/14(木) 02:04:51
おっと
  printf("%d*%d=%d\n",i,j,i*j);
に訂正
643デフォルトの名無しさん:2006/12/15(金) 06:50:44
printfてcometにあるの?
644641:2006/12/15(金) 21:23:02
>>643
ttp://www.officedaytime.com/dcasl2/pguide/chapter1f.html
を見ると
OUT BUF,LEN ; 文字列を出力
のようだね。ただし、puts()レベル。

3つの"%d"の部分は、BUFの内容を書き換えるながら出力するしかないな。
645デフォルトの名無しさん:2007/03/12(月) 15:19:11
58 02

これがどういう計算かしらないが10進数で24になるんだが


何やったら24になるんだ?
646デフォルトの名無しさん:2007/03/12(月) 16:07:53
$0258 -> 001001011000b

下5bitだけ見れば24になるが。
647デフォルトの名無しさん:2007/03/13(火) 10:34:41
>>646
おお、ありがとうございます。
これでやっと進められます。
648デフォルトの名無しさん:2007/03/18(日) 18:55:25
R2D2のおはようをハ長調で書くとどうなりますか?
649デフォルトの名無しさん:2007/05/15(火) 07:48:09
957 名無しさん@120分待ち sage 2007/05/14(月) 23:44:59 ID:ujy9N/RN
え?違うの?
システムって機械じゃないの?
プログラムとかのこと?
ベーシックなら数学1でやったお♪
110行 GOTO HELL
120行 PRINT(OMAEMONAH)
650デフォルトの名無しさん:2007/05/31(木) 22:37:46
ねえ、ちょっと教えて下さい。今8086エミュレータを作っているんですが、
8086で未定義命令を実行するとどうなるかが判りません。80186以降は
例外になるようですが。。。
651デフォルトの名無しさん:2007/05/31(木) 22:51:45
未定義
652デフォルトの名無しさん:2007/05/31(木) 23:29:48
>651
特定の動作をするわけじゃないんですね。リセットとかハングするのかと思ってました。
653デフォルトの名無しさん:2007/06/01(金) 03:05:46
pop cs とか、実行出来たり。
654機械語は初心者(VBS好きです):2007/07/22(日) 23:18:21
何でも教えてくれるんだな?
機械語って何から学べばいいんだああ。
具体的な学び方がわからない機械語プログラミングの方法が
書いてあるHPでもあったら出してくれませんか。
655デフォルトの名無しさん:2007/07/23(月) 08:16:06
>>650-651
当たり前の流れに吹いた。
656デフォルトの名無しさん:2007/08/07(火) 22:45:11
日本で機械語使えるやつってどの程度いるんだろう
657デフォルトの名無しさん:2007/08/07(火) 23:21:26
沢山。
658デフォルトの名無しさん:2007/08/07(火) 23:33:14
東京ドーム3杯分
659デフォルトの名無しさん:2007/08/07(火) 23:47:32
でもソフト作ってるやつは全然いない現実
660デフォルトの名無しさん:2007/08/08(水) 00:54:10
>>656
りんご3個分の猫より小さい犬
661デフォルトの名無しさん:2007/08/08(水) 04:04:31
このスレでも答えられるやつや原理を理解してるやつはいても、
実際に使いこなせるやつは皆無な状況だからな。
662まったくの機械語初心者:2007/08/08(水) 20:19:16
誰かお願いします 機械語の学び方を教えてください
おねがいぽ・・・・。
663まったくの機械語初心者:2007/08/08(水) 20:21:24
ところで初心者の俺の質問はスレちがいなのか・・・。
664デフォルトの名無しさん:2007/08/08(水) 20:24:59
スレ主に質問しなければならない
もうスレ主はこのスレ見て無いかもな
665デフォルトの名無しさん:2007/08/08(水) 21:33:49
学び方つってもな。
ふつうの言語のプログラムは書けるのか?
機械語つっても目標は?どのCPUの?何でもいいの?
666デフォルトの名無しさん:2007/08/08(水) 22:35:05
>>665

11010111111000101010.
100101010wwwwww
10,1101010111101110100101010?
667デフォルトの名無しさん:2007/08/08(水) 22:36:42
機械語にCPUなんて関係すんの?
668デフォルトの名無しさん:2007/08/08(水) 23:18:34
それは大前提だろ
この世にインテルしか存在しないならともかく
669デフォルトの名無しさん:2007/08/08(水) 23:23:16
どのCPUで書こうが機械語レベルなら大差は無い。
670デフォルトの名無しさん:2007/08/10(金) 21:48:22
>>667
機械語はCPUとアセンブラプログラマー/コンパイラーのインターフェース。
CPUが変われば機械語も当然かわる。

CPUの違いによる機械語の主な違いは
・命令セット(当然か) 命令セット数はCISC>RISC 
・アドレッシング方法
・汎用レジスター/制御レジスタの種類と数
・I/Oポートの割り振り方法 メモリーマップドI/O,I/OマップドI/O
671デフォルトの名無しさん:2007/08/10(金) 22:06:44
それは大げさすぎ
672デフォルトの名無しさん:2007/08/10(金) 22:29:08
>>671
まあ、そうかもしれないな。

転送命令、条件比較命令、JUMP命令、四則演算命令
アセンブラのコードの95%はこれらだから
これらだけサクッと覚えればたいていのCPUのアセンブラはかける。
673デフォルトの名無しさん:2007/09/18(火) 13:34:36
ARMとか自称RISCだがx86より遥かにややこしいぞ
674デフォルトの名無しさん:2007/09/19(水) 20:07:54
そうか?
後からゴタゴタ追加した部分に関してはx86と同じ程度だと思うが・・・
675デフォルトの名無しさん:2007/10/13(土) 18:09:24
よくわからんが2進数や16進数で記述してそれのアセンブラとかあるわけ?
676デフォルトの名無しさん:2007/10/13(土) 19:35:56
‘/spreadsheet.のaddress.でしょうか?
此れ→ <8d>¡<93>ú<82>Í
677デフォルトの名無しさん:2007/10/17(水) 11:00:51
>ARM
PC相対アドレシングを手で書くのは苦痛すぎる
678デフォルトの名無しさん:2007/10/17(水) 13:25:07
armってアドレスを直接指定できない奴だっけ?
679デフォルトの名無しさん:2007/10/17(水) 17:04:29
IOマップドIOとメモリマップドIOって具体的にどう違うんですか?
680デフォルトの名無しさん:2007/10/17(水) 18:02:39
オンドゥル語はだめですか?
681デフォルトの名無しさん:2007/10/17(水) 18:08:30
>>679
I/O専用バスにI/Oを接続してるかメモリバスに接続してるかだけ。

組み込み用では
CPUによってはI/O命令を持たないものもあるし
メモリバスが外に出てないものもあるし、

キャッシュを持つような高機能・高速のCPUではメモリマップドI/Oだと逆にハードウエアコストが増えるので
ビデオRAMのような用途以外は まあ使われない。
682デフォルトの名無しさん:2007/10/23(火) 19:11:03
eaxとecxにどんな値が入ってもゼロフラグをONにするには以下をどのように書き換えるべきか。

xor eax,ecx


これわかりません;;優しい人教えていただけませんか?
683デフォルトの名無しさん:2007/10/23(火) 19:40:32
xor eax,eax にすればゼロフラグはオンになるけど、eaxも壊れてしまう。

難しい問題だね
684デフォルトの名無しさん:2007/10/24(水) 03:29:18
cmp eax,eax
685デフォルトの名無しさん:2008/01/31(木) 03:23:33
>>682
あるよ。
以上。
はい次の方。
686デフォルトの名無しさん:2008/02/16(土) 17:10:27
WindowsXP上でバイナリのTurboJetEDITを動作させたいんですけど、拡張子がbinで開けませんでした。
デーモンツールも試して見たんですが、何故かエラーばかりで結局無理でしたorz

スレチならすみませんが、何かよい方法は無いでしょうか。
687デフォルトの名無しさん:2008/02/16(土) 17:45:31
PCの電源を切り街へ出かけよう
688デフォルトの名無しさん:2008/02/21(木) 23:36:50
mov ax,4c00h
int 21h
689デフォルトの名無しさん:2008/03/06(木) 22:24:37
サイトからダウンロードしたMicrosoft Windows SDKのIMGファイルが1.32GBもあって大きすぎてCDに入らないんですけどどうやってインストールするんですか?
690デフォルトの名無しさん:2008/03/06(木) 23:07:03
>>689
        lヽ ノ l        l l l ヽ   ヽ
  )'ーーノ(  | |  | 、      / l| l ハヽ  |ー‐''"l
 / D  | | |/| ハ  / / ,/ /|ノ /l / l l l| l  D ヽ
 l   ・  i´ | ヽ、| |r|| | //--‐'"   `'メ、_lノ| /  ・  /
 |  V  l  トー-トヽ| |ノ ''"´`   rー-/// |  V |
 |  ・   |/     | l ||、 ''"""  j ""''/ | |ヽl  ・ |
 |  D   |       | l | ヽ,   ―   / | | l  D  |
 |   !!  |     / | | |   ` ー-‐ ' ´|| ,ノ| | |  !! |
ノー‐---、,|    / │l、l         |レ' ,ノノ ノハ、_ノヽ
 /        / ノ⌒ヾ、  ヽ    ノハ,      |
,/      ,イーf'´ /´  \ | ,/´ |ヽl      |
     /-ト、| ┼―- 、_ヽメr' , -=l''"ハ    |  l
   ,/   | ヽ  \  _,ノーf' ´  ノノ  ヽ   | |
、_    _ ‐''l  `ー‐―''" ⌒'ー--‐'´`ヽ、_   _,ノ ノ
   ̄ ̄   |           /       ̄
691デフォルトの名無しさん:2008/03/07(金) 04:46:00
AAの使われ方が適切すぎてフイタ
692デフォルトの名無しさん:2008/03/09(日) 13:02:17
Qちゃんがんばれ
693デフォルトの名無しさん:2008/08/12(火) 16:39:24
今までC/C++,Java,perl,python.ruby,CommonLisp,scheme
などの言語を学んできました。
機械語の勉強をしたいのですが、入門書など基礎に成るものが
有りましたらよろしくおねがいします。
694デフォルトの名無しさん:2008/08/13(水) 05:07:50
キャッスルエクセレント!
695デフォルトの名無しさん:2008/09/26(金) 14:41:21
初心者的な質問ですいません。
機械語は0と1の組合せですが、0と1の機械語が複雑な動作を実行する仕組み
を教えてくだい。
696デフォルトの名無しさん:2008/09/26(金) 15:13:46
求人広告に無限に長いテープを前後に動かすってアルバイトが載ってたんですが、
この仕事は一回あたり何時間ぐらいで終わるものなのですか?
697デフォルトの名無しさん:2008/09/26(金) 15:19:11
>>695
「複雑」ってそもそもどういう状態?

で,実は「複雑」じゃないってオチ
機械語と機械の動作が1対1対応している様な簡単なCPUなら
1と入力されたら手を挙げて
2と入力されたら手のひらを開いて
3と入力されたら手のひらを閉じて
4と入力されたら手を下げる
って機械なら,1,2,3,4という機械語はリンゴくらいならつかめる動作も可能
これが複雑なのか単純なのかわからないけど
698デフォルトの名無しさん:2008/09/26(金) 22:07:42
>>695
「0と1の機械語」というよりも機械語がコード化されているだけ。
CPUはそのコード化された機械語を解釈して、所定の動作を実行する。
機械語はCPUに対する動作の指示書のようなものです。
0と1が複雑な動作をするわけではないです。
699デフォルトの名無しさん:2008/09/28(日) 21:23:51
01は信号の電気的なON/OFFの話で
意味のあるまとまりは8bit以上から
700デフォルトの名無しさん:2008/09/28(日) 23:19:18
ニブル・・・
701デフォルトの名無しさん:2008/10/06(月) 17:58:15
>>695
たとえば68000のMOVE命令は16bitなんだが、これは↓な感じに分解できる。
MOVE命令を示す固定値(2bit)
転送サイズ(2bit)
ディスティネーションのレジスタ番号(3bit)
ディスティネーションのアドレッシングモード(3bit)
ソースのアドレッシングモード(3bit)
ソースのレジスタ番号(3bit)

なに?そういう話じゃない?信号がサーキット内をどう走るか知りたい?
そんなものは知らなくてもプログラムはガーっと動くんだよ!
702デフォルトの名無しさん:2008/10/15(水) 00:31:23
そこでプリフィックスだらけのx86の出番ですよ!
703デフォルトの名無しさん:2008/12/19(金) 22:21:13
704デフォルトの名無しさん:2008/12/20(土) 15:41:42
705デフォルトの名無しさん:2008/12/25(木) 02:00:27
706デフォルトの名無しさん:2008/12/25(木) 10:34:42
707デフォルトの名無しさん:2008/12/25(木) 21:34:22
708デフォルトの名無しさん:2008/12/26(金) 04:54:10
709デフォルトの名無しさん:2008/12/27(土) 21:56:19
710デフォルトの名無しさん:2008/12/28(日) 11:11:12
711デフォルトの名無しさん:2009/01/20(火) 20:47:47
1340780792994259709957402499820584612747
9365820592393377723561443721764030073546
9768018742981669034276900318581864860508
53753882811946569946433649006084096
712デフォルトの名無しさん:2009/03/13(金) 07:41:57
機械語(非アセンブリ)でスタックの中にある2つの32bitの値を64bitの浮動小数とみなしてFPUのスタックに送る事は可能?
713デフォルトの名無しさん:2009/03/13(金) 11:24:05
機械語はなんとかヒアリングはできるようになったが、
まだしゃべれるとこまではいかないな。特に発音が。
714デフォルトの名無しさん:2009/03/13(金) 13:37:27
>>712
そういう処理をアセンブリ言語で書いてアセンブラにかけ、出力されたオブジェクトファイルを参考に機械語をしゃべればOK。
715デフォルトの名無しさん:2009/03/14(土) 01:52:39
こやつめw
716デフォルトの名無しさん:2009/05/19(火) 10:30:19
715 デフォルトの名無しさん sage New! 2009/03/14(土) 01:52:39
こやつめw
717デフォルトの名無しさん:2009/08/10(月) 20:29:00
良質なアセンブリ言語入門書を教えてください
718デフォルトの名無しさん:2009/08/10(月) 21:23:41
>>717
CPUは何でしょう?
719デフォルトの名無しさん:2009/08/11(火) 07:40:14
cometです!
720デフォルトの名無しさん:2009/08/17(月) 02:23:35
何色でしょう?
721デフォルトの名無しさん:2009/09/05(土) 14:43:05
SSEをちょっといじってみたいんですが、
参考になってとっつきやすいサイトないし書籍はありますか?

『IA-32 SIMD リファレンスブック』はちょっと立ち読みしてみたけど
少々キツイです(内容的にも財布的にも)。
722デフォルトの名無しさん:2009/09/07(月) 12:15:48
>>721
iccの関連文書にそれなりの情報がある。つーか、SSEを齧る程度ならWebで検索すればヒットするだろ。
723デフォルトの名無しさん:2009/09/13(日) 14:39:21
>>721
アレは出てすぐぼったくり本認定されたから買っちゃダメ。
広く浅くでいいのならCQ出版のx86アセンブラ入門でもどうぞ。

サイトなら光成のところとか。まぁ自分でググった方が早い。
724デフォルトの名無しさん:2009/09/13(日) 14:40:54
あとから「先生」を入れようと思ったら忘れて呼び捨てに・・・
ごめんなさいorz
725デフォルトの名無しさん:2009/09/13(日) 15:05:48
>>721
インテルのサイトで技術資料をPDFで配布してるよ。
あとで必ず必要になるものばかりだからダウンロードしといたほうがいい。
ttp://www.intel.com/jp/download/#ia32
726デフォルトの名無しさん:2009/09/13(日) 20:00:06
沢村さん失踪しちゃったなー
727デフォルトの名無しさん:2009/10/19(月) 16:45:58
あの、インテルの64ビットcpuってアドレス空間はどのくらいなのでしょうか
一つのプログラムに割り当てられるアドレスも知りたいです。
それと、どのcpuから64ビットでしょうか
728デフォルトの名無しさん:2009/10/19(月) 16:49:17
>>727
「EM64T アドレス空間」でぐぐりなさい。
729デフォルトの名無しさん:2009/10/19(月) 19:39:30
ありがとうございます
失礼します
mov ah,4ch int21h
730デフォルトの名無しさん:2009/10/21(水) 11:39:53
この最後にあるソースですが
ttp://purebasic.coolverse.jp/bbs/viewtopic.php?f=5&t=60

問題;
いまXMM128ビットのレジスタのうち、64ビット分しか使っていません。
どうしたらフルに使えるようになるでしょうか? PXORで初期化した領域
から、幽霊がでてきて襲われました。この幽霊はいったいなに?
731デフォルトの名無しさん:2009/10/21(水) 19:48:53
動くかわからんけどこんな感じ?
pxor xmm6,xmm6
mov ecx, 16
_For1:
prefetchnta [edi]
cvtps2pd xmm2, [edi]
cvtps2pd xmm3, [edi+8]
cvtps2pd xmm4, [edi+16]
cvtps2pd xmm5, [edi+24]
prefetchnta [esi]
movddup xmm0, [esi]
movddup xmm1, [esi+8]
mulpd xmm2, xmm0
mulpd xmm3, xmm1
movddup xmm0, [esi+16]
movddup xmm1, [esi+24]
addpd xmm6, xmm2
addpd xmm6, xmm3
mulpd xmm4, xmm0
mulpd xmm5, xmm1
addpd xmm6, xmm4
addpd xmm6, xmm5
add esi,32
add edi,32
loop _For1
_Next1:
cvtpd2ps xmm6, xmm6
movlps [p.p_out_buffer_ptr], xmm6
732デフォルトの名無しさん:2009/10/31(土) 13:25:14
ありがとう、分からない部分が理解できました
733デフォルトの名無しさん:2009/11/08(日) 15:20:50
i586からi686の最初に移る時の目玉命令は何でしたか?
734デフォルトの名無しさん:2009/11/08(日) 15:55:36
eye
735デフォルトの名無しさん:2009/11/08(日) 16:42:40
SSEだっけ?
736デフォルトの名無しさん:2009/11/08(日) 20:11:26
大多数のプログラムにとっては
cmovの方が有意義だったと思うけどね。

SSE系は、使用可能な部分においては圧倒的な差が出るけど
使える分野が限られるから。

もちろん、cmovも
互換性が必要なプログラムでは使われてないんだけどさ。
737デフォルトの名無しさん:2009/11/30(月) 01:25:56
1語長整数型を2倍にするのは
・同じものを足す
・左に1ビットシフト
・2を掛ける

C言語ではどのコーディングが最も高速ですか?
738デフォルトの名無しさん:2009/11/30(月) 01:35:54
この命令は何をしているのですか?
68 6C E6 26 01
739デフォルトの名無しさん:2009/11/30(月) 10:00:19
>>737
C言語でその程度の内容なら、普通に書けばどう書いても最適化される。
読みやすいように書け。

>>738
プロセッサの種類がわからないとわからない。
740デフォルトの名無しさん:2009/12/06(日) 07:58:51
>>738 8085で、先頭が命令語の途中でない、とすれば、
68   MOV l,b
6C   MOV l,h
E626  ANI  26h
01   LXI  b,この後ろの2バイト  この一連のコードではスジが通らないな。
741デフォルトの名無しさん:2010/02/20(土) 11:07:54
>>738
x86の32bitコードなら
push $0x0126e66c
742デフォルトの名無しさん:2010/02/22(月) 22:44:17
学校の宿題です助けてください

「ニーモニックを知ってるCPUを挙げろ
ただし、ニーモニックが重複しないように」
743デフォルトの名無しさん:2010/02/23(火) 00:02:10
知ってるのを挙げろって課題なら、知らないなら何も挙げないのが正解
744デフォルトの名無しさん:2010/02/23(火) 01:21:19
挙げないと提出できないのですお願いします
教えてください
745デフォルトの名無しさん:2010/02/23(火) 01:53:26
挙げないと提出できないのなら、提出しないのが正解
746デフォルトの名無しさん:2010/02/23(火) 01:55:15
留年がかかっているのでお願いします
これから寝るので朝までにお願いします
できれば回答はこっちにしてください
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1237107132
747デフォルトの名無しさん:2010/02/23(火) 09:10:14
これって再々試験を受けるような馬鹿学生向けのサービス問題だろ?
本当にわからないってんなら、留年どころの話じゃあない。
いますぐ学校辞めた方がいいぞ。時間と金の無駄だ。

というか、これってどうせVIPPERが釣り遊びしてんだろ?
こんなもんそんなとこに質問丸投げするのと同じ手間で答えそのものを得られるだろ。
748デフォルトの名無しさん:2010/02/23(火) 10:44:42
・インテル系CPUで、Aレジスタ(アキュムレータ)の値を0にする最速の方法を書け
・MMX命令セットの開発理由を簡潔に述べよ。

分かる方おねがいします
749デフォルトの名無しさん:2010/02/23(火) 13:46:24
>>748 前者 XRA A
750デフォルトの名無しさん:2010/02/23(火) 18:51:45
前者、電力供給カットとどっちが早いかね?
751デフォルトの名無しさん:2010/02/24(水) 08:59:15
電源の電圧低下ってけっこうタイムラグあるよ
752デフォルトの名無しさん:2010/02/24(水) 16:14:53
だな。命令実行時間は数十ナノだが電源ブチ切っても落ちるまでミリ秒オーダーだね。
それに電源切ったらアキュムレータの値はゼロじゃなくて不定になるよね。
753デフォルトの名無しさん:2010/03/13(土) 02:29:58
>>749

>>748 前者 XRA A

凄いですね・・

ちなみに携帯のARMてどんな機械語で動いてるんでしょうか。
754デフォルトの名無しさん:2010/03/13(土) 05:39:38
最近の国産のケータイはほとんどSHだよな。iPodタッチとかは知らんけど。
SHの機械語はMOV系のニーモニックが使われてるが、アーキテクチャはLD/ST系だ。
C++やCが吐いた機械語で動いているので、人間がASMでプログラムする訳じゃない。
755デフォルトの名無しさん:2010/03/13(土) 06:22:01
え。ドコモもauもiphoneもARMだから俺はむしろ殆どARMだと思ってたが。
756デフォルトの名無しさん:2010/03/13(土) 07:10:58
SHだろう
757デフォルトの名無しさん:2010/03/13(土) 23:34:08
ARMだろ?
758デフォルトの名無しさん:2010/03/14(日) 12:24:45
どう考えてもARMだよな
759デフォルトの名無しさん:2010/03/14(日) 16:41:14
いや、主流はどうみてもSH。
760デフォルトの名無しさん:2010/03/14(日) 18:03:56
シャルム
761デフォルトの名無しさん:2010/03/15(月) 16:27:53
混ぜるなキケン
762デフォルトの名無しさん:2010/03/15(月) 19:22:49
ARMだと主張しているのは携帯アプリを作ってる勝ち組
SHだと主張しているのは組込やってる負け組

ということだろうか?
763デフォルトの名無しさん:2010/03/15(月) 21:16:24
SH-MobileとARM両方積んでるしな
764デフォルトの名無しさん:2010/03/15(月) 21:36:58
メインCPUがARMで、通信用サブCPUがSHとか、そういう話?
765デフォルトの名無しさん:2010/03/16(火) 01:08:57
携帯アプリが勝ち組とはどういった了見で?
766デフォルトの名無しさん:2010/04/26(月) 15:09:47
EM64TとかIntel64とかの命令語一覧を探していますが・・・
検索してたら、ここに来てしまいました。

どなたかご存じの方いらっしゃいますか?
767デフォルトの名無しさん:2010/04/26(月) 16:44:32
はい。
768デフォルトの名無しさん:2010/04/26(月) 16:57:11
済みません。766ですが自己解決w
英語版ですがみつけました。ありがとうございました。
769767:2010/04/26(月) 18:14:17
なんだ、もう少し楽しませてくれよw
770デフォルトの名無しさん:2010/04/28(水) 07:48:36
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    どういたしまして
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
771デフォルトの名無しさん:2010/04/30(金) 22:37:04
プロセッセアーキテクチャの設計している方いませんか?n
772デフォルトの名無しさん:2010/05/01(土) 00:32:48
電気板を漁れ
ろくなもんじゃないけどな
773デフォルトの名無しさん:2010/05/03(月) 11:40:08
http://haldoc.blogspot.com/2010/05/2ch.html

アセンブリ言語で書かれたソースコードにコメントを付けているのですが、
見やすいコメントの付け方についてご意見ください。
774デフォルトの名無しさん:2010/05/03(月) 16:04:37
訳しているのですが、の間違いだろ?
775デフォルトの名無しさん:2010/05/11(火) 16:58:34
機械語を使わなくちゃいけない場面って、あるんですか?
職場とかで
776デフォルトの名無しさん:2010/05/11(火) 17:18:14
うちのミニコンはIPLをマシン語で打ちこまないと起動しなかったな
777デフォルトの名無しさん:2010/05/11(火) 17:19:43
稼動中のシステムにほぼ無停止でパッチを当てる場合とか
778デフォルトの名無しさん:2010/05/12(水) 00:29:34
>>775
バイナリで走るプログラムを書くなら、高級言語で書いてあっても吐いたコアを
解析しなければならない場面というのは結構あるのではないかな? 

オプティマイズされてたら、機械語でレベルで追ってかないと十分な情報を引き出せない。
もちろんバグの再現は出来ず、コアは顧客の環境でのみ、数週間、数ヶ月に一回しか吐かれない
って状況。
779デフォルトの名無しさん:2010/05/12(水) 00:32:54
自分は機械語で解析するのはムリぽ。
ディスアセンブルしてニーモニックになってるならオケ。
780デフォルトの名無しさん:2010/05/12(水) 00:51:56
あれ、ここの「機械語」って本当に機械語だったのw すまん、スレ違いだった。
781デフォルトの名無しさん:2010/05/24(月) 00:47:00
機械語で3E, 32, 25ってどういう意味でしたっけ?
Z80でコンピュータの仕組みを学んだことがあるんだけど、わすれちゃった。
3Eが格納で32が代入25が足し算たったっだかな?
782デフォルトの名無しさん:2010/05/24(月) 02:26:43
石を限定してから聞かないとね。Z80/8085 なら、3E=Aregに次の1byteをロード。
3E 32 25 と並んでいるなら、3E32 で1命令で、Aregに32hが入る。
その後ろの25が、HLregをデクリメント。

並んでいるのじゃなくて32が命令の頭なら、32の後ろの16bitアドレス(25xx)に
Aregを格納する命令。
783デフォルトの名無しさん:2010/05/29(土) 21:47:15
おお。レスありがとう。
並びに特別な意味はないよ。
ただなんとなく覚えてる命令を列挙しただけ。
やばいほとんど忘れてる。
>>782の言ってることが理解できないorz
もしくは始めから理解なんてしてなかったのか・・・。

修正:
>足し算たったっだかな?
足し算だったかな?
784デフォルトの名無しさん:2010/05/30(日) 04:54:12
     ; 8085命令コード
00       NOP
01FFFF  LXI b,65535
02       STAX B
 ・・・
FE80     CPI 128
FF      RST 7
全ての命令コードについてこんなリストを作って、命令コードでソートしてある。
これを参照すれば任意のHEXの断片をASMコードに翻訳できるんだよ。
もちろん8085のコードだと判っているHEXでなければ意味ないけど
785デフォルトの名無しさん:2010/07/23(金) 23:11:32
>>784
x86 で欲しいのだが
786デフォルトの名無しさん:2010/07/24(土) 21:22:03
>>785
作ればいいじゃん。
787デフォルトの名無しさん:2010/07/25(日) 03:31:56
85の10倍ぐらい大変だとおもう。レジスタ多いし、アドレッシングモードも多いし。
788デフォルトの名無しさん:2010/07/25(日) 05:40:09
http://www.vector.co.jp/soft/win95/prog/se116861.html
一行逆アセンブラがついてる
789デフォルトの名無しさん:2010/07/25(日) 07:11:36
機械語はbitで分けてOPコード部分のレジスタ番号を意識すると覚えやすい

>石を限定してから聞かないとね。Z80/8085 なら、3E=Aregに次の1byteをロード。
>3E 32 25 と並んでいるなら、3E32 で1命令で、Aregに32hが入る。
>その後ろの25が、HLregをデクリメント。

H = 100
L = 101
n = 110
(HL) = 110
A = 111

24 = 00 100 100 = INC H 64 = 01 100 100 = LD H, H
25 = 00 100 101 = DEC H 65 = 01 100 101 = LD H, L
26 = 00 100 110 = LD H, n 66 = 01 100 110 = LD H, (HL)
2E = 00 101 110 = LD L, n 6E = 01 101 110 = LD L, (HL)
36 = 00 110 110 = LD (HL), n 76 = 01 110 110 = HALT
3E = 00 111 110 = LD A, n 7E = 01 111 110 = LD A, (HL)

http://njprog.com/z80_002.htm
790デフォルトの名無しさん:2010/07/25(日) 15:21:04
LDAとLXIとMOVて意味一緒ですか?
初歩的ですいません
791デフォルトの名無しさん:2010/07/25(日) 16:05:53
>>790
インストラクションセットごとに微妙に意味合いが違う場合があります。
792デフォルトの名無しさん:2010/07/25(日) 16:36:27
えっと・・・どういうことですか?
プログラムを書く場合において、MOV A,Bとあらわされている部分をLXI A,Bとあらわしても問題はないのですか?
793デフォルトの名無しさん:2010/07/25(日) 16:41:24
>>792
だから、お使いのインストラクションセットでの意味を把握してお使いくださいと。
同じCPUでも表記の違うインストラクションセットがある場合がありますから。
794デフォルトの名無しさん:2010/07/25(日) 19:24:48
ありがとうございました
795デフォルトの名無しさん:2010/07/25(日) 20:20:37
アセンブラと機械語は別じゃなかった?
796デフォルトの名無しさん:2010/07/25(日) 20:54:27
PLC 2010/07/25 15:53:37 削除依頼    ブックマークする 

[80B3h][80B2h]←[80B0h]+[80B1h]*2

この処理を行うプログラムの書き方がわかりません・・・。

教えてください><
797デフォルトの名無しさん:2010/07/26(月) 02:34:12
スレ汚すな
798デフォルトの名無しさん:2010/07/26(月) 09:42:45
>>795
アセンブラと機械語は基本的に1対1で対応している
799デフォルトの名無しさん:2010/07/26(月) 10:04:52
基本的に、なんだよなぁ。

同じ機械語に複数のアセンブリ言語の表現があることもあるし、
同じアセンブリ言語に対応する複数の機械語があることもあるし。
800デフォルトの名無しさん:2010/07/26(月) 10:07:39
pgr
801デフォルトの名無しさん:2010/07/27(火) 05:19:30
機械語はアセンブラの一部だよ。実行命令記述機能。他に、USING ORG 基数選択
印字機能のON/offなど、いろんな機能を総合したものがアセンブラ。
802デフォルトの名無しさん:2010/07/27(火) 08:54:50
ついでに変数とか式とか制御構文とか関数呼出しとか書けるようにしようぜ
803デフォルトの名無しさん:2010/07/27(火) 12:38:05
そのどれも書けるじゃん。CALLでJSRと同じコード出るし、doやforも書ける。
コンパイラと比べて弱いのは構造体の記述能力あたりかな。
コンパイラがいいのは、レジスタ使いの標準化。ASMで書いてもコンパイラと同じ
レジスタコンベンションを採用するようにしてるよ。
804デフォルトの名無しさん:2010/07/27(火) 13:18:26
機械語ってのは、2進数(人の目で見るときは16進数)の並びのことだぞ
805デフォルトの名無しさん:2010/07/27(火) 17:08:50
01001011 であってもこの人の目には16進として見えるらしい。すごいな
806デフォルトの名無しさん:2010/07/27(火) 21:59:06
屁理屈はいいから。

機械語を直接読んでる人で、2進数のまま読んでいる人なんて、まず見かけないでしょ。
普通は16進数になっているものを読んでるから。
例えば>>784のように、ね。

そもそも、アセンブラ(アセンブリ言語)と機械語の違いをわかってないという
とっても恥ずかしい点には関係ないし。
807デフォルトの名無しさん:2010/07/28(水) 02:15:05
そうだねあらゆるところが劣化してる。用語の使い方ひとつとってもおかしい。きっと厨房だろう。
808デフォルトの名無しさん:2010/07/28(水) 02:16:10
日本語でおk
809デフォルトの名無しさん:2010/07/28(水) 02:20:07
「2進数」も人の目で見たときの表現だから
意味が判らないね
810デフォルトの名無しさん:2010/07/28(水) 02:41:16
あ、そういやBLAME!って漫画で、キリィが建築者を2進数で制御する
場面があるけど、あの2進数も漫画の吹き出し上の表現であって、
実際はスイッチのON/OFFなんだよ。シリアル転送っぽいから、
その場合LSB、MSBどっちからとか色々あるんだけどね。
そういう事って>>804レベルの読者だと理解してないんだよな。
811デフォルトの名無しさん:2010/07/28(水) 02:46:08
>>809
機械語とは2進数のこと
機械語とは2進数だが、(人間がそれを直接読むときは)16進数として表示して読む

この程度の文章も理解できないの?
812デフォルトの名無しさん:2010/07/28(水) 02:49:44
>>809

二進数って、人の目で見ないと二進数じゃないんですか?
CPUが扱っているのは二進数じゃないんですか?
813デフォルトの名無しさん:2010/07/28(水) 02:56:17
CPUを何だと思ってるんだw
814デフォルトの名無しさん:2010/07/28(水) 02:56:54
>>811>>804に正確に従って直すと
機械語ってのは、2進数の並びのことだぞ
機械語ってのは、(人の目で見るときは)16進数の並びのことだぞ
815デフォルトの名無しさん:2010/07/28(水) 03:02:31
何も変わってるように見えないが
何がおかしいのか考えるなりぐぐるなりしなさい
お休み
816デフォルトの名無しさん:2010/07/28(水) 03:11:20
ぷっ
817デフォルトの名無しさん:2010/07/28(水) 03:16:16
まさかとは思うけど
「2進数も16進数も、同じ数字の表現方法を変えたものだけ」
なんていう、あまりにも当然過ぎて誰も気にもとめなかったことを
「自分は指摘しているから正しい」と言いたいわけじゃないよねぇ。
まさか。
818デフォルトの名無しさん:2010/07/28(水) 06:59:52
まさかとは思うけど、>>817 を書くまで、気にもとめてなかったわけじゃないよね。
プログラマは中身と表現をきちんと区別して意識するものだよ。

2進法、16進法、じゃなくて、2進数、16進数、と書いてるあたり、気にもとめてない
おバカさんだったようだけどwwwwwwwww
819デフォルトの名無しさん:2010/07/28(水) 07:27:57
820デフォルトの名無しさん:2010/07/28(水) 13:08:16
あー、なるほど。
「機械語とは2進法の並びである」と言いたかったのか。

さすが三国人の使う言葉は違うね。
821デフォルトの名無しさん:2010/07/28(水) 13:16:29
 発 者 同         . 。_   ____           争
 生 同 .じ     .    /´ |  (ゝ___)          い
 .し 士 .レ      .__/'r-┴<ゝi,,ノ   ro、      は、
 .な で .ベ      ∠ゝ (ゝ.//`   ./`|  }⌒j     
 .い し .ル        } ⌒ /`ヽ、_∠l,ノ ・ヽ´
 .! ! か の       /  ´..:.} >、、___,  .r、 ソ、`\
             /   ..:.:.}   /   |∨ ` ̄
            /   ..:.:./    |   丶
           / _、 ..:.:.:.{    .{.:.:.   \
          {   ..:Y  .ゝ、   {.:.:.:.:.    ヽ
          |、  ..:/ 丿 .:〉   >.- ⌒  .  ヽ
          / {. ..:./ ソ ..:./  .(    ..:.:.:`  ..:}
         ./..:.:}.:.:./ ヘ、 ..:./   .\ ..:.:r_,ノ、.:.:}
        ./..:.:/|.:/   {.:./     X.:.:}.}   X X
        /..:.:/ .}.:|    }:/       .Y丶ヽ  Y.:Y
  . __/.:/ { }  《.〈、     _,,__>.:》丶   Y.:\
  /.:.:.:.:.::/   !.:.:ゝ  ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ   \.: ̄>
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
822デフォルトの名無しさん:2010/07/28(水) 13:20:50
>>818
言っとくけど、本当にちゃんと「同じ数字だとわかった上で」書いてるよ。
だからこその、「人が見るときは16進数に直す」だから。

実際に16進ダンプからの読み取りとかすると
命令の一部のビットを2進に直して見ることも必要になるけど
相対ジャンプの計算とかの、2進のままじゃ面倒なこともやらなきゃいけないから。

口先だけで実際にやったことが無い人には
わざわざ16進と付け加えた意図がわからないだろうけどね。


まあ「日本語が理解できない」とひたすら叫んでいた人には関係ないけど。
823デフォルトの名無しさん:2010/07/28(水) 13:30:03
同じ数字?
そこは「同じ数」だろ?

「日本語が理解できない」というのが事実だと、また一つ明らかになったねw
824デフォルトの名無しさん:2010/07/28(水) 13:33:40
お前以外は
石の入出力は一般的に電圧の高低であって
2進数にしろ16進数にしろ人が見るための物に過ぎない
ということを話している
825デフォルトの名無しさん:2010/07/28(水) 13:36:37
>お前以外は

誰?
何人?
日本語読めない人を除いて
826デフォルトの名無しさん:2010/07/28(水) 13:41:49
>>823-824
えーと、「機械語とは何か」の話をしてるってこと、わかってたかな?
つまり、「機械語とは電圧の高低」と言いたいわけ?


ねえ、普段周りの人と会話とか、してる?
一人でただマンガ読んでるだけじゃないよね?
ちゃんと他人とコミュニケーション取れてる?
827デフォルトの名無しさん:2010/07/28(水) 13:48:06
人が見るときとか自分で言い出したのに素敵
828デフォルトの名無しさん:2010/07/28(水) 14:01:15
ねえ、普段周りの人と会話とか、してる?
一人でただマンガ読んでるだけじゃないよね?
ちゃんと他人とコミュニケーション取れてる?
829デフォルトの名無しさん:2010/07/28(水) 14:02:13
> ねえ、普段周りの人と会話とか、してる?
> 一人でただマンガ読んでるだけじゃないよね?
> ちゃんと他人とコミュニケーション取れてる?

むしろ、おまえはどうなんだ?
コンピュータとのコミュニケーションすらちゃんとできてなさそうだぞ。
830デフォルトの名無しさん:2010/07/28(水) 14:07:44
>>827
アセンブリ言語という、人間が扱うもの、と
機械語とを混同している人に対して説明するために
ニーモニックが並んだアセンブラのリスト、
これと対比できるものを挙げるのは当然のこと。

流れを読めず、状況を想像することもできず
ただひたすら上げ足取りだけをいつもいつも考えている人には
理解できないだろうけど。
831デフォルトの名無しさん:2010/07/28(水) 14:09:36
>>829
>お前以外は

誰?
何人?
日本語読めない人を除いて

ねえ、普段周りの人と会話とか、してる?
一人でただマンガ読んでるだけじゃないよね?
ちゃんと他人とコミュニケーション取れてる?
832デフォルトの名無しさん:2010/07/28(水) 14:10:40
「確率」が候補に出ないIMEを持っている人
833デフォルトの名無しさん:2010/07/28(水) 14:21:38
>>830
それでは2進と16進の扱いの差を説明できていないぞ
834デフォルトの名無しさん:2010/07/28(水) 19:16:36
>>821
ネタにマジレスしとくがレベル低い基地外に絡まれたらマジ厄介。
835デフォルトの名無しさん:2010/07/28(水) 22:18:45
どうでもいいけど
もし本気で二進数というのは数値の表現方法に過ぎないということを
もったいぶって、俺は知ってるから偉いんだぞ、的なことを書いていたのだとしたら
ちょっと恥ずかしすぎる。
836デフォルトの名無しさん:2010/07/29(木) 04:15:34
2828
837デフォルトの名無しさん:2010/07/29(木) 05:16:25
58 35 4F 21 50 25 40 41 50 5B 34 5C 50 5A 58 35
34 28 50 5E 29 37 43 43 29 37 7D 24 45 49 43 41
52 2D 53 54 41 4E 44 41 52 44 2D 41 4E 54 49 56
49 52 55 53 2D 54 45 53 54 2D 46 49 4C 45 21 24
48 2B 48 2A 29 3B
838デフォルトの名無しさん:2010/08/01(日) 05:23:57
ぱっと見てプログラムじゃなく文字列だな
839デフォルトの名無しさん:2010/08/01(日) 09:48:08
機械語だから仕方が無い。
840デフォルトの名無しさん:2010/08/01(日) 09:59:35
わざわざこの流れで文字列のせる訳ないだろ
841デフォルトの名無しさん:2010/08/01(日) 13:31:31
機械語だったら、このぐらいの中に非ASCIIのバイトが1個も無いのはあり得ない。
ちなみに文字列にしたらこんなのだった。
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*);
842デフォルトの名無しさん:2010/08/02(月) 00:52:52
eicar.com と名前をつけて保存
843デフォルトの名無しさん:2010/09/19(日) 21:56:22
質問で
844デフォルトの名無しさん:2010/09/19(日) 22:34:21
アセンブラのソースリストが最適化をしたら大きくなってしまいました。
これでも高速化の可能性はあるのでしょうか?
845デフォルトの名無しさん:2010/09/19(日) 22:45:19
たとえばループアンロールをすれば大きくなるよね?
846デフォルトの名無しさん:2010/09/19(日) 22:48:47
実行速度が10倍くらい遅くなります。
ベクトル演算自動生成で。コードが短くなるはずなんですけどもね。
847デフォルトの名無しさん:2010/09/19(日) 22:51:14
コード小さくなって処理時間長くなるならまあ仕方ねーか
848デフォルトの名無しさん:2010/09/19(日) 22:54:59
折角SSE2使って処理してるのに・・・
849デフォルトの名無しさん:2010/09/20(月) 03:28:25
あっちでSSE2のこと聞いてた人か。cの吐いたコードを手で最適化してるんじゃないの?
850デフォルトの名無しさん:2010/09/20(月) 04:02:42
アセンブラはよくわからないのでコンパイラに任せています。
それを手動で最適化するだけの技術はありません。
例えば配列のデータはバイトだけどintにしないとコンパイラは自動的に
SSE2のベクトル演算にしてくれません。最適化の道のりは遠いです。
851デフォルトの名無しさん:2010/09/21(火) 11:06:04
ダメだこりゃ
852デフォルトの名無しさん:2010/11/07(日) 12:10:47
ここでいいかな

いよいよ、64bitなPCを買うことになった
64bitの逆汗でいいのがあったら教えて

32bitで使ってたのは、IDA Pro Freeware 64bitは、Advancedのみだそうだ
割れを探せばあるにはあるが、逆汗の成果を自作物(アマチュア)に取り込むので、
製作過程に割れをかましたくはない…。
853デフォルトの名無しさん:2011/01/04(火) 00:05:31
>>852
VisualStudioのデバッガとかGDBとかメジャーなデバッガで出きるだろ。

もし逆コンパイルの事なら聞くな。元のコードに戻すのは不可能だから。
854デフォルトの名無しさん:2011/01/26(水) 23:36:09
返事してくれてた人がいたのか 自動巡回から漏れてた

いや、覗くだけなら、cdb/ntsdで十分だな、たしかに
ちょっと意味が違うが、cl /Fa も使うようになった

その後、radareってのを試した ちょっとキツかった

ちなみに、IDA Pro 製品版には、逆コンパイラが付くようになったそうだが、
それはまあ、俺には過ぎた代物だな プロと違って、量を読む必要はないし
スタックマシンタイプの仮想マシンのバイトコードは、逆コンパイラがあるとラクだが、
x86程度なら、レジスタ数もそこそこあるし、素で読んでもおおよその流れは掴める
855天使 ◆uL5esZLBSE :2011/07/05(火) 16:42:39.23
これ ; デリミタっていうんだけどさ、よく打ち忘れるよね
Rubyだとつけなくてよくなるんだけど

土方が何をいっても
856デフォルトの名無しさん:2011/07/05(火) 18:07:17.88
日本語お上手ですね(^^)
857天使 ◆uL5esZLBSE :2011/07/06(水) 19:01:12.51
>>855
--
<<<<<< これ ; デリミタっていうんだけどさ、よく打ち忘れるよね >>>>>>(きリッ!ッッ!!
---------
<<<<<<<<<<< Rubyだとつけなくてよくなるんだけど >>>>>>>>>>>(きリッッッ!!キリ!!キリキリッッキリッッッ!!ッッッッ!!!!
---------
<<<<<<<<<<<<< 土方が何をいっても >>>>>>>>>>>>>(キリッッッッ!キリッッキリッッ!きリッッッッ!!きリッッッ!ッッッ!!
放射性廃棄物のほうがマシ



天使#test_s

「天使の煽り」の提供でお送りしました
858デフォルトの名無しさん:2011/07/09(土) 01:24:07.53
やっぱりバイナリって楽しいよなあ
859デフォルトの名無しさん:2011/07/09(土) 07:47:49.87
うむ
860デフォルトの名無しさん:2011/07/16(土) 15:15:50.33
DOS窓で実行させるコマンドファイルで、remだと表示されてしまいますよね。
表示されないコメント文ってありますか?
861デフォルトの名無しさん:2011/07/16(土) 18:54:19.27
echo off
rem コメント

だっけ?

つかバッチファイルはスレチだろおい
862デフォルトの名無しさん:2011/07/17(日) 03:51:26.25
ありがと。やっぱそれしかないか。
863 ◆QZaw55cn4c :2011/07/17(日) 14:31:04.27
>>860
@echo off
864デフォルトの名無しさん:2011/07/17(日) 14:43:28.31
@rem でもいいけどな
865デフォルトの名無しさん:2011/07/17(日) 15:09:01.85
スレ違いだと言うのにレスつける馬鹿。
866デフォルトの名無しさん:2011/07/18(月) 13:30:53.33
:コメント
867デフォルトの名無しさん:2011/07/18(月) 13:59:25.67
ラベルじゃないか
868デフォルトの名無しさん:2011/07/20(水) 15:24:56.77
3E 01 CD 08 01 C9
869名無し募集中。。。:2011/07/20(水) 17:07:43.42
Ld a,01h
Call 0108h
Ret
870862:2011/07/21(木) 05:40:25.48
@rem がどんぴしゃでした。昔買ってあった、DOSプロンプトポケットリファレンス
という本に載っていました。 スレ立てるまでもない疑問・質問 というスレがありました。
こういうのはあっちが良かったですね。相手してくれた人たち、ありがとうございました。
>>867
コメント代わりに多用してたな

exx
872 :2011/09/24(土) 15:16:50.73
プログラムからEXEファイルを生成してみよう
http://codezine.jp/article/detail/419/

で説明されているプログラムで生成したEXEを実行すると、ノートンがウィルスと思って削除してしまいます。
どうしたらウィルスと思われなくできますか?
どこをみてウィルスと判断されたのでしょうか?
どのパラメータとかいじっていいかわかりません。
873872:2011/09/24(土) 15:37:48.84
生成したexeがtest.exeだとウィルスと判断されたけど、名前を変えたら大丈夫でした。
test.exeだとチェックが厳しいのでしょうが、それでもどこでウィルスと判断されたのでしょうか?
874デフォルトの名無しさん:2011/09/26(月) 14:55:19.33
>>872
ノートンのログに、なんというマルウェアと認識したか位記載されていないの?
875872:2011/09/26(月) 19:13:21.86
>>874
疑わしい動作を検出しました、としかありません。
でも、いろいろ元のプログラムをいじったら解決しました。
無駄に大きいexeのサイズをコンパクトにできるようにしたり、
最後にExitProcessを呼ぶようにしたりしました。
どれが決定的な役割を果たしたのかはわかりませんが。
ありがとうございました。
876デフォルトの名無しさん:2011/11/28(月) 23:01:41.15
逆汗で出てきたコードで、
0000 : 0F00 mov
この命令を、far callで実行したい場合、
9A 0000 0F00 call far ptr
という感じにアドレス指定(セグメント:アドレス)のバイナリ命令で良いのでしょうか?
877デフォルトの名無しさん:2011/11/28(月) 23:27:33.83
セグメントとオフセットが逆
878デフォルトの名無しさん:2011/11/29(火) 02:19:27.66
レスありがとうございます。気をつけます。
しかし、それだけのミスなら良いのですが。。。自分のセグメントの扱いの知識が怪しいので。

セグメントに関して、もう1つ質問させてもらいます。
各セグメントのサイズは、64kbまでって書いてあったんですが、
逆汗が出力したコードの、データセグメントと思われる大きさが、
[FFFFh]を越えてたのですが、これはどういうことですか?
879デフォルトの名無しさん:2011/11/29(火) 05:28:10.56
64KBを越えるデータの定義はできるよ。そういう領域をアクセスする時は、
セグメント番号とセグメント内オフセットを別々に計算して、セグメント番号は
セグメントレジスタに、オフセットは別のレジスタにセットしてアクセスするとか、
32bitの絶対アドレスで計算するとか、それなりの気遣いが必要になる。
よくやる間違いは、配列のn番目をオフセットだけで計算する間違い。
880デフォルトの名無しさん:2011/11/29(火) 19:11:32.76
大変勉強になりました。有難うございます。
881 【36.1m】 【東電 76.8 %】 :2011/11/29(火) 23:06:11.20 BE:1120910382-2BP(0)
F000:FFFFのマスクで正規化するのが普通かな?
セグメントレジスタ値の演算をいかに減らすかが腕の見せ所か
Cコンパイラにhugeモデルのアセンブラソース吐かせれば
勉強になるんじゃないかな
882デフォルトの名無しさん:2011/11/30(水) 07:26:51.03
すみません
電気通信大学の知り合いから、「機械語はプログラミング言語ではない」との指摘を受けたのですが、そうなのでしょうか?
883デフォルトの名無しさん:2011/11/30(水) 07:42:37.55
そいつにとってはそうなんだろ。
884デフォルトの名無しさん:2011/11/30(水) 10:50:11.29
ありがとうございます。一般的にはどうなのでしょうか?
885デフォルトの名無しさん:2011/11/30(水) 12:54:03.00
機械語といっても、アセンブラを暗に言ってるのかもしれないし、
バイト列のことを言ってるのかもしれないし、
(CPUが直接理解しない)中間言語のことを含めて言ってるのかもしれない

>>868 で意味は読めたが、0108が何だったか思い出せない
俺も耄碌したな ぴーろくだったかな
886デフォルトの名無しさん:2011/11/30(水) 15:08:44.88
CPUが実行するバイナリコードを狭義には機械語と言うことがあるから、
>>882の知り合いの言うようにプログラミング言語としてはアセンブラだろな。
アセンブラの吐く最終目的は実行コードである機械語だが、言語としては
他にデータ定義、領域定義、アセンブル方法に関する命令など色々な機能がある。
887デフォルトの名無しさん:2011/11/30(水) 15:22:52.25
その昔はバイナリで直接書いてたんじゃね?
それともノイマンアーキテクチャが出た当初から、
(机上であれ)アセンブリ言語は存在したのか?
888デフォルトの名無しさん:2011/11/30(水) 15:36:38.83
そうなってくると、機械語とは、まさにbinaryか?
hexで機械語とか語ってる奴はにわか。とかって思われるのかな、俺ら。
889デフォルトの名無しさん:2011/11/30(水) 16:25:52.09
hexはいいだろ、ビットパターンを記号に置き換えただけなんだから
890デフォルトの名無しさん:2011/11/30(水) 17:06:20.46
EDSAC では既に、ブートローダーが、
A20M とかいう感じで書かれたプログラムの紙テープを読み取って、
バイナリに変換してたぞ。

もっとも、この例では「A」の部分は紙テープ上のコードがそのままオペコードの
バイナリになってたのだが、その次のアドレス指示部は、普通の文字で
十進で書かれたものをバイナリに変換してる。
891デフォルトの名無しさん:2011/11/30(水) 22:44:43.58
なるほど、ハード的にアセンブルしちゃうようなものか
892デフォルトの名無しさん:2011/12/01(木) 05:43:47.63
いや、EDSACのイニシャルローダーというのだけど、数十ワードだけどソフトウェア。
起動すると、ROMみたいな感じのハードウェアから、RAM(水銀遅延管)に書き込まれるんだと思った。
893デフォルトの名無しさん:2011/12/01(木) 06:47:35.75
PDP-11の頃だって、トグルスイッチを使ってメモリの低位番地にHexで数ワード
「ブートローダーを読み込ませるコード」 を書き込み、「実行」 させると
紙テープからブートローダーが読み込まれ、さらに複雑なローダーが常駐する、
なんてことやってたぞ。昭和50年代だったかな
894デフォルトの名無しさん:2011/12/01(木) 11:58:24.32
こういう古いこと言う奴を見るにつけ、

…ほんと、いい経験してて羨ましいと思うぜ、まじで


俺は、Z80から入ったニワカ
895デフォルトの名無しさん:2011/12/02(金) 05:22:21.65
Z80はカワサキがKC80として現代でも互換機を提供しているから、学びやすいね。
俺にはいまだに8085の仕事が来るんだが、年に数枚出るこの基盤のために、
廃棄された基盤から外したチップを調達するのが年々大変になってる。
こんな石のマニュアルなんて紙のはとっくに絶滅してるし、生産中止になって長い
から、netにも僅かしか残ってない。火星まで行って仕事した由緒正しい石なのに。
896デフォルトの名無しさん:2011/12/02(金) 07:40:14.86
そういう、今更PDFをネットに置いても誰も損しないだろ、みたいなスキャンデータを
とっとと置けるように制度作ってほしいよな。
897デフォルトの名無しさん:2011/12/02(金) 12:42:19.00
今、ぽんとセラミックの8085もらったら、静かに卓上に飾っておきそう。
ついでにセラミックの780も連想してみたが、…なんか懐かしさが沸かない

今なら、PIC(エミュ入りドータボード)かFPGA(俺には書けない)で代替できたりしないかなって思う
898 ◆QZaw55cn4c :2011/12/02(金) 16:48:03.59
6809 屋さんはいないのですね。(泣)
899デフォルトの名無しさん:2011/12/02(金) 17:19:49.46
6809とか糞だろ


すまんやっかみ
FM7欲しかった
900デフォルトの名無しさん:2011/12/02(金) 17:48:04.61 BE:397602634-2BP(100)
UK intelligence agency GCHQ has launched a code-cracking competition ....
http://www.bbc.co.uk/news/technology-15968878

http://www.canyoucrackit.co.uk/

解説: http://www.itmedia.co.jp/news/articles/1112/02/news085.html


# 一応試しましたが、見た感じのとおりです。
901895:2011/12/03(土) 04:00:15.87
>>898 屋さんってほどじゃないけど、6809の仕事もしたよ。
プロジェクトの記録が残っている最古の仕事だ。26年前のF社の製品。
(これより前は、「職歴」 しか残ってない。)

ROMが8KBの物しか無く、2000h番地ずつ4個に焼くのが面倒だった。
数年後保守を部下に任せた頃にはROMが1個になってて感動した(w
902 ◆QZaw55cn4c :2011/12/03(土) 15:48:29.39
>>901
2764 ですかあ。27128 まではみたことがあるんですが。
903デフォルトの名無しさん:2011/12/03(土) 18:49:43.23
あー、その頃だと机のスタンド引っぺがして殺菌灯買ってきてROMを消去してたなぁ。
904895:2011/12/04(日) 05:08:57.36
今の8085の基盤には27256を刺すんだけど、これも引っこ抜いて消した奴ばかり
だから、脚がへなへなに曲がってるのばかり。27512刺しても使えるんじゃね?
とか話してる。
905デフォルトの名無しさん:2011/12/04(日) 11:52:53.29
換装しようとしたらまさかの3電源

# 「ない話」な。ふと思い出したので
906デフォルトの名無しさん:2011/12/12(月) 19:23:06.89
関連: 今日はローバートノイスの誕生日、ってことで > ぐぐる今日のロゴ
ttp://www.google.co.jp/logos/2011/noyce11-hp.jpg
907デフォルトの名無しさん:2012/01/27(金) 05:42:46.20
8085の DAA 命令の動作と使い方について質問です。
A=09 の所に INR A して、DAA すると 0A→10 になる?
A=90 の所に DCR A して、DAA すると 8F→89 になる?
DAA っていうのがどんな動作するのかよく判らないので、なんでそうなるのかも。
908デフォルトの名無しさん:2012/01/27(金) 05:55:25.70
BCDが判らないのか
それとも仕組みが判らないのか
しょぼいマイコンのそれもごく稀なケースでしか使い道ないし
今更別に覚える必要ないよ
909デフォルトの名無しさん:2012/01/27(金) 17:25:53.13
BCDは知ってます。BCD3バイトを繰り下がり引き算するコードを解析してるので
知りたいのです。 ハーフキャリーが立ってたら何かを足す、というメカではないか
と想像してるのですが、実地に知ってる人の話を聞くのが早いと思いまして。
910デフォルトの名無しさん:2012/01/27(金) 17:31:55.93
内部実装(ゲート)レベルの話が聞きたいのか

俺もちょっと聞きたい
911デフォルトの名無しさん:2012/01/27(金) 17:46:54.96
ここに詳しく説明されてるよ
http://www.alles.or.jp/~thisida/mycpu13.html
912デフォルトの名無しさん:2012/01/27(金) 17:50:22.23
あ、引き算の方は、数ページ先ね
913デフォルトの名無しさん:2012/01/27(金) 19:55:32.74
914909:2012/01/28(土) 13:47:27.73
リンク紹介ありがとうございます。DAAけっこう凝ったことをやってくれるんですね。
これはインストラクションセットの説明だけでは想像できませんでした。
BCD3バイト(LSB,2バイト目,MSB)からBCD1バイトを引く計算は、Creg=引く数で
   LDA  LSB
   ADD  C
   DAA
   STA  LSB
   LDA  2バイト目
   SBI   0
   DAA
   STA  2バイト目
   LDA  MSB
   SBI   0
   DAA
   STA  MSB
これでうまく行きそうに思います。どうでしょうか?
915デフォルトの名無しさん:2012/01/28(土) 14:01:19.49
   ADD  C   ×
   SUB  C   ○ でした(m_ _m)
916デフォルトの名無しさん:2012/01/29(日) 17:44:55.19
>>868
3E 01 C3 08 01 でおkと何度いえば
917デフォルトの名無しさん:2012/01/29(日) 18:52:18.27
改造する側としては無駄に長いほうがありがたい
918デフォルトの名無しさん:2012/02/20(月) 10:35:58.26
>>913
TTLが並んでるのを見ると懐かしさと同時に何故かワクワクしてくる
919デフォルトの名無しさん:2012/04/29(日) 08:02:28.49
win95以前のDOS(win3.1?)のプログラムを勉強してるんですが、
この時代のコンパイラ、アセンブラはどういったものがあるんでしょうか?
または、これらが走るプログラムをコンパイル、アセンブルするにはどうすればいいでしょうか?
920デフォルトの名無しさん:2012/04/29(日) 10:12:19.55
>>919
CでいいならLSI-C試食版が手頃かな。癖はあるけどアセンブラも付いているぞ。
921デフォルトの名無しさん:2012/04/29(日) 13:58:50.06
このスレとしては、標準デバッガをお忘れなくw

適当に拾ってこれるTD(無償配布版)って、16ビット対応だったっけ
922デフォルトの名無しさん:2012/05/02(水) 01:43:57.79
回答ありがとうございます。
923デフォルトの名無しさん:2012/05/04(金) 17:55:54.30
本当に少しでも興味が沸いたらでいいけどいまVIPにスクリプトが投下されてるんだが
数字しかないからもしかして機械語か?と思ったが自分にはわからないからもし機械語なら
意味を教えてほしい
http://hissi.org/
必死チェッカー1位のやつだ
924デフォルトの名無しさん:2012/05/05(土) 05:12:14.61
>>923
突っ込みどころ満載だな。
・今見たら既に二位だ。
・スクリプト投下ってなんだよ。こんなもん手打ちできる時間じゃないか。
・数字しかないから機械語っておめでてぇな。
・それが本当に機械語だとして、たった数個の数値だけで何が判るんだ。

まぁ、文字を数値化して書き込んでいるんだろうな。
925デフォルトの名無しさん:2012/10/10(水) 10:37:57.30
無限ループ ebfe
926デフォルトの名無しさん:2012/10/10(水) 17:04:00.55 BE:596403263-2BP(100)
そこはf3つけないと。
927デフォルトの名無しさん:2012/11/20(火) 11:57:23.53
手マン
928片山博文MZボット ◆0lBZNi.Q7evd :2012/11/21(水) 11:52:04.99
Windowsのシェルコードに詳しい人居ますか?
929デフォルトの名無しさん:2012/11/26(月) 20:30:08.04
930デフォルトの名無しさん:2012/12/16(日) 01:53:33.15
8085用のLSIC-80で、3行分溜めてからまとめるコードを以下のように書いていた。
  strcpy(dst,1行目);
  strcat(dst,2行目);
  strcat(dst,3行目);  strcat関数はstrlenとstrcpyを使うだろうからコール2つだろう
と思っていたら、コール5つも含んでいた。string.hを調べて、copyした末尾のnullキャラ
のアドレスを返す、stpcpy(dst,src) という関数を見つけた。それだと上のはこう書ける。
  strcpy(stpcpy(stpcpy(dst,1行目),2行目),3行目);    上のよりは速い。

ところが、stpcpy関数はcで書かれていて、strlenとstrcpyの他にコール2つを含む
コードになっていた。つまりstrcatの4/5にしか短縮できない。第一引数はHLだから
strcpyした末尾アドレスをそのまま返せばstrcpyと同程度の性能になるのに許せん!
931つづき:2012/12/16(日) 02:02:11.52
ということで、stpcpy関数を自作してみた。
stpcpy_::; char*stpcpy(char *s, const char *t) {
       LDAX   D
       INX     D
       MOV    M,A       ; (*s++ = *t++)
       INX     H
       ORA    A
       JNZ    $-5
       DCX    H         ; return(末尾アドレス)
       RET
strcpyより僅かに速い関数ができた。机上での論理チェックもしたし、実装が楽しみ。
strcatもASMで書き直したら純粋にstrlenとstrcpyだけの性能にできた。
8085はレジスタが少ないので、automaticクラス変数のメモリアクセスがネックだな。
932デフォルトの名無しさん:2012/12/16(日) 02:36:01.05
>>931
改良してやったぞ。

       INX     D
       INX     H
stpcpy_::; char*stpcpy(char *s, const char *t) {
       LDAX   D
       MOV    M,A       ; (*s++ = *t++)
       ORA    A
       JNZ    $-5
       RET
933デフォルトの名無しさん:2012/12/16(日) 03:07:18.33
       INX     D
       INX     H
stpcpy_::; char*stpcpy(char *s, const char *t) {
       LDAX   D
       MOV    M,A       ; (*s++ = *t++)
       ORA    A
       RZ
       INX     D
       INX     H
       LDAX   D
       MOV    M,A       ; (*s++ = *t++)
       ORA    A
       RZ
       INX     D
       INX     H
       LDAX   D
       MOV    M,A       ; (*s++ = *t++)
       ORA    A
       RZ
       INX     D
       INX     H
       LDAX   D
       MOV    M,A       ; (*s++ = *t++)
       ORA    A
       JNZ    $-23
       RET
934931:2012/12/16(日) 06:48:10.81
>>932 ありがとう。これぞASMってコードですね。今は_asm_使ってcのstpcpy関数
の中に書いてるんで、どうやったらそれにできるかな。やってみよう・・・
935931:2012/12/16(日) 07:15:46.55
static const char inxd[2]={0x13,0x23}; /* INX D, INX H */
char* stpcpy(char *d, const char *s) { /* stpcpy()関数の最適化 12.12.11*/
   *d = *s;                      /* do { } while(         */
   _asm_c("\n\tORA\tA\n\tJNZ\t$$-5\n"); /* *d++=(LDAX D;INX D;) ); */
}  関数の外に_asm_c( )が書けないので、これが最善でしたね。
定数を別の場所に集めるコンパイラでは使えなくなっちゃうけど(w
936デフォルトの名無しさん:2012/12/16(日) 11:25:50.22
LSI-Cってasm()の中はそのまま.asmに出力すんじゃなかった?

dummy() {
_asm_c("       INX     D\n");
_asm_c("       INX     H\n");
_asm_c("stpcpy_::; char*stpcpy(char *s, const char *t) {\n");
_asm_c("       LDAX   D\n");
_asm_c("       MOV    M,A       ; (*s++ = *t++)\n");
_asm_c("       ORA    A\n");
_asm_c("       JNZ    $-5\n");
_asm_c("       RET\n");
}
937931:2012/12/16(日) 19:05:52.30
あはは、それは思いつかなかった。それができるなら、INX Dの行に do1: とかラベル
振って、if ( (*d = *s)==0 ) goto do1; とかやれば殆どcにできそうですね。
明朝やってみますね。 ありがとう。
938931:2012/12/17(月) 04:44:25.32
937の方針は、DとHのpush/popが出るので×。936の方針は、stpcpy_のラベルが
illegal EXTRN stpcpy_ というエラーになりました。cのコールは外部コールなのに
内部にそのラベルがあるのはおかしいということですね。
ASMのラベルはcには見えなくて、アセンブルフェーズでエラーになるんですね。

結局、932のコードを実装するには935が最善みたいです。定数をstpcpyの中に
書くと INX D から実行が始まっちゃうし。932のsofをromlibのstpcpy_と置換する
のが正論なんでしょうけど、配布済みのromlibをいじるのも畏れおおいし(w
939デフォルトの名無しさん:2012/12/17(月) 05:15:29.70
>>938
>cのコールは外部コールなのに
>内部にそのラベルがあるのはおかしいということですね。
>ASMのラベルはcには見えなくて、アセンブルフェーズでエラーになるんですね。

ラベルにコロン二個付けててそんなわけないだろう
940931:2012/12/17(月) 06:00:05.25
わけないだろうって言っても、出ちゃうの。LSICのフェーズ分けのせいなんでしょうね。
#include <string.h>
#include <stdlib.h>
char _asm_c(char *);
charCUR[190],WCUR1[64],WCUR2[64];
void dummy(void) {
_asm_c("\n\tINX\tD\n");
_asm_c("\n\tINX\tH\n");
_asm_c("\nstpcpy_:: ;\n");
_asm_c("\n\tLDAX\tD\n");
_asm_c("\n\tMOV\tM,A\n");
_asm_c("\n\tORA\tA\n");
_asm_c("\n\tJNZ\t$$-5\n");
_asm_c("\n\tRET\n");
}
void setcur(char *buf) {
    if( WCUR1[0] & WCUR2[0] ) {
        strcpy(stpcpy(stpcpy(CUR,WCUR1),WCUR2),buf);
    }
    WCUR1[0]=WCUR2[0]=0;
} 
941931:2012/12/17(月) 06:16:33.17
これを cc80 -S test でASM吐かせるまではノーエラーだけど、吐かせたtest.ASMを
NR80 -P test.lst test.asm でアセンブルすると、 EXTRN  stpcpy_ の行について
illegal extrn strcpy_ が出ますよ。 63行目
EXTRNstpcpy_
*** illegal extrn stpcpy_

lcc80の実行フェーズは、CPP=cソース展開、CF、CG80=cからASMを展開、
NR80=アセンブル という構成になってます。ASMのラベルのstpcpy_::は、
2番目のフェーズでは存在を認められないので、こういうことが起こります。
942デフォルトの名無しさん:2012/12/17(月) 12:12:50.78
>>941
アセンブルでエラーになるなら対策すりゃいいだけの話じゃね?

NR80ってアセンブラの仕様が分からんからなんでエラーになってるのか判らんが
>>935でエラーにならないなら>>935のコードで出力される相当の内容を
_asm_c()で書けばいいだけのことだろう。
943931:2012/12/18(火) 04:44:08.12
なんか話がループしてる(w >935のコードで出力される相当の内容 と思って
書かれたのが936でしょ。 対策すりゃいいだけ、ってのに対応していろいろいじった
経過が938で最後はやっぱり935。LSIC80では936は実装できませんでした、という話。

>アセンブラの仕様が分からんからなんでエラーになってるのか判らんが
アセンブラの仕様は分からなくてもエラーメッセージから推測できましたけど。
cはstpcpy_を外部ラベルとしてコールする機械語を吐くが、同じソースの中に
stpcpy_というラベルがある。それじゃ外部であるという宣言 (EXTRN stpcpy_) が
間違いなんじゃね? という意味のエラーですね。

936のstpcpy_::のラベルの場所をコールするcの書式とかあります?
asmなら call dummy+2 とか書けるけど、cではそうは書けないよ。
cからの呼びだし書式は<string.h>準拠で書ける機械語コード、という条件で
俺がたどりついたのが935だった。
944デフォルトの名無しさん:2012/12/18(火) 06:14:47.51
>>943
>936のstpcpy_::のラベルの場所をコールするcの書式とかあります?
>asmなら call dummy+2 とか書けるけど、cではそうは書けないよ。

typedef char*(*pstpcpy)(char *s, const char *t);
((pstpcpy)((char*)dummy + 2))(CUR, WCUR1);
945デフォルトの名無しさん:2012/12/18(火) 06:24:17.24
無駄にtypedefとかしない方がいいかな?

((char*(*)(char*, const char *))((char*)dummy + 2))(CUR, WCUR1);

>>944もだが恐らくは CALL dummy+2 よりは冗長なコードを吐くとは思うのでこういう呼び出し方を
することが無意味なのは言うまでもない。
946デフォルトの名無しさん:2012/12/18(火) 07:51:43.46
BCを関数内で壊していいなら。

char*stpcpy(char *s, const char *t) {
_asm_c("       DEFB    01H\n");
_asm_c("       INX     D\n");
_asm_c("       INX     H\n");
_asm_c("       LDAX   D\n");
_asm_c("       MOV    M,A       ; (*s++ = *t++)\n");
_asm_c("       ORA    A\n");
_asm_c("       JNZ    $-5\n");
_asm_c("       RET\n");
}

とかなんか変な苦労するぐらいならインラインアセンブラなんか使わずに素直にアセンブリソースに分割すべき。
947931:2012/12/18(火) 14:38:23.39
>>944 のtypedefは素直にdummy+2をコールするコードだけが出ました。
01HはLXI Bなのね。よく思いつくなあ・・・
BCは壊してもいいのですが、たしかに素直じゃないですね。
こんな小さなコードでもいろんな見解が聞けてよかったです。ありがとうございました。
948デフォルトの名無しさん:2012/12/18(火) 15:33:12.24
>>947
条件付ジャンプでオペランド部分に飛び込むのは常套手段。
--
; aが0なら0xffにそうでないなら0にする
and a
jp z $+2
xor a
db 0dah ; jp c
ld a, 0ffh
--
とか。
949デフォルトの名無しさん:2012/12/18(火) 15:46:24.93
>; aが0なら0xffにそうでないなら0にする

例がマヌケ杉

cpi 1
sbb a
950931:2012/12/18(火) 16:56:00.71
私もASMバリバリの時代はそんなテクを使いこなしていたのかな。忘れてるけど。
8085はけっこう深入りしたけど、ゼッパチはふつうのユーザー止まりでした。

7801で、現場に行ってから32bit/16bit:DEHL/BCを書いたことがあります。
それが初めてのソフト除算で、よくパツイチで通ったなあ・・・
ご先祖様は助けてくれない (そんなもん無かったから) 前世の行い?
あんな奇跡はそのとき一回きりでした。その後宝くじは買いません。
951デフォルトの名無しさん:2012/12/19(水) 05:32:16.03
>>930
そもそも LSI-C80 ならバカなソース書かなきゃそんな酷いコード吐かないんでない?

char*stpcpy(char *s, const char *t)
{
    while (*s = *t) {
        s++;
        t++;
    }
    return s;
}

手許の LSI-C86 試食版での結果は↓だったよ。

stpcpy_::
    PUSH    SI
    MOV    SI,AX
    JMP    _1
_2:
    INC    SI
    INC    BX
_1:
    MOV    AL,[BX].B
    MOV    [SI].B,AL
    TEST    AL,AL
    JNE    _2
    MOV    AX,SI
    POP    SI
    RET
952デフォルトの名無しさん:2012/12/19(水) 05:45:13.54
訂正

LSI-C80 → LSI C-80
LSI-C86 → LSI C-86
953デフォルトの名無しさん:2012/12/19(水) 08:35:02.17
先ず第一に、80と86ではコードジェネレータが違うこと。
→80版は86版ほどタイトなコードは生成しない。
第二に、初回のジャンプを省略しようかと言うレベルの話をしていること。
→8086のコードは参考にしかならない。
全く的外れと言わざるをえない。
954デフォルトの名無しさん:2012/12/19(水) 12:27:27.27
>>953
>先ず第一に、80と86ではコードジェネレータが違うこと。
>→80版は86版ほどタイトなコードは生成しない。

じゃあどんなコード吐くの? 参考に晒してくれたっていい罠。

>第二に、初回のジャンプを省略しようかと言うレベルの話をしていること。

少なくとも>>930-931はそんな話してない訳だが。

>→8086のコードは参考にしかならない。

参考になるならいいじゃん。アホか?
955デフォルトの名無しさん:2012/12/19(水) 12:52:55.10
>>953
>第二に、初回のジャンプを省略しようかと言うレベルの話をしていること。

そこまで気にすんなら関数呼び出しのコストも削れよw
956デフォルトの名無しさん:2012/12/19(水) 13:14:11.67
>>954 名前:デフォルトの名無しさん[sage] 投稿日:2012/12/19(水) 12:27:27.27
そう真っ赤になるなって。自分の投稿時間でも眺めて和めよ。
957デフォルトの名無しさん:2012/12/19(水) 13:40:48.46
和んだ
958デフォルトの名無しさん:2012/12/19(水) 13:47:51.40
>>930
>8085用のLSIC-80で、3行分溜めてからまとめるコードを以下のように書いていた。
>  strcpy(dst,1行目);
>  strcat(dst,2行目);
>  strcat(dst,3行目);

>strcpyした末尾アドレスをそのまま返せばstrcpyと同程度の性能になるのに許せん!

実際その部分が全体のパフォーマンスにどの程度影響及ぼしてるわけ?
多少効率が悪かろうとも、間に合ってるなら以降の作業は徒労ということになるが。
959931:2012/12/19(水) 16:54:57.38
sprintfで実数変換使うと間に合わない、整数変換でも幾つもやると同様、ぐらい。
4800BPSを4CH同時に入出力してて、あるCHがこの例です。1CHだけならイイが、
4CHみんな整数変換とかstrcatを使うと危ないので軽くできればしておきたいです。

間に合わない=受信ringで周回遅れが発生して行の再構成が失敗します。
clockは3.072MHzで、これを8253で分周して8251用と10mS割込用のclock作ってます。
まあ、暇だから最適化で遊んでるってのもありますけど。
960デフォルトの名無しさん:2012/12/19(水) 17:19:47.09
sprintf() 既に使ってるなら、

sprintf(dst, "%s%s%s", 1行目, 2行目, 3行目);

とか書けば保守性は向上するな。
sprintf()の実装や連結する文字列のバイト数によっては負荷ともなりうるが。
961デフォルトの名無しさん:2012/12/19(水) 17:23:55.25
>>959
>sprintfで実数変換使うと間に合わない、整数変換でも幾つもやると同様、ぐらい。

重い箇所分かってんなら最適化で一番効果が期待できるのはそこだが?
962デフォルトの名無しさん:2012/12/19(水) 17:38:54.44
>>930
>8085用のLSIC-80で、3行分溜めてからまとめるコードを以下のように書いていた。
>  strcpy(dst,1行目);
>  strcat(dst,2行目);
>  strcat(dst,3行目);

最初からひとつのバッファに3行分溜めればまとめる必要もねんじゃね?
963デフォルトの名無しさん:2012/12/19(水) 17:50:04.64
Cで速度最優先なら、str系ではなく、自分で長さを保持して全てmemcpy。
それでもダメってところで、ようやくアセンブラ。
964デフォルトの名無しさん:2012/12/19(水) 18:01:44.75
>sprintfで実数変換使うと間に合わない、

LSI C-80って基本的な仕様が古いみたいだし、実数はfloatでも一旦doubleに昇格してから
演算するとかですげえ遅いんじゃないの?C89以前では普通だったけど。

実数が本当に必要かも検討するべき。
965デフォルトの名無しさん:2012/12/19(水) 18:14:14.31
LSI Cは実数遅いよ。余りチューンしてないってpnoriさんが言ってた。
まして80じゃぁしょうがない。多分自力で固定小数点数ライブラリを作るのが一番。
966デフォルトの名無しさん:2012/12/19(水) 18:18:40.15
>>963
>Cで速度最優先なら、str系ではなく、自分で長さを保持して全てmemcpy。

8085での実装なら、memcpy()よりstrcpy()の方が速い。
967966:2012/12/19(水) 19:45:54.67
訂正

8085での実装なら、memcpy()よりstrcpy()の方が速い。

8085での実装で、場合分けによる処理の最適化をしない前提なら、memcpy()よりstrcpy()の方が速い。

LSI C-80での実装がどうなってるかは知らん。
968デフォルトの名無しさん:2012/12/19(水) 20:18:33.62
>>959
暇ならLSI C-80に>>951のソース喰わしたらどういうコード吐くかやってみて
969931:2012/12/20(木) 06:43:03.90
%16    ; ここがwhile の行。
__2:
    LDAX    D
    MOV    M,A
    ORA    A
    JZ    __3
%17
    INX    H
%18
    INX    D
%19
    JMP    __2
__3:
%20
    RET
JMPが2つあるのでサイズ最小ではないけど、素直なコードですね。
_asm_が混じるcコードより可読性はグー!
memcpyよりstrcpyのほうが速いのは知って使ってます。
970デフォルトの名無しさん:2012/12/20(木) 13:33:15.10
>>969
成る程、86版とは違うコードになるんだなあ。
1ループ中にジャンプ命令が2回あるからコピーする文字列が長いと86版に比べて効率は悪いが、
逆に、コピーする文字列が""で、結果1バイトしかコピーしない場合には効率は良いとも言えるな。

    JZ    __3
(略)
__3:
    RET

のところは

    RZ

になってればループを抜けなかった際のサイクル数が少なかったのに惜しい。
971931:2012/12/20(木) 13:55:00.11
R<条件> と、C<条件> はLSIC-80に実装されてないんですよね。なので、
  if( r_ptr ^ w_ptr )
    func( );   は、lda r_ptr、lxi H,w_ptr、xra M、JZ 飛び越し、call func
が出ます。 これを lhld r_ptr、mov A,H、xra L、cnz func と、最適化しました。
(r_ptrとw_ptrは並んでいるので) メインループ中にこれが4種類あるので、
メモリアクセス削減になってます。
972デフォルトの名無しさん:2012/12/20(木) 14:52:08.26
2ちゃんもひと少なくなったな
973931:2012/12/20(木) 17:14:18.48
8085用 romlibのcコード読んでたら、strncat( ) は目的stringの末尾にnullをsetする
だけなのに、strncpy( ) は、目的stringがソースより長いとき 「残りを全て0で埋める」
ように書かれていました。 これは実害は無いにしろ、「余計なこと」 ですね。
974931:2012/12/22(土) 05:50:34.74
>>970 ループ中に毎回NOPのジャンプが実行されるのが、素直なコードの悔しい所ですね
char*stpcpy2(char *s, const char *t) {
   goto do2;
do1: s++; t++;
do2: if (*s = *t) goto do1;
   return(s);
} これだと頭のジャンプ1回が静的動的に無駄なだけで、あとはASMのコードと同性能
_asm_で書くより可読性は良いから、cでの実装にはこれがベストかと。
975デフォルトの名無しさん:2012/12/22(土) 09:31:32.92
>>973
それがstrncpy()の奇妙な仕様。なので、余計ではない。
976931:2012/12/22(土) 12:37:11.14
え〜?? ほんとだ。わざわざそのように断ってある。なんでこんなことに
なってるんだろう? 末尾nullだけでは困る事情がかつてあったのだろうか。
977931:2012/12/22(土) 13:08:23.06
>>974 をfor( ; (*s=*t); s++,t++ ) ; と書くと、素直版と同じコードになっちゃうんですね。
forで、頭JMPで実行条件判定に飛び込むパターンも見たことあるのですが、何が
決め手になるのかよく判らないなあ。
978931:2012/12/28(金) 04:30:02.13
strcat( d, s ) の中身:strcpy(d+strlen(d),s); return( d ); の展開が↓
  push  H
  push  D
  pop   H
  push  H
  push  H
  call   LAUTO4
  call   strlen
  mov   C,L
  mov   B,H
  call   LAUTO4
  DAD  B
  POP  D
  call   strcpy
  call   LAUTO2
  pop   B
  pop   B
  ret  コールが5回もあるの(*o*) あんまりだ!
979931:2012/12/28(金) 04:36:00.53
ASMにしてみたのがこれ: 合ってるよね?
strcat_:  ; char  *strcat(char *s, const char *t) {
  push   H        ; 第1引数を保存
  mov   A,M
  inx    H
  ora    A
  jnz    $-3        ; 末尾を探す
  dcx    H         ; 末尾アドレスに戻す
  call    strcpy_      ; その位置にcopy
  pop    H         ; 第1引数を復元(HL=返却値)
  ret
980デフォルトの名無しさん:2012/12/28(金) 08:37:20.92
>>979
call して pop hl する代わりに、pop af して jmp してはどうだろう。
981デフォルトの名無しさん:2012/12/28(金) 08:38:15.51
あ、なんだ、保存する必要さえなかったか。
982デフォルトの名無しさん:2012/12/28(金) 09:39:18.01
>>979
速度優先なら、PUSH H〜POP HはBC に退避〜復帰させた方が早い。
但しstrcpy()の中で破壊されないこと前提になるから保守性は低下する。
strcpy()も展開した方がいいな、速度優先なら。
983デフォルトの名無しさん:2012/12/28(金) 09:47:24.05
失業したおっさんらに質問です
OS創りたいのですが
何から始めれば良いでしょう
984デフォルトの名無しさん:2012/12/28(金) 09:48:59.43
>>983
PCを拾ってくる
985デフォルトの名無しさん:2012/12/28(金) 09:50:44.89
>>983
バイトでもいいから仕事に就く
986デフォルトの名無しさん:2012/12/28(金) 09:52:47.51
>>983
まずOSを創ります → 終了
987デフォルトの名無しさん:2012/12/28(金) 10:35:15.37
マジレスするが、まずは失業しておかないと、創る時間とれないよ
988デフォルトの名無しさん:2012/12/28(金) 11:29:19.56
失業せずにOSを作れないようなら、シングルタスクのOSを作る頭脳しかない。
989デフォルトの名無しさん:2012/12/28(金) 13:27:11.77
今日の大喜利会場はここですか?
990979:2012/12/29(土) 04:06:22.83
>>980 動作変わっちゃいませんか?返却値は目的stringの頭ですけど、
strcpyする時は目的stringの末尾ですよね。

>>982 速度だけ優先ならそうですね。libであることを考慮すると速度・サイズ両面で
納得のゆく落とし所、ということで979にしました。 同サイズで速度ちょっと改善版:
strcat_:  ; char  *strcat(char *s, const char *t) {
  push   H        ; 第1引数を保存
  xra   A
  cmp   M
  inx    H
  jnz    $-2        ; 末尾を探す
  dcx    H         ; 末尾アドレスに戻す
  call    strcpy_      ; その位置にcopy
  pop    H         ; 第1引数を復元(HL=返却値)
  ret
徹底するなら速度版とサイズ版2種のlibを用意するのがイイですね。
991979:2012/12/29(土) 04:13:24.07
発端は、「libは、コンパイラ開発メーカーの(自分より頭のイイ)人が書くのだから、
速度・サイズ両面で充分練られた物だろう」 と思いこんでいたのが違った、という話。
乗除算のルーチンなんかはきっちりコンパクトでしたけどね。
stringがこんだけルーズだと、printf系なんか読んだら憤死するかも(^o^)
992デフォルトの名無しさん:2012/12/29(土) 05:53:01.81
うめますね(^o^)
993デフォルトの名無しさん:2012/12/29(土) 05:53:36.75
うめ
994デフォルトの名無しさん:2012/12/29(土) 08:01:12.51
うめ
995デフォルトの名無しさん:2012/12/29(土) 08:04:54.76
10年も続いたのね、このスレ。まだ8085の話したいから立てました(w

http://toro.2ch.net/test/read.cgi/tech/1356735624/
996デフォルトの名無しさん:2012/12/29(土) 08:38:16.29
うめ
997デフォルトの名無しさん:2012/12/29(土) 09:16:36.24
JR $-2
998デフォルトの名無しさん:2012/12/29(土) 09:17:11.08
うめ
999デフォルトの名無しさん:2012/12/29(土) 09:21:04.33
うめ
1000デフォルトの名無しさん:2012/12/29(土) 09:21:32.93
76
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。