あっちにはキモいのが入り込んでるから廃棄でいいだろ
糞サイト紹介すんなよ
Digital Travesiaは、ゲーム解析の勉強にかなり役に立った。
「いまどきのアセンブラプログラミング」は凄すぎる。
本屋で立ち読みしていて中身のデタラメさに吹いた。
ゲームの解析には全く役に立たない。
唯一まともなことを書いているなと思ったコラムは、
Digital Travesiaのコンテンツの丸写しだった。
インテルのアーキテクチュアマニュアルも丸写しだし、
この本のライターってパクリが得意なようですね。
10 :
942:04/11/26 17:25:54
どうも、プロテクトモードへの移行プログラムを書いているものです。
アレからbochsのデバッガを使って一つ1つ命令を解析していったりしているのですが。どうしても3rd expectionから
抜け出すことが出来ません…。
奇妙なのはbochsのデバッガで一つ一つステップ実行してゆくと例外は発生しないのですが、一気に実行すると
例外が発生してしまいます。ソースコードは以下のようになっています。どなたか助言を....
11 :
942:04/11/26 17:27:38
jmp100h:start
gdtr:
limitdwsegdesc_end - segdesc_0 - 1
basedd100h * 16 + segdesc_0
segdesc_0:
dw0;limitL
dw0;baseL
db0;baseM
db0;typeL
db0;limitH_typeH
db0;baseH
;code segment
segdesc_8:
dw0xffff;limitL
dw0x0;baseL
db0x0;baseM
db0x9A;typeL
db0xCF;limitH_typeH
db0;baseH
;data segment
segdesc_10:
dw0xffff;limitL
dw0x0;baseL
db0x0;baseM
db0x92;typeL
db0xCF;limitH_typeH
db0;baseH
12 :
942:04/11/26 17:28:54
start:
cli
movax, cs;csレジスタの値は 100hの値
movds, ax;dsレジスタの値もちゃんと設定しておく
movss, ax
sti
RealToProtect:
lgdt[gdtr];gdtrロード
cli
;コントロールレジスタ0の最下位ビットを立てることにより、プロテクトモードへ
moveax, cr0
oreax, 1
movcr0, eax
sti
jmpfresh;パイプライン命令無効化
fresh:
;パイプライン命令無効化完了
db0xea;jmp
dwprotect_start + 100h * 16
dw0x08
13 :
942:04/11/26 17:29:21
[BITS 32]
protect_start:
;ここから32ビットへ移行だ
movax, 08h
movds, ax
movax, 18h
movss, ax
main_loop:
jmpmain_loop
14 :
942:04/11/26 17:33:57
bochsのデバッガで一つ一つ命令を追ってゆくと。mov cr0,eaxの次のstiからアドレスの表示が
(0) [0x0000108b] 0100:0000008b (test. ctxt): sti ; fb
という風になっており、プロテクトモードへ移行できているような気がするのですが…。
そしてsコマンドでステップ実行してゆくと無事に
main_loop:
jmp main_loop
のループに入ることを確認しました。
sコマンドを何回か実行しても例外が発生するような気配はありません。
ですがcコマンドをつかって一気に実行するとたちまち3rd exceptionが発生してしまいます。
どなたかご指導のほうをよろしくお願いいたします
15 :
942:04/11/26 17:36:38
スレ汚し申し訳ありません、あと例外発生時のcsセグメントの値は
c000となっております。これはBIOS領域か何かでしょうか・・・?
>>mov ax, 08h
>>mov ds, ax
よく見てないけどいいだっけこれ。
なぜcr0にロードした直後にjmp命令を入れないの?
あとスタックセットアップ、IDTも設定してないのにstiしてない?
gdtのコードのベースもセットアップしてないな。100h決めうちなのか?
全部やり直し
bochsなんつーヌル環境だから、手抜き知識しかない模様
21 :
942:04/11/26 17:53:03
ごめんなさい
cli
mov ax, cs;csレジスタの値は CODE_TEMP_SEGの値
mov ds, ax;dsレジスタの値もちゃんと設定しておこう
mov ss, ax
sti
mov ss,axが抜けていました…
22 :
942:04/11/26 17:54:28
>>19 このgdtはMonaの初期のコードからパクってきました。
これではだめなんですか?
いいとかわるいとかの問題じゃねーんだけど
環境ぐらい書けよ
25 :
942:04/11/26 18:09:37
>>23 メモリホールにかぶったらどうするんだ?とか細かいところが分からないので。
とりあえず走らせて見ていじってみようというわけです。
こういうメモリモデルにしたい、という具体的な要望があるわけでもないんです…
とりあえず動かしてみたいな、と。
環境は
Intel PentiumIIIの1Ghz
RAMは370のWin2k。Bochs上でエミュレートして書いています。
アセンブラはnasmを使っています。
>>とりあえず走らせて見ていじってみようというわけです。
だから「何を」走らせたいんだよ。それがわかんねーから、よいも悪いもないんだよ
27 :
942:04/11/26 18:21:54
>>26 今やりたいことはprotect_modeにちゃんと移行することです。
さらに、PM動作確認するため画面に「G」と出すようにする
30 :
942:04/11/26 18:58:55
>>29 上記のプログラムでは、文字出力の部分は全部飛ばしてあります。
実際には文字列を出力するコードが入っていますし、それらは動作しています。
誰かキーロガー書けプルア
>>6 このレビューは参考になりましたか?
◎はい ○いいえ
キモイ
スレ立て早すぎ。過疎スレなのに
>>36 本屋で立ち読みして、内容を自分の目で確かめてみると良いですよ。
それが出来ないなら、レビューを参考にされると良いでしょう。
ただし、「ゲーム解析に役立つ」というレビューは大嘘ですが。
(´・∀・`)キモイ
39 :
デフォルトの名無しさん:04/11/27 14:51:34
語感がムカつくもの
mov
モブって言うな!!!!!!!!!
ムカつく!!!!!!!!!!!!
41 :
デフォルトの名無しさん:04/11/27 14:54:01
QuickTimeのあれとかムカつくよな!!!!!!!!!!!!
それはそれでムカつく
ノーブラか?
てぶら
前スレ987へ
i8086のシフト命令のクロック数調べてみれ
46 :
BlackLightOfStar ◆ifsBJ/KedU :04/11/27 21:31:46
Re:>37 一部の技術者以外には向かないだろう。私もアセンブリ言語はあまり分からない。
Re:>
↑これであぼーん設定するとすっきりする
>>46 「いまどきのアセンブラプログラミング」ご自分で読まれましたか?
一部かどうかを問わず、技術者がこの本を必要とする場面はありえないと思います。
なお、命令セットの解説なら、CQ出版が出している書籍の方がはるかに使えます。
読み物に技術者としてマジレスしなくても良いと思う。
そもそもアセンブラを熟知してる人は読み物とか入門書は買わないわけで。
技術者じゃなくてこれからアセンブラを勉強したいと思う人間にも不要です
と言う割には、具体的な理由が出てこないんだよなぁ
俺は詳しくないので、見ただけじゃどう悪いのか解らないので、
見れば解るというのは無しで。
正直用途をゲームハッキングに限定している気がする
この板ではハッキングはご法度、
ハッキングはハックラ板へ、
クラッキングはカックラキン板へ、
ファッキングは過激恋愛板へ行け
である
みんなの意見を総合すると
厨をターゲットにした、厨本って言うことだな
見れば分かる
まだ蒸し返すのか。jmp、callのoffsetが16bitでどうしようってんだよ
セレクタだけ拡張したって意味無いんだよ。命令体系の全体を見ろよ
そーか、そういえば、バレルシフタって386からだよな。286にも搭載されてない。
なんて知ったか書いてる俺は、
大昔にSuper ASCIIの 386 de MSDOS を読んだのを覚えてるだけ。
あの連載面白かったな。
58 :
デフォルトの名無しさん:04/11/28 23:07:06
御前等知ってるか!
YAMAHAって反対から読むと破魔矢になるんだぜ。
すげーべ!
>>37 / ̄ ̄ ̄\
/ /=ヽ \ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| (゜) (゜) │ < 大人の階段踏み外して氏ねよおめー
| )●( | \________
\ ▽ ノ
\_∪ /
.__/ ̄ ̄ ̄  ̄ ̄ ̄ ̄)__
〃 .// ̄ ̄ ̄/ / ̄ ̄ ̄/ / 〃⌒i
| ./ / / ./ / / .i::::::::::i
____| .しU /⌒\./ / / | ____|;;;;;;;;;;;i
[__]___| / /-、 .\_. / Uし'[_] |
>>53 ああ、お前が一人でいろいろ書き込んだのを総合すると、
たしかにその結論になるな。
>>6>>9 このレビューは参考になりましたか?
◎はい ○いいえ
ああ、お前が一人でいろいろ書き込んだのを総合すると、
たしかにその結論になるな。
AMDプロセッサのパフォーマンスカウンタ機能を使ってキャッシュの
ヒット率を確認しているのですが、
無操作で99%、ぷよぷよで96%、メモリベンチで90%とかなりヒット率が
高くなってしまいます。実際こんなにヒット率は高くなるものなのでしょうか?
ヒット率の計算は、イベントDATA_CACHE_MISSES(40h)を
DATA_CACHE_ACCESS(41h)で割っています。msrレジスタの読み書きに
関しては多分間違いはないと思います。
×ヒット率の計算は
○キャッシュミス率の計算は
うん、高くていいよ。
athlonxpは普通にキャッシュヒット99%達成してた記憶がある
>>63 どっかで見たけど、バースト転送を利用しているシステムの
キャッシュヒット率は99%になるらしい。
ただ、レイテンシは最悪になると
アセンブラが勉強できるいい本ない?
俺は、吉川敏則の「Cユーザのための実践アセンブラ」をおすすめする。
中古の8ビット機、説明書込みで買ってこい。
Z80、MC68000経験者にいい本ない?
ところでこのスレは、どの石を前提に進めてるの?
おれは
>>72に、SH関連をすすめたりしても良いわけ?
>>72 経験者なら、
とりあえずCPUメーカーの資料をいきなり読んでアーキテクチャと命令セットを理解し、
適当にサンプルコードを眺めて作法を把握すればOKじゃない? そんな暇ない?
>>69 これ昔々に読んだけど、そのときは難しかったなぁ。
秘伝忍法帖は地味だけどよかったよ (昔々・・・)。
CASL ならまかせてくださいと流れをぶったぎってみる
パソコン用ではない、組み込み用CPUのアセンブラなら
電気電子板へ誘導してあげたら。
アセンブラの話題は全部電気板でいいと思う。この板馬鹿が多いし。
手前等に任せた。
303 名前: デフォルトの名無しさん 投稿日: 04/11/30 22:31:49
あのですね、質問があるのだべし。
ファッキントッシュに、のってる、クピュと、
ブロークンウィンドウズ理論が動く、クピュでは、
破線ブラコードは、違うと、思われなのだべしですが、
この、仕様というか、命令セット大全というか、
何を、どうしたら、どうなる、命令がこんだけある!
と、いうのは、どこで調べたらいいの、ですか。
まずは解読
SPARCとかPowerPCとかで、組み込みじゃない時はどちらの板で。
アセンブラプログラマって頭悪そうだな
>>63 ぷよぷよって言うくらいだからWindows上での話しだと思うけど
どうやってCR4とMSRをいじったの? 教えてちょんまげ
その本読んだらアセンブラのコードかけるようになれる?
Cは別に使う機会無い漏れだけど・・・。
このスレの人たちみたいにCPU周りに詳しかったら
仮想マシンを自分で作ってみたいとか思わないんですか?
(ヘボぃところでCASLとかなら既にあるんだろうけど、、)
>>92 8ビットCPUのインストラクションセット作って遊んだことならある。
言語処理系つくるなら(完全なネイティブコンパイラでなきゃ)スタックマシン作る。
CPUそのものは学生のときに授業で作った。
いいですねー。自分は何も考えずに化学科選んで全然面白くなかったから
そういうの憧れるっすよ。電気とか電子でしょ?CPUを実験で作るのって。
化学も面白いけどなぁ
多分、他人の芝生が青く見える人は、技術研究は向かないかも
化学はね、計算機関係みたいに個人の範囲で実験が出来ないんですよ!
あと収率とかね、一般に低くて化学反応式みたいにクリアな世界じゃないんすよ!
精製とかだるくて惨めでネ!
つまり、つまり日常の世界での個人的なハックの楽しみの余地が無くて・・以下略
あと、あんまり知られてないけど、有機系の研究者は
長年溶剤の気を吸って生活してるんで肝硬変になりやすいです。
>化学はね、計算機関係みたいに個人の範囲で実験が出来ないんですよ!
そんなん言うなら個人の範囲でπを一兆桁計算してみろ
一兆桁は知らないけどニューヨークのアパートメントで
アルゴリズムの研究してる兄弟とかいてたような・・?
そもそもあなたは何のためにアセンブラを覚えたいの?
はっきりした目的意識がないと努力も長続きしませんよ。
アセンブラができればみんなに尊敬されたり、就職で有利になったりするかも、
なんて思っているとしたら甘いです。
アセンブラができる、というのは道具の使い方を知っているということに過ぎません。
MS-Wordの使い方を熟知していても、
芥川賞を取れる小説家になれるとは限りません。
フォトショップの使い方を熟知していても、
CG描くだけで食っていけるアーティストになれるとは限りません。
最初にアセンブラを覚えたのは、純粋に知的好奇心って奴だった。中学生のときだ。
その頃、化学にも興味があった。電子軌道というアーキテクチャから原子というオペレーションが生まれて
それを分子というプログラムに組み上げていくことが楽しそうに思えた。
結局大学まで化学をやったが、原子を自在に操るには難解で範囲が広すぎて
そして未知の事が多すぎて俺の手には余った。
結局、今ではファーム屋をやっている。何とか独力でシステムを組み上げる事ができるから。
そして、わくわくしながら科学記事を読む、俺もまだ居る。
自然というアーキテクトの技が解明されていくのは、とてもエキサイティングだ。
あっ、意見ありがとうございます。
>>103 自分はエミュレータとか作れるようになりたいと思ってます。
ゲームには興味ないんで何のエミュレータ?って聞かれてもアレだけど
ほかにはドライバとかかけるようになれれば、自分のマシンから
他のハードにアクセスできだろうし。
そうなれれば、単にプログラムやアプリを動かす箱としてのPCから
また違った秘密の花園が開けてるかなって期待してる。
>>104さんみたいなファーム屋のスキルがカッコいいと思ってるヘタレです。
しんみりしてるところ恐縮だが原子を自在に操る連中は物理屋だぞw
その辺考えるとマスマス胸につまされる話になるな?
>>95 世界初のマイクロプロセッサを作ったのは、化学科出身の人ですよ。
>>95 CPUを実際に作るのは大変だが、>93のように設計してみるだけなら端末上でできる。
化学だって、コンピュータ上で好きな合成ができるじゃないか。
現実にはありえないような環境を設定して反応速度を変えることもできるし。
有機化学屋なら分子模型見ているだけでわくわくしてこないか?
>化学はね、計算機関係みたいに個人の範囲で実験が出来ないんですよ!
個人の範疇で実験が出来るのなら、家で勝手にやってサイトで公開とかでもすればいいじゃん。
えっ?
頭の悪い香具師が来たな
色んなイミでかなり・・・ナンダガ
高校の先生とかしてそうだね。
おつかれさま
アセンブラ… (´・∀・`)ヘー
↑
悲しいけど、これ、アセンブラスレなのよね。
オマエラの科だのの話に興味はないのだよ、興味が
アセンブラも大事だが現国もガンバ↑(´・∀・`)
(´・ノ・`)
119 :
デフォルトの名無しさん:04/12/02 19:04:07
無能が無能であることに気付かない事ほど哀れなことはない
痴脳が池沼であることに気付かない事ほど哀れなことはない
必至さが笑えたw
機械の体をタダでくれる惑星まで出かけた
>>119は
自己出力プログラム化して帰還。
メーテルを訴えたほうがいい
車掌も共犯
化学とか個人とか、やる気がない言い訳にしか聞こえないわけだが。
>>125 【心と身体】のどっかで槍太陽にやっテロ
化学専攻してる人がみんなに指摘されて暴れてるようだな
そんなに悔しかったら、化学やめて情報やればいいのに
化学をまともにやった奴が情報やったらかなり楽しいと思うぞ
しかし、RISCのアセンブラは読みにくい。
ん… 俺はRISCのアセンブラの方が読みやすいんだが、おかしいんだろうか…
新スレになっても相変わらずしょーもないふれーむが伸びてるな
少なくとも私にはSparcのアセンブラは読みにくい。
#68000が(馴れもあって)一番読みやすいかなぁ。
慣れてないってのはあるが、一行にいろんな事を詰め込んでいる感じがしてどうもわかりにくい。
Z80は名機。これ定説。
8ビットCPUで一番使いやすくて速かったのは6809だが、いかんせん
世に出るのが遅すぎた。
Z80は命令体系が8086よりもさらに糞で、いろんな制限が課せられて
いたが、アセンブリで書く事により潜在能力を100%解放していたな。
68000はアドレスレジスタとデータレジスタが分離して、常にアドレス
レジスタが遊んでいる状態を作り出してしまった上に、当時の80286
の速度に完全に負けていた。アーキテクチャ的には良く出来ていた
ので、もし68000系がCISCの主流だったら今頃ソフトウェア技術は
もう少し進化していたかも。いやでも80386が出てからどちらでも良く
なったか。
>>134 まぁ、8080を元に、拡張命令群を3セットも詰め込んでたからねぇ。<Z80
ニモニック表にない命令が幾つもあったし、裏レジスタもあったりしてね。
68000は無駄にアドレスレジスタがあるのでA7が通常のスタック、A6が
データスタック、A5がthisポインタ(のようなもの)、A4がデバッグフラグ。
あるプロジェクトではそんな使い方していた。
古き良き時代を語るスレになってきたなw
>>135 そうだね。俺もそういう使い方をしていたプロジェクトに参加していた。
今のRISCのようなレジスタ・ウィンドゥ的使い方をするにはレジスタ数
が中途半端だし、結局誰が使ってもそういう使い方になる。
俺的にはアドレスレジスタとデータレジスタに分けないで欲しかったなあ。
そうすりゃ余ったアドレスレジスタをデータレジスタに使えるのにと何回も
思った。
知っての通り68000だけでは仮想記憶システムを作れないという致命的な
問題があり、68010が出るまでそれは延期されたが、68020で小さいながらも
データキャッシュを積んだときには速度の向上に素直に感激した。
OS/9 68Kが世界を席巻すると当時は信じてはばからなかったよorz
考えれば6809は8086より一年遅れて出たんだっけ?で、Intelが
6809を露骨に潰しにかかったのが8088。あんなの出したら反則だよな。
で、IBM PCが8088を採用してしまい現在に至る。
8086も発売当初は確かn-MOSでチンチンに熱かったが、C-MOS版が
出てから嘘のように省電力になった。
6809はレジスタの少なさが性能向上の足かせにならないと証明した名機
だったと思うが、現在のようにコンパイラ技術が高まるとレジスタの割り当て
を人間には真似の出来ないような仕方で割り当てて、ロード/ストア回数を
減らす事によるループ内の速度向上が可能になり、特にそれはRISCで
顕著。というか元々RISCはコンパイラとセットで使う事を前提として設計さ
れている。
という事で過去を振り返るのはこれ位にしとく?
6809といえばSEX
8086ではCBW、CWDか。
モトローラたん(*´д`*)ハァハァ
あ、8086にはCWDなんて命令ないんだった。
アセンブラ使い始めたのはPentiumからなので許してスマソ。
CWDもあるだろ
386で追加されたのはCWDEとCDQ
コンパイラの混合ソースだと、CBWEもCBWと表示されてるね。
>>135 チャチャ入れで申し訳ないが
A7(usp)がスタック
A6がフレームポインタ
A5がローカル記憶域(TLSみたいなもの)
がメジャーでなかったか? A5 は 68k Mac 特有だったかも。
>>143 同じことでしょ。
フレームポインタと言わずデータスタックと言ってるのだろうし、
ローカル記憶域を指してthisポインタのようなものと言ってるのだろう。
PalmOSだとグローバル記憶域がA4だったっけ?
>ローカル記憶域を指してthisポインタのようなものと言ってるのだろう。
かなり違うじゃん
ということは、6809が2個載ってる、FM-7シリーズが最高と言うことでいいですか?
Z80が2個載っている、PC-8801MkIIシリーズが最高にきまっとろうが!
こいつら30代だとしたらかなり寒いな
149 :
デフォルトの名無しさん:04/12/04 00:11:52
今、たいへんなことになっています。
それはそうです、「逆汗」という言葉の意味でです。
言う、私は「逆汗というのは、はいそうです、汗が逆に流れる、それはそれです。意味。」
しかしながら、私の友人が会話をしました。
「あなたは間違っています!組み立てる、真逆に、なので、みんなはそうです、言います。逆汗!」
どっちが正しいのでしょうか、あなたの助け?
150 :
デフォルトの名無しさん:04/12/04 00:14:24
ワウ、私は足りなかったかもしれません。
汗が逆に流れる、顔が真っ青になる、そうです、意味。
友人は言いました。意味。
真逆に組み立てる、それは壊すことです!破壊屋というべきです!
知恵を流してください!上に。
あわわ…
荒しばっかり・・・
このスレはもうダメぽ・・・
荒しやっつけるコード書いてよ。アセンブラで。
これはもうだめかもわからんね。
0100 58 35 4F 21 50 25 40 41-50 5B 34 5C 50 5A 58 35 X5O!P%@AP[4\PZX5
0110 34 28 50 5E 29 37 43 43-29 37 7D 24 45 49 43 41 4(P^)7CC)7}$EICA
0120 52 2D 53 54 41 4E 44 41-52 44 2D 41 4E 54 49 56 R-STANDARD-ANTIV
0130 49 52 55 53 2D 54 45 53-54 2D 46 49 4C 45 21 24 IRUS-TEST-FILE!$
0140 48 2B 48 2A
ぜとはち?そんな言い方するか?
ゼッパチとかハチマルとか言うだろ。
ふつーぜっぱち
ゼッパチと言えば、Z8と思う私。
80と言えば、8080と思う私。
かといって、ぜとはちと聞いて、Z80を思い浮かべられる人もおるまい。
CPUの話という前提で、音の感覚でなんとなく推測する域だな。
まー、プログラム板だから、ゼッパチでまず通じるでしょう。
8080と互換だから、ハチマルとして系でまとめるのもあるかも。
ゼットはちまる
はにまる王子
ゼット (英語だが本物の発音はズィー)
はち (日本語)
ゼロ (また英語に逆戻り)
英語か日本語かどっちかに統一しろよ
Z80マシン語秘伝の書
ぜっぺき
違います。ゼットもゼロも日本語です。
>>163 誰もゼロとは読んでないような気がするが…
乙八零
俺はメガドライブに乗ってた奴
で
Z80とピーンと来る能力がある。
むう。ザイログハチジューって言われてもなあ(w
メガドライブって、16ビットだろ?
68000とZ80の二本立てCPUなんさ
メガドライブは68000
一応Z80も乗ってることは乗ってるが、音出してるだけ
普通、Z80と言えば、普通のセガ(とMarkII-III)だと思うが
普通、Z80といえばゼビウス
ガーン!
Z80のZって、ZILOGの頭文字だったんだ!
十数年の時を経て知った驚愕の事実!
まぁ、物心つくまえからZ80つかってたから、
名前の意味なんて考えたことないし
>>175 それはちょっと違うような。
どっちがメインでもよかったはず。
なのでZ80が主処理で、
68000がサブという動かし方でもよかったはず。
PC-8001もZ80だったが、PC-8031もZ80積んでたのには驚いた。
しかも(当時としては)広大な16KBものRAMを積んでた。
なんせ本体も16KBRAMとか言ってた時代だ、ディスクドライブに本体と同じだけあるとはね。
尤も、価格的にも本体同様16万8千だった気がしたが。
#無印8031はもっと高かったかも知らん。
そう言えば、FM-7は6809*2だったっけ?
FM-7の先輩のFM-8も6809*2だったんだがな…。
>>137 6809はメインメモリ全部をレジスタにしてるようなもんだからなぁ。
当然、他の8ビットCPUよりも遥かにメモリアクセスがシビア。
Z80のZはZilogのZでもあるが、THE 80 のTHEを一文字に縮めたZでもある。
アセンブラとかダッセwww
カス同然だっての
アセンブラって素敵ぃ♥♥♥
尊敬しますっ☆
アセンブラに嫉妬する奴はまだいいよ。Java厨とか、
なんてったってアセンブラ読めないからね。
Java バイトコードが読めれば、それでいい。
んなわけない
190 :
デフォルトの名無しさん:04/12/06 00:23:48
gcc(Linux/x86)で、 .Sファイルから.cの関数(foo)を呼びたいんですが
call foo
と書くとリンク時にundefinde referenceになってしまいます。
なにか手順があれば教えていただけませんか?
80386と
カローラFX
>>190 objdumpコマンドで.oファイルとかを見てみよう!
gcc -S hoge.c がいいんじゃないかな
どーせネームマングリングだろ。FAQ過ぎ調べなさ過ぎ根性なさ過ぎ
196 :
デフォルトの名無しさん:04/12/07 03:23:00
へーかよ
6809の評判いいみたいだけど何が良かったとですか?
俺はMZとMSXでZ80erだったんで。
Z80をフランスパンに例えると、6809はパンの生地のような感じだったな。
とにかく思った通りにプログラムがガシガシ書けた。
Z80は命令体系が固いので、何度も同じようなフレーズを繰り返し繰り返し
書かなければならなかった。例えば8ビットCPUはメモリ空間が狭いので
スタックフレームなどと優雅な物を作る余裕がなかなかなく、CALL命令の
後に1〜2バイトのパラメータを置く、いわゆるインラインパラメータを多用
していたが、Z80のようなCPUではそのパラメータを取り出すのに大変な
手間が必要だった。
6809ならすぐ取り出せた。
データレコーダで普通のカセット再生させて録音とかやったなぁ…
なつかしいなぁ。よくWラジカセでダビンg(ry
>>201 そういう意味ではなく、PCのメモリに録音したんだと思われ
だから、いいかげんZ80だの6809だのの話は昔のPC板でやれっての。
専用スレまでちゃんとあるだろ。
>>203 じゃあ、具体的に何のCPUの話をしろと?
PCとCPUの区別もつかないのか?
Z80なんて組み込みじゃまだ現役だぞ。
>>203 そんなに排除したかったら、32bitアセンブラとでもスレ建てて、
勝手にそっちでやればいいのに。
>>203 煽るぐらいなら、まずお前がアセンブラの話をしてみろ。
それも出来ないで煽るだけなら迷惑だ。
そもそもアセンブラでガシガシ書いてたのってそのあたりのCPUでだからな
これは自然の流れと言う奴だろう
逆に、AMD64とかSPARC64とかで、アセンブラでガシガシ
書くのが最高とか本気で言ってる奴がいたら、結構引くな。
凄いと言うより、アホかなと思ってしまう。
あー今思い出したけど、6502ってCPUもあったな。
AppleIIとかコモドールに使われていたっけ。
俺がパソコンを知った時は既に16ビット時代だったのでついに一度も
6502でアセンブラを使った事はなかったけど、なぜか手元に本だけある。
インデックスレジスタまで8ビットだって!?こんなんでよくプログラムを
書いてたんだなあ。
何を言ってるんだ。AMD64 でレジスタ数が倍増した今こそ
ループアンロールと依存性最適化で人間様の実力を見せ付けてやるときじゃないか
>>212 アセンブラの未来は君に託した
ガンガレ
>>212 あーでもね、コンパイラより速くハンドアセンブルして、コンパイラの吐いた
コードよりも速く動作するものを書けないと、お払い箱だからね。
>>217 これ見て、FM-7のゲームのプロテクトがもの凄くトリッキーに書かれて
いたのを追憶したよ。
6809は綺麗に書けるというより、楽に書けるという方が正しく、汚く書けば
それこそ解読不能なほどトリッキーなプログラムになってた。
さらにFM-7はサブシステムにも6809を使っていて、メインの方でディスク
を読んでいる途中でサブシステムから割り込みを掛けて、別の所へ飛ばす
なんて常套手段だった。おっとっと、これこそ昔のPC板で書かないといけない
話題だな。
UNIXにしろWindowsにしろ回りがOSでガチガチに固められている今、あまり
面白い事はできなくなったなー。
ファミコンは6502カスタム、スーパーファミコンは65816カスタムが
使用されていた。
特にコンシュマーで65816のシェアはほとんどスーファミに消費されて
いたと言えるほど独占的だった。
驚くべき事に、スーファミのゲームの大半はアセンブラで書かれていた!
それがGBではZ80カスタム、GBAとDSではARMカスタム、GCではGekko
(PowerPCカスタム)と節操がない。まあ開発言語にC/C++を使用する事
によってアセンブラレベルの違いはライブラリで吸収してしまった事による
効果だろうが。
222 :
デフォルトの名無しさん:04/12/08 14:04:57
【過去ログ】
アセンブラ… (゚д゚)ウマー
アセンブラヽ(`Д´)ノモルァ
アセンブラヽ(`Д´)ノモルァ
アセンブラ… (・∀・)イイ!
アセンブラ… (*´д`*)アハァ…
アセンブラ… (;´Д`) ハァハァ
アセンブラ… (°Д°)ハァ?
アセンブラ… (´・∀・`)ヘー
>>221 AppleIIGSにも搭載されていたよ。短命におわったけどね。
224 :
デフォルトの名無しさん:04/12/08 14:10:37
>>221 コンシューマーゲームじゃ標準ライブラリの有用性はほとんど
無いから、ハードウェア操作やタイミンブバリバリのコードを
組むならC言語よりも、アセンブラの方がやりやすいのだろうな。
プリプロセッサ(トランスレータ)型の構造化アセンブラを
使ってるから、そんな書きづらい訳じゃないしね。
自分はC言語ライクで組めるアセンブラトランスレータを自作して
それで組んでた。
6502は秀逸のデキだったが65816はウンコだった
>>225 ひどかった。8ビットと16ビットのデータを使い分けるのに命令ではなくて
フラグで制御するなんて、とてもあり得ない。
16ビットCPUで多分一番レジスタが少なかったし。
6502の設計者は予知能力があったのか、それまで散々現場でコードを
書いてきた超ベテランなのかのどっちかだな。
両方だろ
最強の周辺チップのZ80と最強の命令セットの6502
8ビットならこの二つのうちどちらかが良かったね
Z80が6502の命令セットを載せると無敵だったろうな。
>>210>>212>>215 マジレスすると、真に最高速のコードを書くのは骨が折れる。
ていうかスケジューリングは手でやらず自製オプティマイザでやってる。
最早命令セットなんて何の価値もないんだよ。
そんなものに固執するなんて
果物の皮かじって喜んでいるようなもんだな。
>>230 頼む、そのオプティマイザを公開してくれ
金とれるんじゃねーか
>>212 アホですか?
命令セットは同じでも、中身がコロコロ変わっていくぞ。その度に、全部書き直すのかよ。
32bitのWindows(2k/NT)でソフトウェア割り込みする方法を教えてぴょん!
>>234 そうだよ。アーキテクチャごとに最適化してる。常識だよ?
>>237 >データバスD<7:0>はハイインピーダンス状態への変化ですから、
>データバス上の負荷(浮遊容量を含む)により、短時間ですが
>データが保持されます。これは、データホールド時間の余裕を増す方向です。
>>237 データバスは入出力(双方向)です。入力と出力がつながっている。
そのため(データバスの)出力がハイインピーダンスにならないと、外部の信号を読み取れない。
データバスがハイインピーダンスになれば、外部の信号を読み取れる。
普通リード時のデータバスはハイインピーダンスだ
そうで無いとデータを出力しているデバイスと信号がぶつかるだろ
>>238-240 言われて見ればその通りですね・・・
ド文系なので電子回路の常識すらわかってない始末でして
もっと勉強します。
ありがとうございました。
>>237 内蔵RAMアクセス時は、アドレス・データバス及び各制御信号の状態は以下の通りです。
~~~~~~~~~~~~~~~~~~~~~~
アドレスバス : アクセスするアドレス値を出力
データバス : リード時はハイインピーダンス状態、ライト時は書き込みデータ値を出力
各リードライト信号・チップセレクト信号 : "H"(インアクティブ状態)
>>242 そりゃ「4.内蔵RAM」しか読まないとそうなるだろうな。
無視すんなぴょん!
目的が何で
試みた手段が何で
どうダメだったか書け。
この池沼っぷりのカキコからして、カーネルモードの話じゃなさそうだしな。
HSセグメントレジスタって使われていますか?
HentaiSexセグメント
>>246 HSはAMD64しか持っていないけど、WinXP sp2で使われているよ。
>>249 嘘つけ。良く調べないでいい加減な事を書くな。
Athlon64は64bitモードではCS、FS、GSの3つだけが有効になる。
32bitモードでは従来と同じ。
どちらにしろHSなんてセグメントレジスタは存在しない。
こういう馬鹿が最近増えて困る。
>>250 自分で自分のこと、馬鹿って言うこと無いのに。
>>251>>252 だからどうした。命令表のどこを見てもHSをセグメントセレクタとして
使う方法はのっていない。パフォーマンス・モニタにはロード回数が
カウントされるのだろうが、アセンブラレベルからいじる方法はなく、
説明もない事から、これは拡張予定のレジスタなんだろ。
もしどうしても存在するというなら、XPSP2で使われているという
ソースを示してみろ。
アセンブラレベルって・・・直接バイナリコードで埋めれば
使えるじゃん。
まぁ、あることは確かだね。漏れもパフォーマンスカウンタで確認した。
メーカーが公表していないものを、あると言えるソースはどこに
あるのだろうか。命令の規則性と、パフォーマンス・モニタから、
ある事は推測できても、使えるという保証はないわけで。
ちょうどOCして動作保証がないのと同じ感じ。
>>253 こういうのが一番みっともないね。
公式のマニュアルにHSレジスタの存在が書かれているわけだから
それがすべてジャン。
>>256 いやだから、
>>251のパフォーマンス・モニタには項目はあるものの、
アプリケーション・ガイドとか読んでも、どこにも記述がない。
という事は、あくまでも拡張予定で、実際には内蔵されていないという
可能性もあるわけだ。
>>251 俺も確認した。Win2kでは0x4020のイベントは0のまま
XPsp2ではカウントしていた。
Athlon64のパフォーマンスカウンタの一覧を探していたけど
BIOSのマニュアルに載っているとは・・・
HSレジスタ関連のコードってどんなんだろ?
セグメント プリフィクスだとFS: GS:の後は違う命令で埋まっているし。
パフォーマンスカウンタってどうやって調べるのかいな。
カーネルモードじゃないと、MSRレジスタって書き込めないよね。
HSレジスタって詰まる所は隠しレジスタなのか?
ほんとうにhsレジスタがあるならば、M$には隠していないようだけど。
ググって見ても、それらしきものはAMDのマニュアルしか出てこないなー
別にHSでもISでもJSでもあっていいと思うが、状況証拠だけであると
決めつけている奴は嫌だ。
プログラミング・マニュアルにきちんと正式に載ってから、「ある」と
言うのならわかるが。
俺だったら、最低OPコードが公開されてから信じる。
そうでないと、まるで霞を食っているような気分が消えない。
HS = HiddenSegment ?
Z80の隠し命令について語ろうぜ
海外をぐぐってもHSはパフォーマンス・カウンタ・イベントしか出てこない・・・・
ウィルスを作られるのを恐れて、OPコードは厳重に隠してるんだろうか?
>>259 mov hs,axを66h 8Ch F0hとして実行したら、マニュアルに定義されていない
30番例外が発生しました。何かありそうですね。
6809にも変な隠し命令があったよ。ASLCCとか。使えそうもないね。
>>270 0ddh,0fdh関係って、HLのプレフィックスだから隠したと言うより公開しなかっただけって希ガス。
他にもμPDシリーズだからNEC製かな? 0edh関係で隠し拡張があったような記憶がある。
X1-Turboって、確かIN/OUT命令で、本来はアドレスバスの下位8ビットに
Cレジスタの内容が出力される事だけが保証されてたのを、無理矢理
BCレジスタが16ビットとして出力されるのを利用して画面描画してたよね。
教訓
言い訳はやめよう
>>264 >状況証拠だけで
状況証拠がすべてだろ
あるって書いてあるんだから
使って欲しいからマニュアル化するのであって、
使って欲しくない物までマニュアル化する必要はないでしょう。
>>277 だからどうやって使うのん?OPコードは?
ああそうか、そういう事ね。
使われたくないから、OPコードも仕様も公開しない。
だけど確実に存在する。
俺はてっきり、使い方やOPコードもどこかで公開されているのかと
思ってたよ。
>>280 「良く調べないでいい加減な事を書いてしまいました。ごめんなさい。」
って書くだけなのにね。哀れなり。
どうでもいいけどAMD64のマニュアルはちゃんと読んでおこう な!
sakky乙
>>282 マニュアルも糞も、
>>251の資料に申し訳程度に書いてあるだけで、
他のプログラミング・マニュアルにはHSに関する事は一つ足りとも
出てないっつーのに。普通はそう思って当然だぞ。
>>250であそこまで啖呵切っちゃたらそりゃ引けないわな
アセンブラとCでプログラミングをしてます。
Cコンパイラはgcc、アセンブラはnasmを使用したいのですが。
gccのインラインアセンブラにnasmを使用することは出来ないのでしょうか?
gasのあのけったいなニーモニックを使いたくありません。
もしくはnasmで記述したアセンブラ命令をCから関数として呼び出すことはldを使ってできるのでしょうか?
どなたか教えてください
gcc -S -masm=intel 程度じゃダメか?
>>261 Thx。ドライバを手動でインストールするとはw
確かにSP2でHS Loadはカウントされていますね。試しにSP2を
アンインストールして確認してみたらHS Loadはカウントされませんでした。
↑
あ、イベント(?)は4020Hであってますよね?
291 :
デフォルトの名無しさん:04/12/11 23:00:20
AMDのマニュアルにHSレジスタロードでカウントすると書いてあり
かつ実際の環境でカウントしているのに、HSレジスタは無いと言い張る輩
(多分
>>250が自演)が惨めですね。
あ、途中で「無い」から「保証はしない」と変わっているなw
HSって冗談で書いたのに、マジであるのかよ。
P4にはないのかな
というか、何に使うんだろ
FSもGSももてあましていると思うんだが・・・
>>295 NTはfsを良く使うけど。gs以降はしらん
>>291はHSがどんな使われ方をされているかも知らない癖に、
知ったかぶりをする馬鹿。お前どれくらい知ってて人の事を
それだけけなしてるんだ?
単なる誤記のような気がすんだけどな
そういえば、AMD64とEM64Tの違いの発生原因は
AMDのマニュアルの記載ミスだったとかなんとか。
>>299 それは、LAHFとSAHF命令でしょ。
古いAMD64の仕様書には、この2つの命令はロングモードで無効命令と
なっていた。
それに性能カウンタは、もともとAthlonとP4でまったく互換性はありません。
>>278 お前がはっきりと『存在しない』と断言したのでみんな反応しているわけだが。
どちらにしろHSなんてセグメントレジスタは存在しない。
こういう馬鹿が最近増えて困る。
どちらにしろHSなんてセグメントレジスタは存在しない。
こういう馬鹿が最近増えて困る。
どちらにしろHSなんてセグメントレジスタは存在しない。
こういう馬鹿が最近増えて困る。
どちらにしろHSなんてセグメントレジスタは存在しない。
こういう馬鹿が最近増えて困る。
どちらにしろHSなんてセグメントレジスタは存在しない。
こういう馬鹿が最近増えて困る。
なんか、HSはあることはあるけど、使われない物と言うことで収束させたいみたいだけど、
>>249では、WinXPのSP2で使ってるって書いてあるけど。
つまりSP2では、CPUを自動判別してAMDの場合にはHSを使ったコード
を実行してるってこと?
自分で作ったカウンタで調べたので、信憑性ないといわれたらそれまでだけど
確かにHS Loadはカウントされている。本当にHSが存在しているのかは謎だけど。
何もさせない状態だと1秒間に250〜600カウントくらい。
(一番多いのはFSだった)
AthlonXPからえらくイベントの項目が増えたな。
>>301 みんなじゃなくて、ここまで派手に反応しているのはお前だけだろうが。
出た出た
敵が単独に見える病(w
うっせハゲ
309 :
デフォルトの名無しさん:04/12/12 16:38:42
トリップつけようよ
>>296 nt!SwapContext+0xc7:
804def3d e8595c0000 call nt!KeReleaseQueuedSpinLockFromDpcLevel (804e4b9b)
804def42 33c0 xor eax,eax
804def44 8ee8 mov gs,eax
HSっていうと、PICを思い出す
IS
スターリン戦車
ZS
>>310 0をセットするコード見ても面白くねえよ
push cs
pop gs
証拠出されてやっと引いたか。アンチHS厨。
>>318 そうではない。お前があまりにもしつこいのでスルーしてただけ。
ここはアセンブラスレなので、HSの存在確認を行う場ではない。
そういうのはハードウェア板へ逝け。
悔しかったらHSの使い方を説明してみろよ。
俺書き込んだの初めてだけど?
名無しだから何とでも言える罠。
まあまあ。喧嘩はよくない。
しかし、MSはわざわざAMD用のコードをSP2に入れて何をしたかったんだろうね。
当然次世代Windowsに向けて、AMD64へのネイティブ対応も
模索してるからだろ。
250 :デフォルトの名無しさん :04/12/11 09:12:44
どちらにしろHSなんてセグメントレジスタは存在しない。
うやむやにして
どちらにしろ〜ない
というのはテンプレだからな。
>>324 しつこ過ぎる。女の腐った奴みたいだな。
PG女の7割がこんな感じだけどな。
>>327 女は女だからいいんだよ。男が女みたいだと禿げしくキモイだけ。
嘘つけ。良く調べないでいい加減な事を書くな。
Athlon64は64bitモードではCS、FS、GSの3つだけが有効になる。
32bitモードでは従来と同じ。
どちらにしろHSなんてセグメントレジスタは存在しない。
こういう馬鹿が最近増えて困る。
SP2でAMD用の独自コードといえばDEPくらいしか思い浮かばないな。
>>330 どうして存在しないと言えるんだ。パフォーマンス・カウンタのイベントに
HSへのロード回数が記録されているんですけど(・∀・)ニヤニヤ
コピペ
香ばしくなってまいりました。
で、それは実際なんなの?
でじゃぶー
何とかAMDからもっと詳しい情報が流出しないかな。
過去にも隠し命令を持ったCPUは数あったけど、AMD64は他にも
いろいろ隠してそうで、宝箱みたいで楽しみだ。
自爆コマンドとかないかな
>>300 よく聞く話だけど、どこかに古い仕様書ある?
>>321 敵が一人に見える病が治ってないみたいだな
343 :
デフォルトの名無しさん:04/12/14 14:04:24
富士の山
おれのFreeBSDでもカウントアップしてる模様なんだけど、
そこんとこどうよ
>>323 とっくの昔にAMD64版のWindowsXPは開発されてβテスト中ですよ。
CPU依存しない部分は、AlphaやIA-64で開発したコードをコンパイルし直しただけでしょうが。
で、32ビットのWindowsXPのSP2といえば、AMD64のCPUの新機能を使ったセキュリティ強化ですよ。
HSレジスタも、それに関係があるのと考えるのが妥当。セキュリティ関連なので開示されてないのだと思う。
え、FreeBSDでもカウントしてるの?
じゃぁ、セキュリティ機能じゃないね・・・。
ああ、そうか、わかったぞ。
もう今のx86系CPUには物理的にEAX等のレジスタは存在しなくて、
内部にRISC風の多くの(本当に)汎用なレジスタがたくさんあって、ばりばりリネーミングしてるわけで、
HSレジスタというのもISAでは触れられないんだよ。
レジスタとして中に存在しているのかもしれないし、
レジスタと呼んでるけどパフォーマンスカウンタの中の1カウンタにつけた名前に過ぎないのかもしれない。
>>348 つまりsp2やBSDで明示的にHSを使ってるわけじゃないってこと?
BSDだったらその辺の情報が公開されていそうだが、どうなんだろう。
明示的ではないとなるとTSSをつかったfar jmp系くらいしかないと思いつかないけど
他にあったっけ?
あと、NTはコンテキストの復帰にTSSは使っていなかったような
水を得た魚のように、ほら、やっぱりHSなんて無いかも知れないじゃん!
と厨房復活の予感。
ほら、やっぱりHSなんてないじゃん。
たとえ実はなかったとしても
最初に
>>348 みたいな理由を書かなかった時点で
厨房確定だろ。
まぁ騒いだあとに、実は本当にHSレジスタあったよーん
っていうのが理想的だが。(w
おまえらHSのセグメントオーバーライドプレフィクス探してから寝言言ってくれよ
AMDだけあるのかな
356 :
emulator 8086:04/12/15 14:38:08
分かりますか?
"write an 8086 assembly language module that inspects an array of ASCII
characters at location STRING: The last character is the terminator
and is "00H"(null). A variable TEST: is to be set to 1 if STRING
contains at least one digit(0.....9) and 0 if no digits are found,
variable length: is to have the length of STRING but not including the
terminator..."
宿題くらい自分でやれ。
早い話がstrlenとatoiを合わせたようなのを作れってこった。
訂正。atoiまでやらなくていい。もっと簡単。数字の有無だけわかればいい。
360 :
emulator 8086:04/12/15 14:59:02
もう一個あります。
Write an assembly language program, patterned after the
"LODS/STOS" example program, but that moves a block of 60H bytes
from location DS:300H to lacation DS:400H. DS(data segment) is
loaded correctly. The bytes are to be written in reverse order:
that is an even byte location(LSB address is 0) is written to
an odd byte location(LSB address is 1) and vice-versa.
361 :
デフォルトの名無しさん:04/12/15 15:06:39
strlenなんか習った事ないんですよね。
英語で出題されたってことはそれを読むのも宿題のうちだろ。ボケ。
それは、「LODS/STOS」の例プログラムから学習され作られます。
更に、アセンブリ言語プログラムは書かれています。しかしながら、
それは、位置DS:300Hからlacation DS:400Hに60Hバイトの
ブロックを移動させます。DS(データセグメント)は正確にロード
されます。:――それにそれは書かれることになっています(それ)
それは正しい――――それは逆で1バイト(カーブ)(LSBアドレス
は0です)まで目的のために[位置/バイト]を与えてもよい、それ、
オーダーで――どれに?NAす、奇妙なバイト位置(LSBアドレスは
1です)およびそれは、これに書かれています。
(´・∀・`)ヘー
int 13h命令を使用してフロッピーを読もうとしていまが。どうにもうまくいっていないように思います。
やりたいことは、21,012 バイトあるフロッピーのデーターをとあるint 13h命令を使用して、とあるアドレスに読み込むことです。
私の知識によれば、一般的な1.44MBフロッピーは1トラックあたり18セクタ。一セクタあたり512バイトと記憶しています。
となると。2セクター以降の21,012-512バイト分(トラック番号はどこで指定すればよいか分かりませんが、
Linuxのブートコードを見ると、どうやらchレジスタに指定しているようなのですが…
BIOSのインストラクションセットの表を見るとchレジスタはシリンダ番号と書かれています)を読むのに、
以下のように設定してint 13命令を発行しました。al=17, cl=2(2セクタ目から読み込む),dl=0, ch=0, dh=0
これで、17 * 512 byte分読み込まれたことになりますよね?。
ここからが分かりません。フロッピーがどのような書き込みイメージ形式を取っているのかわからないのですが。
al=60などと指定しても、きちんと読み込めているようです
(int 13h命令発行後のalレジスタの値とフラグが立っていることからも正しく読んでいると思われる。)
これはなぜでしょうか?、1.44MBフロッピーは一トラックあたり18セクターではないのですか?。
それなのになぜ18セクター以上でも読み込めるのでしょうか?
また、1.44MB(2HD)ですので、裏面が存在します。
記録順としては表→裏→表→裏なのでしょうか?、それとも表(の限界まで書き込んで)→裏なのでしょうか?
見苦しい文章ですが…どなたか教えてください、お願いします
スレ違い。
アセンブラの話じゃないじゃん。
それはBIOSのファンクションコールの話。
でーでーげでげーでーで
でーでーげでげーでーで
くっしゃみ一つで呼ばれたからは
それが私のご主人様ァよぉ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜い
んってーんてーけてーてけてけてけてー
ファ
ファ
ファンクション大魔王
壷(2ch)の中からはははん飛んでくる
困ったときはInterrupt List
Most BIOSes support "multitrack" reads, where the value in AL exceeds the number of sectors
remaining on the track, in which case any additional sectors are read beginning at sector 1 on the
following head in the same cylinder; the MSDOS CONFIG.SYS command MULTITRACK (or the Novell
DOS DEBLOCK=) can be used to force DOS to split disk accesses which would wrap across a track
boundary into two separate calls.
>>365 > ここからが分かりません。フロッピーがどのような書き込みイメージ形式を取っているのかわからないのですが。
我々は、君が読もうとしている FD を持っていないので、それは君もしくはエスパーにしかわからない。
(つーか、そんなこともわからずに FD 直接読み出して、何をしたいんだろう...。)
371 :
デフォルトの名無しさん:05/01/11 20:25:05
自分でespを変動させてスタックエリアに色々値を詰めてしまってもいいのですか?
例えば400バイト欲しい時に、0を100回pushするのでは無くて、
sub esp, 400
とやってその間のesp〜esp+400の領域を勝手に利用してしまっても大丈夫ですか?
Cコンパイラの吐くコードみたことないのかなあ。
alloca
>>371 >0を100回push
>sub esp, 400
後者は0fillされてないことに留意すればおk。
>>371 esp変更しただけでは駄目。
4kごとにわざと空参照しないとページ違反でるよ。
OSによってページサイズ違うかもしんないし、
かならずページ違反になるわけではないけど、
これ放置しとくと後々謎のバグということに・・・。
win32ではスタックを4KB以上広げるときにスタックプローブといって
上位のページからタッチ(=なんらかのアクセス)していかなければいけません
VCかなんかで、大きい配列をスタックから取ってくるコードを
逆アセしてみたりするとわかる
高々400バイトの話をしているときに何を得意げに……
>例えば400バイト
「例えば」
382 :
デフォルトの名無しさん:05/01/12 05:22:48
そういやlinuxも4k制限があったな
Linuxで事故書き換えのアセンブラ組んだけど
セグフォルトになった。
Linuxではもう事故書き換えのコードは書けないんだ。知らなかった。
(できるのはDOSだけ?)
>>386は、アセンブリで書いて普通にリンクしたんでしょ。
それなら昔から、出来ない。書けなくなったのではなく、ほぼ最初から出来なかったはず。
自己書換したかったら、書き込み可能なページにコードを配置しなきゃだめだ。
388 :
デフォルトの名無しさん:05/01/12 20:50:38
MASM や Intel 書式じゃなくて AT&T 書式の、つーかぶっちゃけ GNU (GAS) なアセンブリ言語のオペランド一覧がわかるドキュメント、どっかにありますか? ぐぐっても見つからないだーよ、これが。
Intel形式でGASにかけるのはダメなのか?
ところで、改行くらい覚えろよ。
>>387 ヒープ領域(e.g. malloc()とか)ではできた。
なので、やろうと思ったらできるね。>事故書き換え
じきに、それも出来ないのが標準になるよ。
NXビットでぐぐればわかる。
>>389サン
改行スマソ。
実際は、GASに通すコードを書いてるんじゃなくて、
逆に crash や lcrash で dis(assemble) したコードを
読んでいるのです。AT&T -> Intel なコンバータを
通すよりは直に読みたいっす。
>>391 気のせい。
NXがサポートされていたって、性能のためにどうしても自己書き換え
したいプログラムってのがある。典型的にはJava VMみたいなやつ。
だから、せいぜいスタックのコードが実行できなくなる程度。
現実的には、それだけでもずいぶんバッファオーバフローなんか
の穴をつかれたときの挙動が安全側にふられるけどね。
いや、自己書き換えを必要とするプログラムの比率は低いし、
そういうのは、現状だってXPSP2では登録して除外してるだろ?
今はまだ外部からの登録での除外が主流だけど
今後はmalloc()で確保した領域での実行も不可能になり
「実行も可能な書き換え領域のalloc」というAPIを介した領域だけになると
俺は思ってるよ。
まあ、スタックだけ実行禁止でも効果はあるけど
バッファオーバーフローを突くために必要なのは
本来、「リターンアドレスの書き換え」だけなんだから。
自己書き換えっていうと普通は既存のコードセグメントを書き換えるんで
ヒープに動的にネイティブコード生成するのとは違うと思うけど。
んで今はコードは普通write禁止だからね。
ヒープ上のコードはmallocでNXするとしたら、NXしたいヒープをアロケートする
関数が作られるだけの話。UNIXだと以前からページ単位でread/write/execの許可を
設定するシステムコールがあったりするね。もちろんCPUの機能の範囲でだけ
チェックされるんだけど。
>>395 例えば、Java VMの実行時コンパイラは、後のクラスローディングなんかをきっかけに、
それ以前にコンパイルしたコードを書き換えることがある。というか、それができることを
前提にしないとできないか、もしくは、効果の薄い最適化をやってる。自己書き換え
と呼ぶべきだと思うが?
そうなのか。知らんかったです。異論ありません。
JITは自己ではない
VMが書き換えてるのは自己書き換えとはイワンと思う。
JITはコンパイラがやってるじゃん。他者の介入。
自己書き換えっつーのは自分のコードで自分のコードを
細工することをいうのだよ。
例えば自力で自分のコードをヒープに移してそのヒープを実行するのも
自己書き換えの一種と言える。
>>400 「自力で自分のコードに移してそのヒープを実行する」ってのをやっているプログラムと、
「自分で作ったコードを生きたまま、書き換えつつ実行する」ってのの違いを分けている
のは何? JITコンパイラが自分に含まれない理由が分からん。同じプロセスの中で
同じスレッドで、プログラムの他の部分(例えば関数)を実行するのと同じレベルで
動作するんだよ。細かく言ったら別スレッドで動くこともあるけどね。
TEXTセグメントに置かれるバイナリに元からあったコードとそれが生成してヒープなりに置いたJITの結果を混同する理由は?
>>402の定義では、TEXTセグメントに置かれるバイナリを書き換える
ことを自己書き換えと呼ぶってことなんだね。
Java VMって、入力として、あるデータ(Javaプログラム)を読み込み、
データを処理して何かを出力するという、それだけのプログラムだ。
たまたま、データの処理にコンパイラの技術を使うと速くデータの処
理ができるから、コンパイルしたりする。JITコンパイラがやる仕事っての
は、データと入力したプログラムに適した形に、Java VM自身をカスタ
マイズするという仕事であって、入力したデータを変更するというもので
はない。なんで分けるの?
VMにとってそれが処理するデータが自であると思う理由を聞きたいが?
>>403 >JITコンパイラがやる仕事ってのは、データと入力したプログラムに適した形に、Java VM自身をカスタマイズするという仕事であって、入力したデータを変更するというものではない。
初耳モード。
JavaVMのやっていることは、
JavaVMという仮想マシンのエミュレータでしょ。
普通は、それだけなら、自己書き換えなんて言わない。
JIT等によりネイティブコードに変換してそれを実行するとしても
コードを生成して実行するだけで、自分自身は書き換えないね。
Java VMのJITコンパイラが生成したコードを使うのはJava VM自身であって、
そこで動くJavaプログラムじゃないってことは理解しているか?
JITコンパイラが生成した機械語ってのは、Java VMからみて、データとして読み
込んだJavaプログラムを、(仕様に定められている範囲で)ユーザおよびJavaプ
ログラムから観測できる副作用も含め、全てインタプリットした時と同じ効果を与
えるというプログラムだ。Java VMの上で実行されるJavaプログラムにとって、それ
がどう処理されているのかは完全に隠蔽されている。つまり、コンパイルされて出て
くるコードってのは、与えられたデータ専用のインタプリタみたいなものに過ぎない。
そういう意味で、JITコンパイル自体も広い意味で自己書き換えといえるかもしれない。
が、ここで話題にしたのはもっと狭義の話で、Java VMってのはVMなので、定められ
た仕様さえ満たせば、中で何をしても良いわけ。だから可能な限り高性能を目指すた
めに、JITコンパイラはコンパイルした時には安全だ(仕様通りの振る舞いが保証できる)
けれど、その後Javaプログラムの実行が進むと場合によっては、正しくない結果に繋が
りうるコードも生成する。で、その正しくない結果を引き起こしそうな条件が揃った時に、
自分のスレッド、および、別スレッドでCPU/OSからみて何の疑問もなく普通のプログラム
として実行されている最中の機械語列を、Javaの仕様的に正しく動くように、書き換えた
り、コンパイルされたメソッドそのものを全て捨てたりってことをする。これは自己書き換え以
外の何者でもないでしょ。OS/CPUからは区別されないし、Javaプログラムからも見えな
い機械語列はJava VMの自己と言うのが適当だと思うが?
解釈実行が進むにつれて
Cコンパイラの動作を自己書き換えと言うか?
言わないだろ。
仮にコンパイラが実行ファイルを生成せず、
そのままメモリ上のエントリポイントに飛ぶようになっても
それは全く変わらない。
JITとの違いは、
実行時にそれを行うか、事前に行うか
メモリ上で行うか、ファイルに書き出すか
だけ。
中間コードを用いるものや、インタプリタ系であっても
ネイティブコードを生成し、(別プログラムとせず)そのまま実行するものもある。
でも、これらを自己書き換えなどとは言わない。
>>390,391,393がJavaVMに話題が振られた理由じゃないのか?
ヒープ上のバイナリイメージを実行できるのかどうか。
JITならインストラクションポインタが展開イメージの
アドレスを指す事があるのかどうかが話の本題で、その挙動を
自己書き換えと呼ぶかなんてどうでもいい事だと思うんだが。
というか、何故こんなに必死になるのか、俺にはそれが理解できない。
自己書き換えの定義なんてどうでもいいよ
メモリケチるためにオーバーレイって手法があったよな。
実行時にcodeや静的なdataを必要に応じて補助記憶から読み出して主記憶に置くヤツ。
スレとは何の関係もないけどな!
どこ行ってもJava厨の物知らずには呆れるな
>>414 前スレあたりで誰かやっていたような。カーネルモードで
使えそうじゃないけど。
「Windows等のOSは、自己書き換えにより、メモリ上に収まりきらない
膨大な数のプログラムを切り替えて実行することを可能にしています」
>
>>416 (´・∀・`)ヘー、もうどうでもいいけど
418 :
デフォルトの名無しさん:05/01/14 17:27:37
アセンブラやりたいんですけとどうすれば良いでしょうか?
無料で揃える アセンブリ
421 :
デフォルトの名無しさん:05/01/16 16:03:18
本当にGUIは作れないのですか。
それともできることはできるけど
面倒なので誰もやらないだけですか。
結局ライブラリとかシステムコールに頼る事になるからアセンブラでやっても
面白くもなんともない。
ハ从ハヾ
i:::::::::::::::::::ヽ
l/^_,ヽ,_:;;ノ それでもやるのが
从 ・ω・) アセンブラーって奴だろ
/~ヽ、; i ^)
(⌒'し' J⌒)
(_) ⌒(_)
426 :
デフォルトの名無しさん:05/01/16 22:39:14
なんで条件分岐ジャンプはshortジャンプしかできないんですかウンコ
8bitもあれば充分でしょ。
いつの時代の話でしょう?
あ、Z80ですか。失礼しました。
VESA
430 :
デフォルトの名無しさん:05/01/17 10:24:02
8080AのRST(リスタート命令)について知りたいんですけど資料が見つからなくて困ってます。
どこかに資料がないでしょうか?
>>428 Z80の条件分岐は全メモリ空間に届くわけだが。
今考えてみると条件命令はものすごく豪華だったな。
>>430 Z80ので代用する。動きは同じだ。
条件returnは、x86に慣れると異質に感じるな。
8086を触ったときは、「何故ret zが無いんだ」と思ったが。
高級言語でスタックフレームを使うから、もう条件RETはいらないじゃん、
という発想だったのかも。
そう言えば8080用のCコンパイラはヤケクソのやっつけ仕事みたいなことやってたね。
C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 C9
ハンドアセンブルから20年たってもC9で反射的にRETを思い浮かべる自分が嫌だ。
やっぱりさあ、マシン語といえど、人間に読みやすい形じゃないと厳しいよな。
ia64の読みにくいこと読みにくいこと・・・・
Z80のマシン語なら読めたけど
16bit以上は俺には無理だな。
68000は割りと読みやすかったけどね。
439 :
デフォルトの名無しさん:05/01/20 14:28:10
Powerも読みやすいよ。書きやすいし。
IA32はレジスタ少ないから読み書きしにくい。
中の人は沢山持っててリネーミングしてるくせにさ。
IA32eでしがらみのないレジスタが11本になるのは今までと比べれば夢のようだ。
64ビット化はレジスタ増加のおまけ。
アセンブラ(アセンブリ言語)は読めるけど、マシン語は読めないなぁ。
レジスタって1本2本って数えるの?
自慢したがりはね
レジスタに「本」以外の数え方なんて聞いたこと・見たことないけど?
2進数で
101010100010010011111
とか書いたら棒だから本なんじゃねえ?
,-――――――-.
/ |
/ |
/ |
l" JECXZ l
,、_lー-―――――‐--、/l
i ト、ミミ ,r‐- 、``'ニ=‐、.彡リ.
ヾ,iハ゛.´ _,,、_ i.; _,. ` 彡'i)
`、j,' `゚''´:.ノ i::<・ゝ) .ハン
i, ` ,、/ i_ `` ,r'
,r〃'i ,r'ヽ、 _,〉 /.
/i:ト、;;i, ミ=_‐_-, 'i /ヽ__
r-‐'´i::::ハ;;ヾ、‐‐-、 ノ´/i:::'i`i‐- 、_
::i' .l:i 'i::::i ヾ;;`‐---‐'i':/ i、 'i::! i::::i `
:i' i:| !:::l _,r.、;;;;;,r''´ヽi. ll::i i::i l:::'i
24319002_j.pdfだと『個』だな。
多寡はともかくどちらも使うだろ。
レジスタの個数 の検索結果 約 245 件中 1 - 10 件目 (0.39 秒)
レジスタの本数 の検索結果 約 73 件中 1 - 10 件目 (0.38 秒)
直列のワンセットだから棒のイメージが強いんでそ
俺は「個」とも言うけど
パイプラインはその名前のとおりに線のイメージがあるので「本」で数え
レジスタは箱、ボックスのようなイメージがあるので「個」で数え
へ
普通はレジスタはチップの足みたいなイメージで本と数えると思う。
でも最近のやたら沢山レジスタがあるものとか、SPARCのレジスタウィンドウ
の話をするときとかはもうどうでもよくなってくるので個でも違和感ないかな。
個と数えるのは最近のソフトウェアの知識しかない人に多いという感じはする。
453 :
デフォルトの名無しさん:05/01/23 05:57:37
const DWORD pMm[2] = {0x00FF00FF, 0x00FF00FF};
下の一行の処理にかかるクロック数を図ると1万クロックぐらいかかってました。
なぜでしょうか??
(環境:Pen4 winME VC++6)
_asm{
movq mm6, QWORD PTR pMm
}
アセンブラでソースを吐き出すと↓
movq mm6,mmword ptr [ebp-2Ch]
ユニット初期化クロック
ユニット初期化クロックはどういうときに発生するんでしょうか?
そもそもマルチタスクOSで正しいクロックなんて計りようがない
そういうときこそアセンナヤ
急がば回れ
>>456 カーネルモードで割り込み禁止して測定すりゃいい
>>453 QWORD境界を割ったりしてないか?
あと、DirectXサーフェイスをじかに触ったときの話だったりしないか?
>>455 初めてMMX命令を実行したときじゃないのか?
以降のMMX命令は、普通になると思うけど。
> いまどきのアセンブラの教科書
> 『いまどきのアセンブラプログラミング』が、特定ゲームの解析に終始したのに対し、(ry
自覚があるならアセンブラと銘打ってあんな本売るなよと思った。
そして目次を見たら、相変わらずチートが目的だったので呆れた。
作者が作者だもんなぁ・・・
目次を見ても前著との違いが判らん
地雷探知機が作動しますた
はじめて読む8086>>>>>>>>>>>>>∞>>>>>>>週刊アスキー>>>>>>いまどきのアセンブラ(ry
>>465 その順位はいいとして、
何故2番目が週アスなのかw
80年代のSuperASCIIはお勧め
いまどきと言うならこんな屑みたいな本ではなく、
新しいCPUのレイテンシやペアリング条件、
メモリキャッシュの最適化ノウハウについて書かれた
インテルのPDFのような本がほしい。
インテルのPDFを読めばいいじゃん
>>469 P4しか載ってないし、実例で話をしないから抽象的で
どんな条件の時にどの程度の効果が見込めそうなのか
掴みにくいんだよあれ。
>>462 他スレからコピペ
『いまどきのアセンブラプログラミング』でもDigital Travesiaの解説を
丸写ししているページとかあったし、今度は解析系サイトや同種の本の
パクリで固めているんじゃないの?
橋本和明本人が書いたらどんな内容になるかは、『いまどきのアセンブラプログラミング』で
実証済みだし。というか、この人プログラミングや解析の説明は向いてないよ。
この本を買うぐらいなら『クラッカー・プログラム大全』や『解析魔法少女美咲ちゃん』の
続編を待つよ。
x86アセンブラってもはや痛いヲタの解析にしか使われてないんだな。
>>462 http://d.hatena.ne.jp/yaneurao/20040528 っていう経緯があるから、「いまどきのアセンブラの教科書」は
逆恨みで解析本「解析魔法少女美咲ちゃん」の内容をパクッてくるでしょうね。
あと、ソフト解析の解説は解析サイト「Digital Travesia」からのパクリでしょう。
自分じゃまともな解説書けないライターだし、これまで彼が執筆した本を読むと
パクリを何とも思っていないようですから。
それにしても、この橋本和明って、ゲーラボのライターからも馬鹿にされているそうで。
パクリに頼るしかないライターって・・・
>>474に同じ。ネタがワンパターン化してないか?
>>459 QWORD境界を割ってるかどうかはわからない。変数の定義はconst DWORD pMm[2] = {0x00FF00FF, 0x00FF00FF};
システムメモリをいじる処理なのでDirectXのサーフェスとかは関係ないと思う。
>>460>>461 ソースを消したので再現することは出来ないけど
ブレークポイント設定して何度か調べたときは常に同じぐらいのクロック数がかかってた。
あと、新しくWin32コンソールアプリのワークスペースを作って
>>459をコピペして実行したときも同じ分だけクロック数がかかってた。
なんか特別な環境でのみ起こる事象っぽいし、再現できないのでもう原因を追求するのは無理っぽいなぁ。
皆さんどうもでした。m(_ _)m
>>478 ページアウトされてるメモリに読み書きしようとしたのでは?
サブルーチンが複数階層で呼び出される場合に呼び出されるサブルーチンで最初に行うべき処理は何でしょうか?
そして、何故そのような処理をするのでしょうか?
pusha
なんとなく
>>478 mmxレジスタに転送する命令を2回続けてやって、クロック数を測ってみた。
1回目は数千クロックで、2回目は84クロックだった。
つまり、
>>454や
>>461ということだろう。
imul eax, 3
と
lea eax dword ptr[eax+eax*2]
どっちが速いですか?
等価でないぞよ
キャリーフラグのことですか?
スクリプト言語の掛け算で使うので桁上がりとかは無視してください。
符合が関係あるならダメでしょうけど。
素直に考えるならleaだが・・・・・
PIIIまでならまずleaでよい。
P4はシフトが遅くなったのでスケールインデックスがある場合はleaを避けたほうがよい。
ただし、コードを短くすることが重要な場合は leaの方が良いことも有る。
でたP4厨
自分自身でP4使って無くても利用者はP4が一番多いんだからしょうがないじゃん
P4固有の処理をするかしないかの問題で、ユーザ数とかはあまり関係ないような。
RUNS GREAT ON PENTIUM 4 HT
このロゴが欲しければ
よく分からんが、488がアホ
うん?呼んだかい?
ところで、ここのところ学生が抽象思考ができなくて困ってる
がが
みの「ざんねん!」
EM64TのSAHFとLAHFがいつの間にか
Exceptions (All Operating Modes)
None.
500 :
emulator 8086:05/02/01 13:46:41
整数の切り上げと切り下げをemulator 8086でやる答えをもらったのですが、
ちょっと理解できないところがあります。コードは以下の通りです。
#make_COM#
ORG 100H
start:
mov [200H],al
mov al, data
and al, 0Fh
mov bl, data
shr bl,4
cmp al, 8h
jl end
add bl,1
end:
mov al,bl
mov [201H],al
ret
data db 68h
この問題では68Hをテストして答えが7になるのですが、
最初にdataをalに移した後、なんで0fHでandするのか分かりません。次に、
なんで、dataを右に4ディジットシフトするのか分かりません。最後に、8hと
比較するのも分かりません。どなたかよければ、ヒントください。
てか自分で2進に直してノートにでもトレース書いてみればすぐ分かると思うんだけど
整数の切り上げと切り下げとは何ぞや?
>>500 整数って言ってるけど、基数は何なのか。何進数なのか。
次に、mov って書いてるが、それは移動なのか。コピーなのか。
次に、0Fh で オペランドを and すると、一般論としてオペランドはどのように変化するのか。
次に、「4ディジットシフト」なのか。
次に、8h という数には特殊な意味があるのか。
次に、出力は 7 なのか、 7h なのか。
次に、理解できない程度は「ちょっと」なのか。
505 :
emulator 8086:05/02/01 15:13:36
>504
if you don't know shit about x86, stay back and be quit, fuckn' asshole.
てかトレースしろやー
507 :
デフォルトの名無しさん:05/02/01 21:07:42
ウァセンブラーって
何で桁あふれとか気にしないのですか。
行ってみればバッハオーバーランじゃないですか。
風呂の水が溢れたようなものじゃないですか。
もったいないじゃないですか。
気にしてるよ。
お前がフラグ見てないだけ。
わざと溢れさせて計算結果を合わせる
そんな力技が気に入らない
なんか結果オーライみたいなのは肌に合わない
「とりあえず8bitで合ってりゃいいんだよ」
leaって使い方いまいちわかんねー
基本はアドレスをとるだけなんだけど、簡単な計算に応用できるので便利。
x86のメモリオペランドで使える計算を外部から使えるようにするオペコード、
みたいなもんだ。
80386が出て最初にこの命令見たときは笑ってしまった。
あ、286だったかな?
それまでも命令があることははあったんだけどあまり使わなかったような。
あーmov,add,subでアドレス計算する肩代わりなのか
わかりますた
アセンブラで組む時はx5やx9で使うかもしれないが
使用機会が最も多いのは、高級言語でスタックフレーム内の変数のアドレスを取る時。
例えば
main() { char str[100]; ... ; printf("%s", str); }
など。
はぁ?
>>500は8bitの16進数で0.1h(こんな表記法はないけど)の位を七捨八入(wするコードだね。
alで端数を求め(andは端数だけ抜き出すため)、blで整数部(shrで切捨て)を求める。
cmpして端数が8(16の半分)以上だったらblに1足して切り上げにする。
4つシフトするのは、dataの小数点位置が4bit目というこのコードの仕様。
ただ本当は、このコードは何進数かを決めていない。別に2進数の零捨一入でもいいし。
比較の8は、この表記(dataに入れる数の)での1/2であるだけ。
つうか
>>500は68h(6.8h)を丸めて7hていう仕様を理解してる?
いま519がいいこと言った!
煽って弄って甞めてしゃぶってばかりいる
俺とは大違い (;゚∀゚)=3 ハァハァ
>>507 あふれてもいいから使いやすいんじゃないか。とマジレスしてみる。
525 :
質問。:05/02/07 06:07:34
#make_COM#
ORG 100H
Start:
mov al, N1
mov bl, N2
mul bx
mov cl, N3
div cx
shl ax,1
ret
N1 db 0ABh ;3.5
N2 db 017h ;5.3
N3 db 040h ;4.4
これ、N1×N2/N3の式を計算するコードなんだけど、何故に故最後に、AXをレフトシフト
してるのでしょうか。
526 :
質問。:05/02/07 06:11:16
連続すいません。divをcl registerでやると違う答えが出てきます。
何ででしょうか?
>>525 その数値表記方式は一体何者なんだ?
何故0x40が4.4なのかがわからん。
>>525 その数行だけで完結しているとは思えないので、
呼び出しもとで ah, bh, ch に相当する部分が、
どういう風に使われているか
調べないといけないんじゃないの?
※ax = ah*256 + al
bx = bh*256 + bl
cx = ch*256 + cl
529 :
デフォルトの名無しさん:05/02/07 07:28:40
ret
どこへ行くんだろう・・・
IA32のRDMSRを呼び出せるまでのアセのコードがわかりません
532 :
デフォルトの名無しさん:05/02/07 14:18:50
>>526 これは小数の掛け算、割り算のコードかな?最後のHex数値の横の数字は小数点の場所かな?
そうだと仮定すると、cl registerは8bitsでcx registerは16bitsだよね。ということは、div
(割り算)の後の答えは8bits以上になるので、この場合、cx registerを使わなければ、ならない事
になります。
533 :
デフォルトの名無しさん:05/02/07 17:05:22
534 :
デフォルトの名無しさん:05/02/07 17:09:58
IA32のRDMSRを呼び出せるまでのアセのコードがわかりません
535 :
デフォルトの名無しさん:05/02/07 17:13:32
IA32のRDMSRを呼び出せるまでのアセのコードがわかりません
536 :
デフォルトの名無しさん:05/02/07 17:16:09
IA32のRDMSRを呼び出せるまでのアセのコードがわかりません
537 :
デフォルトの名無しさん:05/02/07 17:24:03
IA32のRDMSRを呼び出せるまでのアセのコードがわかりません
539 :
デフォルトの名無しさん:05/02/07 17:38:49
>>538 その本は立ち読みしました
たいしたことかいてませんよ
540 :
デフォルトの名無しさん:05/02/07 17:52:53
IA32のRDMSRを呼び出せるまでのアセのコードがわかりません
542 :
デフォルトの名無しさん:05/02/07 18:06:32
>>541 つまんないからもういいって
あんたがなんにも知識のない役立たずってことはわかったけどさ。
IA32のWRMSRを呼び出せるまでのアセのコードがわかりません
>>592>>531 ORG 100HからしてMS-DOSのCOM型だと思う。
そうだとすれば、0000Hへ飛んで、INT 20Hを踏んで、プロセス終了。
SSの最初って0がPUSHされてんの?
548 :
デフォルトの名無しさん:05/02/08 09:01:56
IA32のWRMSRを呼び出せるまでのアセのコードがわかりません
>>525 shlは、答えをaxに小数点位置11.5で入れるためだろう。
>>532 小数点の位置だとよく気づいたな。よくある表記なんだろうか。
div clとすると、(商が8bitに収まった場合)剰余がahに格納されて邪魔というのもある。
8bitに収まらなきゃエラーが出るからいいが、なまじ収まってるとデバッグが大変だ。
ahやbh、割り算に使うdxも、このルーチンに入る前にゼロでないといけない。
バグの温床みたいなコードだなw
俺もこのレベルの潜在的なバグによく悩まされたものだ。
551 :
デフォルトの名無しさん:05/02/09 13:43:42
IA32のWRMSRを呼び出せるまでのアセのコードがわかりません
あ、そう
>>551 俺知ってるよ!
でもここでは言えないなあ。
そういや来週のワラっていいとも変人コンテストに出るから
君も出なよ。
そこで落ち合おう。
>>551 俺も知りたいのだが、あんたのせいで
誰も教えてくれなくなちゃったよ。鬱だ。
だって、WinかウニックスかリアルモードDOSかわかんないもの。
>>555 Windowsです
GASかIntel形式どちらでもいいです
CPUIDで済ませられないの?
>>557 わからんならとっとと死ねよ
おまえがCPUIDを知ってるえらいこちゃんなのはわかったからさ。
チロルチョコくってねなさい
うん、寝る。残念だな。芥川龍之介・杜子春を読め
>>558 お前リングレベル、コールゲート、知ってる?
知ってるなら教えるの楽なんだが
>>560 だいたい知ってる
てかIntelのPDF上中下巻は暇な時読んでる
RDMSRはレベル3からどう呼ぶかさっぱりわからん
アプリからリングレベル0には突入できないというの分かってる?
OSの意味無くなるからな
デバどら作れルカ?
やっぱDDKいるのかよ
探すの面倒だな
んでどうするんだよ
>>562 おまえなにもしらんじゃねーの
情報小出ししてさ( ´,_ゝ`)
ごめん、知らない、じゃあねー
>>562 お前日本語読めるか?
俺は
「IA32のWRMSRを呼び出せるまでのアセのコードがわかりません」
と書いてるんだ
レベル0とかデバドラとかいいから
コアのアセコード教えろっていってんだよ。
ああ在日にはわからんか。
貴様みたいなやつにウイルス作られたらたまったもんじゃない、市ね
567 :
デフォルトの名無しさん:05/02/09 15:54:28
うるせーお前も名カス
>>562 ドライバでなくてもできるよ。WinNTからI/Oポートを直叩きとか。
なんか、ここには基地外ファームウエアプログラマがのさばってる
見たいですねw
>>569 トラップ付でね。w
一般保護例外をキャッチしてエミュレートしてるだけ
そもそもin,out命令自体が特権命令だしw
573 :
デフォルトの名無しさん:05/02/09 16:24:52
そもそもin,out命令自体が特権命令だしw
574 :
デフォルトの名無しさん:05/02/09 16:27:07
Windows2000SP4でIpentium4のWRMSRを呼び出せるまでのアセのコードがわかりません
gccでもclでもいいです
バカか?リングレベル0で実行するだけだろうが?
Windows2000SP4
実行環境:レベル3から
pentium4のWRMSRを呼び出せるまでのアセのコードがわかりません
gccでもclでもいいです
アプリケーションプログラムからは不可能
そもそもWin2000を動かす意味無いし、
だな、変にSPとか指定されても困っちゃう。
アプリからOSを操作されたら嫌だよ
580 :
デフォルトの名無しさん:05/02/09 18:06:14
Windowsアプリかドライバからリングレベル0にいけないってことなの?
そりゃねーだろ
HDDTempとかマザーボードのベンダが出してるシステムツールは
あきらかにレベル3じゃねーだろ
不可能じゃネーのやるんだよ
>>580 バカじゃないの?HDDてmpは直接ハードにアクセスしてネーよ、ボケ
わかんない奴だな、勝手に決め付けるなよ
>>581 smartだろ
べつにいいよそんなの
sysenterでもなんでもいいからRDMSRが呼べるまでのコードをおしえろってんだ
そ
>>582 分かってんならあきらめろ、
なんとか.sysでも読む位の甲斐性見せろよ、ぼけ
DScalerとかBPFの様にデバイスドライバを抱えているソフトのソース読めば、
自前でデバイスドライバ用意してリング0であれこれするのがいかに簡単かすぐわかるよ。
こんなとこ読み書きしてないでちゃんと根詰めて2、3日コード書けば出来ちゃうよ。
こんな態度悪のやつがいくら根詰めたってできるわけねーだろがwwww
CLIとかSTIとかコントロールレジスタに書き込みできたりする。
青画面で死んでしまうがなw
>>571 ええっ、そうだっけ?一般保護例外をキャッチできるなら青画面にはならないよ。
カーネルモードでぬるぽしたら青画面で死亡したんだが。
>>586 一般保護例外でエミュレートできない奴はブルースクリーンで
ごまかす、それだけだよ。リアル86モードでブートして、ページテーブル
セットアップして、32ビットモードに入って、さらに、OSテーブル
ロードして・・・分からんかな、最近のガキはOSの意味も知らんか?
588 :
デフォルトの名無しさん:05/02/09 22:39:17
あー使えない痴症がきたよ
さしずめスパーPGになったつもりの大学生か?
今はリングレベル3からRDMSRを呼び出す話であって
レベル0からbootする話じゃないんだよ。
そんなもんいくらでも資料あるだろ(minix.linux、はじめての486)
そんなの自慢するなんて(ップ
日本語も理解できない
自分の知識はひけらかす
本当に社会のゴミだよ
>>587
>>588 ヒントやろう、XPだがなマイコンピュータのプロパチー>はーどうぇあ
デモ穴があくほどみろボケ
明太とか名塚C
歴史は繰り返されるのか・・・
>>591 キタ━━━ヽ( ゚∀゚ )ノ━ヽ( )ノ━ヽ( ゚∀゚ )ノ━━━!!
$ ./CGATEAPP.EXE
Selector allocated = 120
cr0=8001003b, cr2=404043, cr3=21fb9000
Selector allocated = 118
cr0=8001003b, cr2=404043, cr3=15de5000
FreeCallGate failed, CallGateSelector=118, rc=1
でもこれDDKでドライバ作れってことか?
ふつーにソース書くだけでいいみたい。DDKは使ってない。
実行時にGALLGATE.DLLとCALLGATE.SYSさえあれば大丈夫。
例によってAdministrator権限じゃないと動かないけど・・・
596 :
デフォルトの名無しさん:05/02/10 13:54:15
>>595 いや違うだろ
DLLとSYS作るのはDDKいるんじゃないか?
僕ちんはコールゲートを呼び出すアプリを作りたいんじゃなくて
コールゲートを呼び出す方法を知りたいのよ
それに
>>591には
GALLGATE.DLLとCALLGATE.SYS
のソースがありません
ring0.asmがそれらしきソースではあるけど。
???コールゲートを呼ぶって?
far Callすれば委員でない甲斐?
いや、dllとsysは作る必要がないってば。
dllでコールゲートを作って、far-callでring0に入る形になってる。
sysはdllの方で読み込むから、DDKを意識する必要がないってこと。
dispeでcgateapp.exeを逆汗するとring0.asmのコードが入っているはず。
599 :
\__________________/ :05/02/10 17:29:43
V
, v、ヘM 'リ"ノンミ/ソMv、
ソVvミ ヘ/Wv彡vV/ ミ∠ミ::
ミミ _ ミ:::
ミ 二__, --、r'"___、 ヾ ト、::ヽ
ミレ'"~ ,-,、 ! ! ' '" ̄ .ノ \ヾ:、
K/ー'~ ^~_/ ヽミ:ー‐‐'" ヽ i.
!〉 ー― '"( o ⊂! ' ヽ ∪ Y
i ∪ ,.:: :二Uニ:::.、. l i
.! :r' エ┴┴'ーダ ∪ !Kl
.i、 . ヾ=、__./ ト=
ヽ. :、∪ ゙ - ―- ,; ∪ ,!
\. :. .: ノ
ヽ ヽ. . .イ
. `i、 、::.. ...:::ノ ,∧
( ´,_ゝ`) で、何?
狂ったんじゃないの?
低脳プログラマーのやつ
しょせん、向いてなかったんだよ
WinNTでコールゲートはまずいような気がしたが。
ring0に入ったら、すぐに割り込みを禁止した状態でTRAP_FRAME構造体に
必要な値を入れなければならなかったはず。
コールゲートだとring0に遷移した直後は割り込みが禁止されていないので
たとえTRAP_FRAMEに値を入れようとしても、その間に割り込みが入れば
システムは落ちるよ。
DDK(送料15$くらい、CD-ROMはタダ)手に入れて、サンプルのcancelあたりを改変して
作ったほうが早いと思うけどなー。
俺はこれで遊んでいるけど。
>>602 _KTRAP_FRAME
>>602 CALLGATEという名前はついてるけど、SYSファイルが付いているってことは
dllがDeviceIoControl でメモリ位置渡してドライバ呼んで、asmで書いたコード
はちゃんとドライバのコンテキストで真っ当に実行されるんじゃないのかな・・・
x86でincとdecはどっちが速いんですか?
incとdec
最近のクソガキには「リアルモード」は通じないのか?
クソガキと言っても精神年齢のことであり
肉体の年齢は30過ぎてずいぶん経つようなクソだが
>>608 最近になっても糞GNOMEマンセーだからなwwwwwアヒャ
V25
x86のあっせんぶらが書かれたソースを見ていたら、
asm("rep; nop");
ってコードがあったんですけど、
repはストリング命令等で繰り返しで使用する場合がある事は知っているし、
nopも意味はわかるんですけど、
今回のコードがどういう意味を持つのかがわかりません。
これってどういう意味があるんですか?
612 :
デフォルトの名無しさん:05/02/13 19:06:12
nopを繰り返すんだよ
そんな事もわからんのかボケ
613 :
デフォルトの名無しさん:05/02/13 20:27:21
でっきるっかな
でっきるっかな
はてさてふむー
「nopさーん」
ウホ
ウホホホホ
おやおや、ゴンタ君は今日もおおはしゃぎ
>>612 やはりそうですか。
だとしたらCXレジスタが影響しますよね?
そのコード周辺でCXを維持ってるように見えないので
何か別の用途で使用するのかと思ったのです。
ちなみに自分はボケでありません。
ようやくその意味がわかりました。
やはり特殊な使用方法でした。
最後に
ありがとうよ>612のボケ野郎。
おまえこそ間違ってるんだよアホが。
なんだこのスレの住人。
人を馬鹿にすることしか出来ないのか。
もういいです。二度と此処へは来ません。
なーんちゃって。反省してま〜す☆ミ
この中に偽611がいます。さてどれでしょう?
全部真正611
全然関係ないけど、
>>621の記事見て思ったんだが
HTって別プロセスのスレッドを同時に実行できるの?
同じプロセス内の2スレッドだけ同時に実行できるんだと思っていたんだが。
プロセスを切り替えるには、コストかかりすぎて逆に遅くなるような気がする。
おしえて、エラい人。
623 :
デフォルトの名無しさん:05/02/14 14:33:50
アセンブラ命令って一応言語かなと思っていたら、
内部レジスタのソース、デストのアドレスだった。
>>622 CPUはプロセスとかスレッドなんて知らないよ。
ただ、2つの命令ストリームを実行しているだけ。
>>622 MMUのアドレス変換テーブルをHTの2つのコンテキストで共有できれば
うまくスケジューリングされたときには実行効率上がるかもしれないけど、
OS側のスケジューラを変更しなきゃならないし、非マルチスレッドAPは
せっかくのHTコアを1スレッドで占有しちゃうしで面白く無いと思う。
626 :
デフォルトの名無しさん:05/02/14 16:52:35
よく分からんです。
;ASCII文字列を入力して以下のデータプロトコルに従って10進小数点数に変換する
;C言語のプログラムを書くという問題です。 もし誰か分かる方いたらお願いします。
1バイトめ: 小数点の前のの桁数 (非パック化BCD)
2バイトめ: 小数点の後の桁数 (非パック化BCD)
3バイトめ: 最上位数 (非パック化BCD)
4バイトめ: 最下位数の次の桁等 (非パック化BCD)
9バイトめ: 最上位数10進数 (非パック化BCD)
N+1バイトめ: 最下位数の次の10進数等 (非パック化BCD)
↑あちこちでよく見るレスですね
>>622 各論理プロセッサは、個々にCR3をもつ。
これでわかるでしょ?
630 :
デフォルトの名無しさん:05/02/15 02:29:56
わからん
>>630 プロセスとスレッドの定義から勉強した方がいいんじゃない?
論理コアが複数あるからこそ切り替えがいらないのだが。
切り替えでしているのはレジスタの退避とか。
HTが物理2CPUより優れている点として、キャッシュの共有がある。
これは同プロセスのマルチスレッドで役に立つ点。
>>632 現在アナウンスされてるCMPではキャッシュ共有モデルはなかった記憶だけど、
L2共有程度でじゅうぶんなんじゃない?
パイプラインにあわせたタイミングで動くL1キャッシュは、共有構成にすると
実質的に実行ユニット-キャッシュインタフェイスを増やさないといけなくなって、
ストールの機会が増えてしまう。
ちなみにP4みたいなウンコーアーキテクチャだと、SMTでL1キャッシュ(TCも)が
共有されても、実行ユニットが先に埋まっちゃうよ。むしろ片コンテキストにて
L1キャッシュミスが起きた場合のストール補填に、SMTは役立っている
…というのが、俺の観測結果。
GNU asなんですけどラベルのアドレスをイミディエイトで取得する事って出来ますか?
こんな感じの事をしたいのですが…
mov al, (0xFF & FOO)
mov ah, ((0xFF00 & FOO) >> 8)
…
FOO:
jmp …
#axにFOOのあるアドレス16bit分が欲しい
GASってoffsetねーの?
636 :
デフォルトの名無しさん:05/02/15 20:15:35
スキャンコードを取りたいのですが
なんぞええ手はありませんか。
20代がカラオケで「哀しい色やね」を歌うことはそんなに変か?
>>634 a0 7f 00 00 00
mov 0x7f,%al
b0 7f
mov $0x7f,%al
この2つの違いが分からなかったら青唐辛子ケツに突っ込んで氏ね
>>636 DOSかWinで分かれるところなので、まずはぐぐれ。
>>632 > HTが物理2CPUより優れている点として、キャッシュの共有がある。
複数CPU間でのキャッシュの共有は普通にある。
WindowsだとAltキーが取れねえ
>>638 例が間違っていてスマン。変に慣れていないx86で書くもんじゃないな
純粋にアセンブラにアドレスを展開させる方法が知りたいんです。
今書いているのはAVRなんですが
ldi XL, (0xFF & FOO)
ldi XH, ((0xFF00 & FOO) >> 8)
add XL, R16
ijmp
FOO:
rjmp FOO_1
rjmp FOO_2
rjmp FOO_3
…
みたいなことがしたいんです
>>641 任意の .o ファイルを objdump --disassemble してみれ。
>>640 ナイフの先をAltキーの下に差し込んでグイっと起こす
>>633 >むしろ片コンテキストにてL1キャッシュミスが起きた場合のストール補填に、SMTは役立っている
>…というのが、俺の観測結果。
自分もそう思ふ。
キャッシュが共有じゃないという意味がわからない。
キャッシュは1つなんだから2スレッドが同じキャッシュ使うんじゃないの?
ipを得たいのだが・・・
mov ax,ip って無理ですよね
call→popってのが普通ですか?
ラベルを使えばいいのでは?
動的に取得する場合はcall/popしかない
rip相対アドレッシング使えば?
動的に取得する必要なんてあるの?
必要なくても見てみたいのが男のろまん。
それを否定したらこのスレの意義が半分はなくなると思うがな。
ロマンと単なる無駄の区別がついてないガキ。
みなさん、espをいじったりする?
いつもいぢってまふ
いつも僕のオカズです
昔はspを変更してコルーチン作ってたけど・・・・そうすればIPも結果としてret命令で切り替わるから・・・
でもなあ
最近勝手にデータ領域にSP変更したらOSさんが文句言うもんだから使えなくなった。
>>659 よくわからんが、手続きをちゃんと踏めば大丈夫だろ
いい加減なもの作ってるからそうなる
ホントは使えない事はないんだよ。
スタック領域を大きくとって、スタック領域を分割して使えばいいんだけど
こうすると、当然1スレッドでこのテクニックを1個しか使えないし、
だったら多少重くてもOSの提供したスレッドの機能を素直に使っちゃえとなるわけで・・・
663 :
8086 emulator:05/02/20 02:37:15
mov ax, 400h
だと、400hをax registerにロードできるんですが、
mov ax, data1
data1 dw 400h
だと、ax registerが0000hになってしまいます。どなたかこの二つのインストラクションの
違いを教えてください。お願いします。
ds
の初期化
mov ax, data1
org 0400h
data1 dw 400h
667 :
デフォルトの名無しさん:05/02/20 13:44:39
ここは気難しい人達が沢山いそうですね〜
知るべき範囲が狭いから、極端に完璧に走れるわけ
669 :
デフォルトの名無しさん:05/02/20 14:46:26
>>667 俺もなかなか気難しいぞ
気をつけろよ
jmp anywhere-anytime
670 :
デフォルトの名無しさん:05/02/20 16:38:23
671 :
デフォルトの名無しさん:05/02/21 04:32:27
ORG 100h
start:
cld
mov ax,02000h
mov ds,ax
mov bx,04000h
mov es,bx
mov ax,400h
mov si,ax
mov cx,1024h
increment:
mov bx,400h
mov [si],bx
lodsw
inc bx
loop increment
mov cx,512
mov si,0
complement:
mov si,0
mov ax, [si]
not ax
add ax,1
mov si, ax
lodsw
loop complement
こんなASMコードを書いたんですが、セグメントレジスタに入れた2つのWORDの
データを足して、エラーチェックしなきゃいけないんですが。どうやって
エラーチェックをしたらいいのかわかりません。お願いします。、
何のエラーだ?
>671のエラー
674 :
デフォルトの名無しさん:05/02/21 06:25:02
>こんなASMコードを書いたんですが、セグメントレジスタに入れた2つのWORDの
>データを足して、エラーチェックしなきゃいけないんですが。どうやって
>エラーチェックをしたらいいのかわかりません.
あのデータを足したその答えと2's complementをしてるんですが、
その答えのエラーチェックです。
釣り認定です。おめでとう。
LEA EAX , [EBX+10]
MOV EAX , EBX+10h
下はおかしな表現だけど、意味としては同じですよね?
その前にエラーになると思うんだが?
>>676 前者はオフセットが10、後者はオフセットが10h。
>>677 それは承知の上で意味的に同じかどうかだけ聞いているんだろ。
無いアドレッシングモードを議論しても意味無いだろ
話にならん
プ
LEA EAX , [EAX+10h]
ADD EAX , 10h
下はおかしな表現だけど、意味としては同じですよね?
プっ、違うよ
フラグ変化
上もだめだろ
VC6の吐く.objのフォーマットが知りたいんですが
資料何かありましたらお願いします
たしかCOFFに準じたものだったとおもう。
Cygwin の objdump で喰えたりするので、試してみれ。
687 :
デフォルトの名無しさん:05/02/21 21:13:23
LEA EAX, [EBX+10h]
MOV EAX, EBX
ADD EAX, 10h
この二つのメソッドは同じと考えていいのですね?
フラグを除けば
「メソッド」( ´,_ゝ`)プッ
アセンブラってオブジェクト指向ですか?
メソッドワロス
CPUというオブジェクトに対するメッセージと考えりゃOOPだな。
かわいそうなお兄さんがいっぱいいるが、くじけず頑張れ
でも「メソッド」はいただけないなあ
MOV EAX, EBX
ADD EAX, 10h
ADD EBX, 10h
MOV EAX, EBX
この二つのメソッドは同じと考えていいのですね?
>>694 ワロス
というか全然違うじゃないかミ,,゚Д゚彡ふさふさだぞゴルァ!
何が同じなんだかw
命令コードは絶対に違うよ
すべて笑われるという機能が同じ
NOP
JMP $
この二つのメソッドは同じと考えていいのですね?
質問。
例えば、
unsigned char foo[10];
と連続した領域確保して、
memset(foo,0,sizeof(foo)); //0で初期化
上のような命令実行することは、386のアセンブラで書くと、
mov esi,foo
mov ecx,10
xor eax,eax
cld
rep stosb
と等価なんですか?
ごめんなさい。
×mov esi,foo
○mov edi,foo
に訂正します。
ここんとこ、等価ですか質問してる人は嵐なの?
>>702 最近のコンパイラなら
xor eax, eax
mov [esi], eax
mov [esi+4], eax
mov [esi+8], ax
位しそうな気もする。
手元のgccだと…
movl$0, %eax
movl$_foo, %edi
cld
movl$2, %ecx
movl$0, %eax
rep
stosl
movw$0, _foo+8
だってさ。
等価学会の発表会
>>702 memsetの実装やコンパイラに依存。
てめえで調べろ。
ありがとうございます。
右手でするのと左手でするのとでは等価ですか?
>>710 環境依存です
環境によっては左手で子供の頭なでたりしたら親に打ち殺されたりします
こんばんわ
「いちばん最初に」等価質問をした者です
皆様色々ありがとうございました
白旗揚げると皆殺しの合図
>>712 等価交換の原則に則り、礼だけじゃなく
気持ちを形に、っていうか…なあ?
そう言えば、塩沢トキって見ないね最近。シンだ?
塩沢ときで検索するといいよ
>>719 大音量で音楽聞いてたからびびった
そういう行為って訴えられたりする事ってあるのか?
画像だけならよかったが声はまぢびびった
勘弁してけろ
>>720 あるわけ無い。自己責任。
マならリンククリックの責任くらい分かるだろ。
>>721 そうか
法律詳しくないんもんで(><
さんくす
>>720 例えばpdfのリンクを開いてPCがフリーズし、
大事なデータが保存できなかった。
保証されるわけが無い。
pdf開くときってよくフリーズするんだよね。
最近はビビって開けないよ。
公開されているページは、見る方も見られる方も自己責任。
見て文句も言えないし、見られて文句も言えない。
wwwの基本ルールですよ。
公開してるサイトに苦情は言えるかもよ。
>>719のリンクは誰が見てもある程度同様の効果があるし、
それを意図した作りになってる。
後に出るダイアログのメッセージも悪質。
ISPに訴えたとしたら多少効果はあるはず。
作者には責任があるけど、
リンク張った奴には責任ないよ。
>>729-730 このアドレスですよね
61.194.13.120
InfoSphere (株式会社NTTPCコミュニケーションズ) (InfoSphere (NTT PC Communications, Inc.))
SUBA-029-377 [サブアロケーション] 61.194.13.0
有限会社 グローバルホステリングサービス (Global Hosting Service)
GHS-HOST0001 [61.194.13.112 <-> 61.194.13.127] 61.194.13.112/28
スレ違い
得体の知れないライブラリやオブジェクトファイルはリンクできないのはあたりまえだろ
てか、事前にソースみることぐらいできんのか?
<META content="MSHTML 5.50.4807.2300" name=GENERATOR></HEAD>
<BODY oncontextmenu="return false" onselectstart="return false"
ondragstart="return false" bgColor=#000000 leftMargin=0 topMargin=10
onunload='alert("この画像を見た人は今から36時間以内に呪われます")' marginwidth="0"
marginheight="0">
<embed src="../03/g.wav" width="1" height="1">
</embed>
<TABLE height="100%" cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
あほくさ
>>735 アホっていう事ないじゃないか(><
ほぼ最大音量でBGM流しながらやってるからびびるんだ
>>736 だから、いきなり開くからあほって言われるんだってば。
ダウンロードしてソース見てみるくらいしなさいよ。
だから、スレ違いなんだってば!
アセンブラスレでHTMLの話をするスレはここですか?
違います。ここは塩沢ときを語るスレです。
塩沢兼人を語るスレはどこですか?
皆様に質問させて下さい
どういうご職業ですか?仕事とされている方にちょっと憧れちゃいます。
こういうジャンルの製品のためにとか具体例があると非常に興味をそそられますので、
差し支え無ければお教え下さい。
やっぱり趣味とかなのに本職並みに詳しい人とかいるんですかね?
ちなみに私はCASL→Z80→X86という低レベル趣味PGです
いるんじゃない?
逆にコイツよく首にならないなってのもいるし。
どの業界でも同じだろう
過去ログの話になるが、
アセンブラ イイ!の1,2,4,7を、お前らどう思うよ。
アセンブラの言語としての最大の特徴は、機械語との1対1対応だ。
2進数と言っても、CPUの中に0とか1とか書いてあるわけじゃない。
ならば機械語の表現として、2進数も16進数もアセンブラも同等だろう。
機械語とアセンブラの関係は、ただのバイナリコードとShift-JISの関係に似ている。
さしずめメモ帳(Notepad.exe)は逆アセンブラ兼アセンブラ。
> アセンブラの言語としての最大の特徴は、機械語との1対1対応だ。
違うよ。
機械語はオペランドの型によって違う値になるがニーモニックは共通だし、
逆に複数の異なるニーモニックによる表現が同じ機械語に変換される場合もある。
なんで、こう次か次へと精神疾患の人が現れるんですか?
季節的なものでは?
PPCのニーモニック表はIBMとかにあるのかな
Altivec?とかもCPUの機能だよね
PPCってSSEとか3D Nowみたいのあるんですかね
こんな事しか書けないヘタレですまん
>>744 どうやら私の質問は「寒い」質問と思われちゃったようですね・・・・
>>774 アセンブラで同じこと書けば同じ機械語になるだろ。
そりゃオペランド違えば別の命令になることもあるけど、それはへりくつだ。
正しくは1対1じゃなくてアセンブラから機械語への全射か。
まあ、アセンブラだと未定義命令が書けないけど、未定義は機械語じゃないとすれば全射。
機械語に変えるときに複数の解釈ができるようなアセンブラもあるよ
OPコードもオペランドも同じで、違うコードに落ちたり。
(相対ジャンプの飛び先が遠いとか)
まあ細かい話だ。「ほぼ1対1」とか言っとけば問題ない。
最近気付いたけど、SSEやMMX、3DNOWなどに対応した「一般的」アプリってあまりないよね?
(3DCGソフト等除く)
>>757 MMXはままある気がするがSSE,SSE2,3D Now!,A?E? 3D Now!2?とかはね
少ないと思う
「一般的」って何よ?
>>757 圧縮画像やら音声の伸長なんかで使ってそうだけどな。
今のエロゲ(800*600*24)じゃMMXはほぼすべてじゃねーの?
MMXはレタッチ系で使うだろう。
対応CPUもほぼ完全に普及して、速度も目に見えて違うからな。
SSEになると普通のアプリじゃ敷居が高いかもしれぬ。
3D Nowなんか尚更だな
ベンチマークとかPMのこ〜だとか
もう出てからそれなりには歴史あるのにね
3D Now!はかわいそうだったな。
整数MMX命令も使えたからけっこうトリッキーなこともしたくなったし。
(俺はIntelCPUなので使ったことない)
もはやメジャーアプリで使われることもなく、AMDのお荷物状態なのか?
AMDのドキュメントがやる気0%だったからいけないんだよ
あのさーLinux(x86)上でddd使用してさデバッグしてるんだけどさ、
フラグレジスタをキャリー、オーバーフロー等に分けて表示できないの? この部分だけモ〜レツに使いにくいんだけど。
それともこのフラグレジスタの16進を直感で把握しろよってことなの?マジで?
もう俺、こんな時間までやっててそろそろ爆発寸前になってきたよ。 (゚Д゚)モルア!
もっとさー人類にやさしく、地球環境にもやさしい表示できないわけ?
それ以外は特に文句無しの出来でそれが無かったら、
もうね、最高なツールだよ。dddは。ddd作った奴は、神に認定できるね。殿堂入りものだよ。マジで。
お願いします。m(_ _)m
ソースあるんだから自分でいじるくらいの根性( ゚Д゚)ミセロ
Cで初めてインラインアセンブラやってみました。
ハードの事はよくわからないので、ここで質問させていただきます。
_asm
{
moveax,a
movebx,5
movedx,0;@
divebx
mova,eax
}
@の行がないとエラーになるのはどうしてですか?
IA-32 アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル
がintelのサイトから無料でダウンロードできるからそれを嫁
>>768 C ではインラインアセンブラは定義されていません。
というお約束のツッコミは置いといて。
div が edx:eax を暗黙に要求しているのに、_asm のコンテキストで
不定になっちまってるからでしょ。
ていうかもし無理矢理コンパイル通したとしても、結果が不定になる罠。
ちうわけでリファレンス探して嫁。そもそもそのシーケンスが
何をするものなのかわかっているのかね?
>そもそもそのシーケンスが何をするものなのか
全く分かってないです。
ハード的なことの知識に関しては、飛びぬけて無知だし。
とりあえず、マニュアル読んで奮闘してみますねっ
レスありがとございました! やっぱこういうこと聞いてわかっちゃう人もいるんですね。
感心しますた。
この場合ハードは関係ない
>>771 a/=5; みたいなコードだよ。
div命令は「edx:eax」を5で割って、結果がeaxに入りきらないとエラーを吐く仕様。
だからedxを0にクリアしておくだけ。
ってもう見てないか。
比較的まともなレスが多いんだから質問者はもうちっとかみついてほしかったな。
mmxについて。
mmsexについて。
あーgccの拡張インラインアセンブラわからない・・・。
gccでvolatileオプション付けてるのに吐かれるコードが違うってのはどういうことですか先生。
寝ます。
永遠に寝てろ
とりあえず保守しておきますね
780 :
デフォルトの名無しさん:2005/03/25(金) 15:42:45
インラインアセンブラでマイク入力を受け取りたいのだが、
in命令なんかで可能?
>>780 そのようなハードウェア構成になっていれば可能。
尤も、そうであったとしても実用的かどうかは別の問題。
782 :
デフォルトの名無しさん:2005/03/26(土) 12:10:12
さんくす。
確かに、普通にC使えって感じだな。
ただ、具体的にどうすればいいのかが知りたいのだ。
OS依存だよもん
OSがやってること真似すれば出来るんじゃないの
OSが許せばだよもん
OSだけじゃねぇってばよ。いずれにしろ、スレ違いだ。
787 :
デフォルトの名無しさん:2005/03/26(土) 17:57:25
すまん。Windowsだ。
経験者いない?
789 :
デフォルトの名無しさん:2005/03/26(土) 19:39:15
いや、アセンブラでのやり方を聞いているのだが。
791 :
デフォルトの名無しさん:2005/03/26(土) 19:49:03
最近こういう馬鹿が多い。
春のやまじは人を喰う。
アセンブラからWin32APIをたたく方法ってこと?
違う。APIなどは使わずにということ。
つうかAPIだってマシン語なんだから、アセンブラで無理なわけないと思うが。
>>793 特権ないとできないこともある。
だから OS とおさずに API を実装するなんて無理。
>>793 となると、デバイスドライバを自作するってことになるねえ・・・
DDKってので作れるから調べてみては。
>>796 デバドラで Ring 0 特権もてる?
特権もらえなかったら、わざわざデバドラ作る意味なくなるべ
ラクなほうに慣れてしまうと裏業も出来なくなる悲しさ
>>798 特権もらえるのはわかってるんだが、
Ring 0 までもらえるのかって聞いてるんだ。
またお前か
>>800 WindowsはRing0と3だけだ。
だから普通に考えればRing0だろ。
MMI呼べやアホほどもが
804 :
デフォルトの名無しさん:2005/03/28(月) 21:30:36
日本語訳がヒドいな、その記事
IT系の翻訳本ってこんなんばっかりだろ
「IT」なんて単語使う連中なんてそんなもん。
Visual C++でアセンブラ組んだやついる?
__asmが使えるよ
昔作ったクロスアセンブラはVC++でもコンパイルできたよ。
某大手家電メーカーでの面接
某国立大学部生の面接
技術本部長 「得意分野は?」
学生「プログラミングです」
技術本部長 「CPUと同期したプログラムを作るにはどうすれば?」
学生「・・・・・・・」
結果 推薦による受験だったが不採用
寧ろ、どうやって「CPUと非同期なプログラム」が書けるのかと。
>>813 同意w
答えられないんじゃなくて、意味が分からんw
アセンブリ言語の事じゃねーの?.....違うか
てゆーか、得意分野がプログラミングつーのも結構アバウトだな、おいw
だったらどんなプログラム作ったか?とか
そのことでどんな人脈ができたか?とか
聞くならわかる
それはコミュニケーション力のテストだ。
顧客がワケわからんことを言ってきたときの反応を見ているのだ。
「CPUとの同期とはどういうことを指すのでしょうか?」と
相手に説明責任を与えなきゃダメだよ。
CPUと同期??
意味がわかんね。答えだしてくれ。
そんな事もわからないんですか?
いちいち馬鹿にしなくていいから早く。
おれの書くプログラムは全てCPUとは非同期だよ。
CPUの中で動いているのにCPUと非同期とか言われても・・・
マザボのBIOSやグラボGPUをのっとれば…
もうわけわかりません
実は笑うところだったんだよ!
結局書き逃げか
実実行時間=クロックステート数/動作クロック
>>829 パイプラインなどない、古き善き時代の人でつか?
>>830 Z80マスターです
そういえばうちの大学の先生がSHシリーズ開発に関わったと言っていた
>>831 Z80なぞ誰でもマスターになれる件について
fdivrp st(1),st
VMテクノロジーがその後どうなったかの件について
835 :
デフォルトの名無しさん:2005/04/11(月) 02:01:25
Z80と8086ってどんな違いがある?
足の数が違う
VMテクノロジといえば
この種のプロセッサはことごとく全滅してるな
嶋さんお元気でしょうか
あの結局CPUと同期したプログラムって話うやむやにされてますけど
どういう意味ですか。
質問者が阿呆か、質問された方が聞き違えたんジャマイカ。
841 :
デフォルトの名無しさん:2005/04/11(月) 13:53:52
ニーモニックがよくわからないのですが
>>839 エミュレータを介さないプログラム。
非同期・・・エミュレータ上で動いてるプログラム
ふと、「ニーモニック娘。」という語が頭に浮かんだ。
俺はレナード・ニーモニック。
実に論理的ですな
鈴木宗男
ニートニック
オーガニック
アセンブラ
女性に大人気
汗んブラ
一部のフェチ男に超人気
スレッドレイプが流行ってるのか?
x86でBCD演算命令ってあるけど、
現在BCDコードを使う奴なんているのか?
>>852 速いCOBOLの処理系とかが使ってそうだが
(´・∀・`)ヘー
COBOLってまだあるんだ。
(´・∀・`)ヘー
アセンブラってまだあるんだ。
自動車メーカーじゃBASICが現役って聞いた
最近、このスレのレベルが落ちた件について
このスレに限らない
2chは一部の情報を除いてほんとに時間の無駄だからな
いまどきアセンブラにこだわるやつは、コンパイラ開発者でなければ
恵まれない組み込み開発者か、頭の固い8bitオヤジか、
他人のソフトをクラックしていい気になってるコバンザメってとこだろう。
で、こんな場所にクオリティ高い群がいるはずもなく。
>いまどきアセンブラ
うがーっ!!
おれはコンパイラ作って会社にライセンスしてるけどここで話すネタはないな
>>858 いや、元々処理速度とか必要ない分野ではね
膨大なソースを今も有効活用してるって
いまどきのアセンブラ
>>865 何処かの会社の何処かの部署では
そういう事はあるかもしれないが、そういう特殊例を以って
「自動車メーカーじゃBASICが現役」のような書き方は
…って餓鬼に説明してんのか俺は。
まあ「膨大なソース」でネタ確定だな。
869 :
デフォルトの名無しさん:2005/04/16(土) 13:25:39
自動車メーカーどころか大半の企業では
大昔の電卓のような、液晶すら出てなかった頃の
自己発光文字盤使った計算機しかない。
一番のハイテクノロジーがイッツソーヒュージなプリンタ
一昔前の家庭用ワープロよりも劣る文字打ち機。
LAN組んでるところでさえ、家でもできるようなLANだし
870 :
デフォルトの名無しさん:2005/04/16(土) 13:27:14
( ゜∀゜)彡 おっぱい!
⊂彡
871 :
444:2005/04/16(土) 16:09:37
BASICを馬鹿にする奴はアセンブラもできない奴が多い
pokeですか。そうですか。
444?
ウチの会社で一番のハイテクノロジーはファナックのPLCだ
BASICって数値計算がラクだよな
型を意識しなくて良いし
>>875 そうだね、ちょっとアルゴリズム検証なら十分だね
車屋なんて、MAZDA みたいな田舎メーカですら
CRAY 複数台使ってるくらいなのに。
(´-`).。oO(光岡はどうなんだろ?)
(´・∀・`)
(´・∀・`)ヘー
CRAYってまだあるんだ。
CRAYをクレー
ハイテク万歳
パンツ穿いてく
アセンブラならではのすごい高速化のギミックとかないか?
ギミックというと、宝箱とかに化けてて、死の呪文とか唱えたりする
それはミミック
アセンブラゼロエックスは全4巻だろ
889 :
デフォルトの名無しさん:2005/04/21(木) 00:17:39
アセンブラも基本的な演算命令は、
CPUが違っても一緒だと思うんですが(add, sub等)
アセンブラの演算命令について紹介しているサイトってありませんか?
intel, amdを対照比較してあるとうれしいです。
>>889 その前に、君の低レベルな発言をなんとかしろ
知識がなさ過ぎて話にならない
891 :
デフォルトの名無しさん:2005/04/21(木) 00:40:38
と、低レベル君が申しております
asmファイルのソース見たんだけど意味わからんよ。
バイナリエディタ使わないでアセンブラだけで改造するにはどうすればいいんだろう?
低レベルな話は大好きだけどな。
>基礎の基礎の基礎知識
頭悪い煽りだな
896 :
デフォルトの名無しさん:2005/04/21(木) 05:34:29
BCBでつかえる淫乱アセンブラにはどのようなものがありますか?
アセンブラってうまいのか?
男の汗が染み込んでいます。
汗ブラ
>>893 低レベルと低レベル言語との違いを見抜けない人は、
(アセンブラを使うのは)難しい
魔腺ブラ
902 :
デフォルトの名無しさん:2005/04/23(土) 18:36:34
>>893 区別するために「低レイヤ」と言ってくれ。
PICでアセンブラ勉強している人に、
「おおー低レベルなプログラムやってるのか」
といってしまいました。
低級言語とか高級言語とか言うから誤認するんだ
つーか明らかに意味を勘違いして使ってるよな
お前らレベル低すぎ(w
機械に近づいたということですね!!(゚∀゚)
908 :
デフォルトの名無しさん:2005/04/25(月) 21:35:16
CPU amd sempron2200
なんですが、
C言語のインラインアセンブラを使って
一時キャッシュへよく使うデータを入れておいて、
必要になったら使いたいのですがどうしたらよいのでしょうか?
コンパイラはVC++.netです。
一時キャッシュへ入れたいデータは
unsigned int buf[1024];に入っています。
bufの中身をすべて一時キャッシュへ入れます。
一時キャッシュからデータを取り出したいときには
eaxレジスタに値を入れるということにしてください。
ebxレジスタの値で何番のデータを取り出したいのか指定します。
意味不明
910 :
デフォルトの名無しさん:2005/04/26(火) 02:46:52
cpuのキャッシュへ任意のレジスタのデータを渡すことはできないんでしょうか。
また、cpuのキャッシュから任意のレジスタへデータを渡すことはできないんでしょうか。
こういう意味です。
908は忘れてください。
ますます意味不明
912 :
デフォルトの名無しさん:2005/04/26(火) 02:59:14
なんかこの板滅多に来ないんだけど
スレタイがバイオハザードのアンブレラかと思ったよ
913 :
デフォルトの名無しさん:2005/04/26(火) 03:41:58
アセンブラでcpuのキャッシュメモリを使うことはできないのでしょうか・・・
>>913 何転々としながら阿呆なこと聞いてるの?
(゚Д゚ )ハァ?CPUのL1やL2キャッシュにユーザが指令をして任意データを読み込めと?
PREFETCH命令くらいしかないだろ。それに、キャッシュラインが同じデータは後書き
されてしまうし、何wayのキャッシュかぐらい調べろよ。それによっては効果が出ない
事もあるからな。
PREFETCH命令はIntelのPDFでも嫁。
917 :
デフォルトの名無しさん:2005/04/26(火) 07:40:54
どうしてアセンブラなんかするの?
そこにCPUがあるから
ARMやDSP系だとキャッシュを固定する命令があったりするね
全てのページをキャッシュディセーブルにしてキャッシュしたいページだけキャッシュ有効にすれば?
>>910 メモリにアクセスすると勝手にキャッシュに乗る。
これはCでもアセンブラでも一緒。
buf[1024]程度ならオールL1ヒットする。
ありがとうございました。
どうやってキャッシュにデータを乗せればいいのかと考えていたのですが、
cpuが勝手にやってくれるのですね。
忘れてください。
失礼しました。
ていうかL1に乗ってないデータはまずL1に読み込んでからCPUがL1読むからな
キャッシュ無効とか(アプリからはできん)しない限りL1以外は読めない
>>908のは一次キャッシュじゃなくて一時キャッシュだ
多分別の領域に取るんだろう
>>921はいい加減だが、どうみても
>>908はキャッシュを意識してプログラムを
書くレベルではないので、この件は適当に打ち切るのが正解だな。
928 :
デフォルトの名無しさん:2005/04/26(火) 21:33:02
930 :
デフォルトの名無しさん:2005/04/26(火) 22:29:37
8ビットです、すいません。
>>930 下位8ビットと上位16ビットの内容が上のペアと下のペアで
違ってるのは良いの?
今時ペアリングなんて意識する方が・・・
単純に整数演算器がいくつあるかとかならわかるけど。
それに、パーシャルレジスタストールを考えなければいけない環境も
まだまだ残ってるし。
PenMは知らないけど。
>>928 最近はペアリングって言葉使わないよ。
PentiumのUVパイプのことだからね。
上は一応同時実行できるっぽいけどパーシャルレジスタストール食らうのでお勧めできない。
下は同時実行できないが、前後にある他の命令と同時実行してくれるケースが多いと思う。
よって下がおすすめ。
・・・同時実行よりペアリングの方がカコイイな。
組み込みならともかく、そこまでCPU内部構造まで意識する必要があるのかとw
CPUの仕組みが変わったら無駄になるのがオチ
組み込みならともかく、今時アセンブラなんか意識する必要があるのかとw
このスレの内容の殆どが、CPUの仕組みが変わったら無駄になるのがオチ
命令セットと実装の違いが分からない痛いヤシがいる(・∀・)ニヤニヤ
MSがインラインアセンブラを廃止する件について
ソースは?
MS:「インラインアセンブラを終了しました。長い間の御利用有難うございました。」
64bit版のICC、MSコンパイラはインラインアセンブラ使えなくなってしまった。
またMASMのお世話になるとは