15/07/19 10:45:12.87 7NCgP6LA.net
組み込み系の知識が無いみたいね。
786:デフォルトの名無しさん
15/07/19 20:39:31.05 RGrGlHay.net
>>762
で、これのどこが「CALLは事実上必須の技術要素」と関係してんの?
>関数がどこのアドレスにマッピングされるか実行時まで不定なんてのはJITではよくあることですし
>EIPを取るためにCALLは事実上必須の技術要素
これの説明になってないと思うけど
例外のカーネルに対する割り込みまで混同してるのか?
それこそDOSの処理との違いを理解してないじゃないか
787:デフォルトの名無しさん
15/07/19 20:49:10.66 RGrGlHay.net
739 :,,・´∀`・,,)っ-○○○w:2015/07/08(水) 07:54:58.71 ID:88H8yWBh
それでなくとも*NIXでforkとかやるのにEIP/RIPの取得は必須なんだが
(子プロセスで完全なコピーをとるからね)
結果的にスレッドが割り当てられるアドレスをバイナリ生成時に決め打ちすることができないんだよ
forkでコピーとかいつの時代の話してるのかというのに加えて
単一のポインタで「メモリ空間」をどうやって表現するのかねぇ
なんか色々と支離滅裂なんだよな
788:デフォルトの名無しさん
15/07/19 21:28:40.28 pmXYRPLP.net
えぇ・・・
789:デフォルトの名無しさん
15/07/19 22:48:15.71 RGrGlHay.net
>>738では行ごとに関係のないことを並べてるのに気付かず、それぞれが関連してるかのように書いてるんだよな
forkで実行中の命令ポインタが必要になるのは実装がそうなってるんだから当然としても
子プロセスで親プロセスのメモリ空間を再現するのにはipだけじゃ不足だし、ipがなくてもできることし
次で突然リロケータブルの話題に戻ったうえに、普通はスレッドの開始アドレス指定するようになってるのに決め打ちできないとか言ってる
スケジューラのことを指すとしても、こっちはバイナリの生成アドレスは関係してこないよね
以上のことを合わせると、プロセスとスレッドの解釈までなんかおかしい
>>761はURLリンク(github.com)の339行の関数だとすると
単にコンテキストから各ポインタを取り出してるだけだよね
「CPUが例外を実装するのにCALLは事実上必須の技術要素」というのなら理解できるけど
790:,,・´∀`・,,)っ-○○○
15/07/20 00:13:23.48 wJb+2lr3.net
まるで理解していない
アセンブラのスレでなんだが、C++コードの読解力から身に着けようか
791:デフォルトの名無しさん
15/07/20 00:20:33.85 AMStoo45.net
自分に都合の悪い所はスルーか
それは置いといて、理解してないっていうなら聞くけど、この関数のどこに「EIPを取るためにCALLは事実上必須の技術要素」
のcallがあんの?
792:,,・´∀`・,,)っ-○○○
15/07/20 00:26:45.44 wJb+2lr3.net
どのみちEIPとESPの保存はJITでの例外処理の実装に最低限必要なんだけどね
アカデミックな論文とか読まないでしょ君、学がないから。そもそも大学を出ているかも怪しい。
URLリンク(ir.c.chuo-u.ac.jp)
EIP/ESPの保存にcallを使わなくてもいいってしつこく主張したくて駄々をこねてるみたいだけど
そんな方法めんどくさいだけだろ?
793:,,・´∀`・,,)っ-○○○
15/07/20 00:35:43.31 wJb+2lr3.net
静的コンパイルされたコードなら関数の頭から最後まで各命令の番地が一意に決まってるけど
JITでそんなのいちいち計算してたら演算コストかかって仕方ねーから関数やループの先頭アドレスだけ把握して
あとはcallで取れるEIP値で把握するのが当たり前なんだよ
コードの最適化で書き換わったりするから全命令のアドレスなんて覚えてらんねーっての
てか全命令のアドレスなんてランタイムが記憶してたらメモリ消費半端ないことになりますよ
DOS時代の知識しかない老害にはそのあたりの感覚が理解できてないのね
794:デフォルトの名無しさん
15/07/20 00:38:26.64 AMStoo45.net
>>770で指摘した点には反論しないのねw
>>738ではやらかしたと思ったんでしょw
795:,,・´∀`・,,)っ-○○○
15/07/20 00:39:34.57 wJb+2lr3.net
お前のレベル低すぎて反論する気もないわ
796:デフォルトの名無しさん
15/07/20 00:43:13.27 gdO7FQR/.net
まあまあ喧嘩はやめて90年代の曲でも聴こうぜ。
797:,,・´∀`・,,)っ-○○○
15/07/20 00:44:41.10 wJb+2lr3.net
今日T-BOLANのボーカルの話聞いてきたよ
798:,,・´∀`・,,)っ-○○○
15/07/20 00:49:32.24 wJb+2lr3.net
UNIXのforkをWindowsで実装してみた例があるから読んでおくといいよ
URLリンク(pf-j.)さくら.ne.jp/program/tips/winfork.htm
799:デフォルトの名無しさん
15/07/20 00:54:38.35 AMStoo45.net
>JITコンパイラ済みコードからCライブラリを呼び出す場合、Cライブラリ内で発生する例外に備えて、
>Cライブラリ呼び出しの前にsetjumpを行わなければならない。
これはRubyからCのライブラリの関数を呼び出せるようにしたための制限だろ
Cとリンクして動かさなければ関係ないはずだし、そう書いてあると思うのだが
これが「事実上」なの?
800:デフォルトの名無しさん
15/07/20 00:57:47.98 SiY3idyo.net
そう意地になるなって。事実上といっても差し支えないだろ
801:,,・´∀`・,,)っ-○○○
15/07/20 00:59:44.11 wJb+2lr3.net
Cで拡張ライブラリ書くのがMat
802:zRubyの方針だもの
803:デフォルトの名無しさん
15/07/20 01:00:27.57 AMStoo45.net
>>779
ネイティブでないforkを持ち出しても意味ないの
Cygwin使ったことある?
forkのエミュレーションが遅くて昔から問題視されてるよ
レベルが低すぎるってんなら>>770のプロセス/スレッドのとこ個別に反論してみてよ
804:デフォルトの名無しさん
15/07/20 01:01:29.77 AMStoo45.net
あんた、いつも後出しで特定環境のこと持ち出したりするね
805:デフォルトの名無しさん
15/07/20 01:05:50.67 AMStoo45.net
>>781
JIT開発経験が無いとか噛みついてきたからさ
そして、団子は「それじゃ例外処理を実装できない」と言ったんだよ
806:デフォルトの名無しさん
15/07/20 01:05:56.20 AMStoo45.net
>>781
JIT開発経験が無いとか噛みついてきたからさ
そして、団子は「それじゃ例外処理を実装できない」と言ったんだよ
807:,,・´∀`・,,)っ-○○○
15/07/20 01:07:55.61 wJb+2lr3.net
頭悪い子の相手したくないからIDあぼーんしときますね
愚痴りたいならブログでもツイッターでもどうぞ
808:デフォルトの名無しさん
15/07/20 01:11:00.75 AMStoo45.net
>>770を否定できないと団子の立場が無いって言ってんのに
809:デフォルトの名無しさん
15/07/20 01:20:37.50 FJ8eMmMt.net
warosu
810:,,・´∀`・,,)っ-○○○
15/07/20 01:25:16.35 wJb+2lr3.net
つまらない自尊心の為にスレタイ読まずに連投を繰り返すやつが立場がどうとか
まず手前のレベルの低さをなんとかしろよ
ツッコミにすらなってない
811:,,・´∀`・,,)っ-○○○
15/07/20 01:28:10.38 wJb+2lr3.net
RubyのライブラリがCで書かれてることも知らないようなDQNって自爆しちゃったしなぁ
812:デフォルトの名無しさん
15/07/20 01:46:20.78 8dMvvLjx.net
すんません、一連の流れというか、具体的にどういうことを話してたのか
初心者にもわかるように解説してください
ここ、初心者スレであって達人スレじゃないんで
813:,,・´∀`・,,)っ-○○○
15/07/20 01:55:13.34 wJb+2lr3.net
call命令はjmp命令で代替できますか?って質問出てて
「call命令使わないとEIPとれないだろ?」って言ったら
最近の処理系の知識皆無なジジイが発狂
動的なコードでEIP値が必要なケースってのを理解してないようだ
814:デフォルトの名無しさん
15/07/20 02:12:40.06 AMStoo45.net
>>721で誰かがアセンブラが戻りアドレスを把握してるって指摘したら
団子がつまらない自尊心の為に関係ないプロセス/スレッドの話まで持ち出してきて
それが相手を罵倒できるようなレベルの内容じゃなかったでしょ
その後も誰かが何か書くたびに「化石には理解できんでしょうよ」とか絡みついて見苦しいことしてるくせにな
JITはアセンブラも含むんだから、そこで例外を実現するにはOSの例外処理機構に
マッチしてればいいだけなのに「それじゃ例外処理を実装できない」と絡んできたんだろうが
こっちもrubyのような環境を想定してなかったのは確かだが、例外処理はハンドラによって変わるの理解してる?
C++でCライブラリを呼び出したらsetjumpなんてしてると思ってんの?
815:,,・´∀`・,,)っ-○○○
15/07/20 02:18:44.28 wJb+2lr3.net
まあ「立場」の優位性が自分にあると主張なさるならその模範として
スレ違いの話題から率先して身を引くことで優位性を示されてもよいかな
816:デフォルトの名無しさん
15/07/20 04:04:40.80 ojcfcDra.net
1日に12個も書いて一生懸命な人がいますね。ご苦労様です。
817:デフォルトの名無しさん
15/07/20 07:22:17.85 25wPVHZj.net
ここっておじいちゃんが自分の知識を自慢するスレですか?
818:デフォルトの名無しさん
15/07/20 12:17:45.00 AMStoo45.net
>しかしながら、CRubyインタプリタにおける例外処理の実装は、コンパイル済みコードで発生した
>例外の受け渡しを前提に設計されたものではなく、CRubyインタプリタに合わせた単純な実装では、
>効率的な処理を行う実装することが難しい。
CRubyのライブラリがsignal使って例外処理を実装してるのがいけないってことだろ
こいつのせいでJITの例外処理では完結できなくなったのが原因じゃないか
JITのランタイム環境はフローの基本ブロックのアドレス程度は管理してるはずなので
Rubyのような問題のある特定環境じゃなきゃsetjump(のコール)を使用しなくても動作させるのは可能なはずだよな
>どのみちEIPとESPの保存はJITでの例外処理の実装に最低限必要なんだけどね
「例外が発生したアドレス」やレジスタの内容はOSがお膳立てして保存してあるだろ
callは「呼び出した命令の次の命令のアドレス」を保存するんだぞ
例外ハンドラに処理が移った時点でJIT環境の管理するアドレス情報で処理するのは可能だろ
回復に必要な経路の情報は既にスタックフレームに入ってんの
だから「CPUが例外を実装するのにCALLは事実上必須の技術要素」というのなら理解できると書いたんだけど
団子は例外処理に関する知識も微妙だな
本当に本人?
知識自慢ってよりね、>>717のcall/retは内部で別の命令で処理されてるの?って疑問に対して
限定的に似た動作をさせることは不可能じゃないってことだったのに
団子が火病ってリロケータブルはまあいいとしても、JITだのDLLやスレッド/プロセスのことを持ち出して
スレタイとは異なる話を展開をさせたんだよ
その知識が変じゃないかってこと
そして自分が言い負かされそうになるとスレタイのことを言い出したw
819:デフォルトの名無しさん
15/07/20 12:39:11.58 UCOKR5Nt.net
知識は老人、心は子供かな
820:デフォルトの名無しさん
15/07/20 12:39:54.23 UCOKR5Nt.net
悪い意味で
821:デフォルトの名無しさん
15/07/20 14:20:45.53 4/vs8FvF.net
老害はもう引退しろよ
822:デフォルトの名無しさん
15/07/21 02:10:18.33 KMhPcj8X.net
きちんと引き際わきまえてる分、団子の方が上だな
823:デフォルトの名無しさん
15/07/21 06:40:00.03 lN6RffsE.net
見苦しい老害が団子だろ
824:デフォルトの名無しさん
15/07/21 07:26:37.78 O1iotFPu.net
なんども長文を書くのはこちらとしても嫌だったけれども、
逃げ道を塞ぐようにしないと後出しで特殊な例を持ち出して勝手に勝利宣言するし
こっちの言ってることを「レベルが低い」と一蹴してごまかそうとするから
だからRuby JITの論文は渡りに船だった
VMの生成したコードだけなら表引きで例外を処理できるとはっきり書いてあるからね
そして本当に例外の知識を持ってたのなら、この表にはVMの生成したすべてブロックの情報が入っていることは理解していたはず
団子がしきにり「JITの例外処理ではEIPの保存が必要」と言ってたから、てっきりネイティブの例外のことかと思ってたら、ESPの保存も必要だといった
これでsetjump法のことを意味してるのが確定した
setjumpが必要になるのは例外をいじるCライブラリのせいだというのは論文にも書いてあるし、自分も指摘した
自分の引っ張り出した論文の内容を正しく理解していなかったのはJITを含む例外処理を理解していないことになるからね
結局団子は自分の持ちだした論文で華麗に自爆したわけだが
こういうのって、将棋だと上級者は勝ち目がなくなったら投了して終わるのに
詰まされないと負けを認めない奴だからいたずらに手数が長くなってしまったと表現したらいいのか
団子がここまで駄々っ子だとは思わなかったよ
825:デフォルトの名無しさん
15/07/21 07:36:55.01 3jrxFxE1.net
なげぇw
826:デフォルトの名無しさん
15/07/21 07:42:32.41 O1iotFPu.net
念のためしっかり逃げ道を塞いどこうと思って
今まで長文を何度も書いて申し訳ない
でも、これで余程のことが無ければこの話はここで終わりになると思うよ
827:デフォルトの名無しさん
15/07/21 17:27:19.91 lN6RffsE.net
勝てなくなると最後は誹謗中傷攻撃が待ってるからなあ。
828:デフォルトの名無しさん
15/07/21 21:25:52.91 MZjkxTxw.net
あのさー
2chで勝利して何になるの?
将棋がしたいのならオンライン将棋すれば?
829:デフォルトの名無しさん
15/07/21 22:21:28.63 m5rpz/Rt.net
中途半端だとすぐに戻ってくるからだよ
学が無いとまで言った相手より理解が浅かったら恥ずかしいだろ
830:デフォルトの名無しさん
15/07/22 00:08:23.68 F++zketJ.net
団子はとっくに引いて、大人の対応してるのになあ。。。
ID:O1iotFPuがここまで駄々っ子だとは思わなかったよ
831:デフォルトの名無しさん
15/07/22 07:01:44.05 ALVAbODL.net
CRISCに関する質問だったんだから、上級者なら、内部命令のすべてが
外部からは見えないことを指摘すればすむ話だった
JITのような話が飛び出し�
832:トくるのは自分中心でしか考えていないからだよ だから雑談なら雑談として適当なところで切り上げることもできない
833:,,・´∀`・,,)っ-○○○
15/07/22 10:09:23.01 bur23WMX.net
MacOSのELFは位置独立コードのためにEIP取得のために空のcall(64ビットの場合はlea rcx, [rip])発行してる
Windowsみたいにメインルーチンのアドレス固定じゃないからね
LinuxはオプションでPIC対応コード生成可能。
【参考】
URLリンク(7shi.hateblo.jp)
URLリンク(0xcc.net)
これがJITに限らず静的コンパイルでも実行時の命令ポインタが要求される例だ。
これで約一名おとなしくなるかな?
834:,,・´∀`・,,)っ-○○○
15/07/22 10:27:24.37 bur23WMX.net
>>722
じつはここに答え書いてあるのにスルーされてるのがすっげー違和感あったんだよね。
本当に知らなかったのかな
835:デフォルトの名無しさん
15/07/22 11:23:38.39 PLCb4FbB.net
また実装依存の話をしてる。
x86はセグメントを使う前提で設計してあるから物理アドレスの如何に関わらずEIPは変わらないように想定されている。
同一EIPであってもセグメントが違うので複数のプログラムモジュールが共存できる。セグメントの値はOSが管理する。
そもそもEIPはコードセグメントの領域を指し示すものでありセキュリティーの観点からここをデータとしてアクセスさせないという設計思想だ。データは別のセグメントに配置する。
これは8080の絶対アドレスでコーディングされたプログラムを8086でセグメントを使ってリロケータブルにして動かすことに成功したことの延長線上で286の時点でそのように作られた。
386は286上位互換性を確保するためセグメントを継続して採用している。セグメントレジスタも増やされた。
x64はセグメントを使わないから物理アドレスによってRIPが変わる。だからデータアクセスに対するRIP相対アドレッシングモードを追加した。
この基本が分からないとお話にならない。
RISCでも動くOSはセグメントが使えないからトリッキーなことをしているがそれはたまたまそうやると複数CPUアーキテクチャで共通の処理が実現できるからであって本質的には不要な処理である。
836:,,・´∀`・,,)っ-○○○
15/07/22 12:19:54.31 bur23WMX.net
老害は知らなくて当然だよ。10年前くらいから使われだしたセキュリティの
広く使われていても自分の知識の範疇にないことを「実装依存」で片付けてるから
新しいことが覚えられないのだよ
更に言うとJITの場合は分岐のコンディションごとに関数の実体を複数生成することもあるから
1つの関数の実体が複数あるなんてこともざらにある。
MacOSのプログラムすら書いたことのない(そもそも仕事がもらえない)
残念な老害という現実だ。
まあ俺に攻撃することだけ執着してご自分の無様さをさらけ出すのは
何のマゾプレイなんですかね
837:,,・´∀`・,,)っ-○○○
15/07/22 12:21:51.19 bur23WMX.net
286ガーとか古い知識ばかりに頼って覚えられない人はほっといて
向上心のある人はgccで-mPICオプション使ってみるといいよ。Cygwinで使えたかは知らん
838:,,・´∀`・,,)っ-○○○
15/07/22 12:30:05.00 bur23WMX.net
なお実行コードのアドレスをランダム化するバッファオーバーランからの任意のコード実行などのリスクを低減するための方策で
攻撃手段を一つ減らすだけでも運用上のメリットはあるから既にサーバサイドでもかなり使われてる
「実装依存」という言葉は自分の知らない概念を認められない負け犬のための言葉と認識した
839:デフォルトの名無しさん
15/07/22 13:13:02.17 NclmcGF9.net
実行ファイルに適切なリロケーション情報残してればローダが毎回.text書き換える前提で
label:
mov eax, label
...
みたいなやりかたでPCとってきてかつASLRするのだって不可能ではないのでは?
現代のローダは.textは書きかえないのが主流だからこういう実装は多分存在しないけど、
call,ret 使わない縛りでもできなくはないと思う。(メリットが無いのはわかってる)
> ...本質的には不要な処理である。
x86セグメント方式だと、CSの指す領域を一方向にしか増やせなくてASLR難しそうなので
現代ではセグメントによるリロケーションはもう使えない気がす。
840:,,・´∀`・,,)っ-○○○
15/07/22 13:14:18.63 bur23WMX.net
x64はセグメントオーバーライドプリフィクスそのものが使えなくなった
LESとかLDS潰してAVX命令作ったからね
841:,,・´∀`・,,)っ-○○○
15/07/22 13:20:15.23 bur23WMX.net
>>818
スタートアップルーチンにリテラルを都度書き換えさせるとかアホくさすぎる
そもそも起点となる命令ポインタの算出が必要だから結局startupルーチン自身は
動的な命令ポインタの動的な値を知ってないといけない。
それを本末転倒と言ってるのだが。
842:デフォルトの名無しさん
15/07/22 13:29:06.96 NclmcGF9.net
ローダはモジュールの先頭アドレスだけわかれば良いのでは?PC必要無いと思うけど。
843:デフォルトの名無しさん
15/07/22 13:41:35.80 T6YRRrU3.net
老害は今日も元気で何よりだな
844:デフォルトの名無しさん
15/07/22 15:16:13.59 rLOE8FZ/.net
位置非依存コードは専用のバイナリフォーマットがあるわけじゃなくて既存のELFやらPEフォーマットのままで
プログラム側から呼び出されるCランタイム側で解決するんだから結局自身で自分のアドレスを知らないとダメだぞ
ローダはプログラムのエントリポイントに飛ばすものだがエントリポイントにプログラム自身の展開されたアドレスを渡してくれるわけではない
845:デフォルトの名無しさん
15/07/22 15:31:05.41 PLCb4FbB.net
まさに実装依存だな
846:デフォルトの名無しさん
15/07/22 15:36:13.44 rLOE8FZ/.net
老害くんの恥の上塗り劇場
847:デフォルトの名無しさん
15/07/22 16:56:34.49 k7Ula1IS.net
問題はcallを使わずでjmpで完全に代替できるかだろ
結論としては不可能
DLLがマップされるアドレスは不定だしDLLから別のDLLを呼び出す、更に遅延ロードが絡むとローダでリテラルを絶対アドレスに書き換えて解決なんてことは出来ない
848:822
15/07/22 17:01:28.28 +xtThSAH.net
えー?ELFローダって別に自身のアドレス必要だったことないけど?
ELFロードするだけなら普通にCで書けるでしょ?そのあとジャンプするのだって、自分で決めたロードした位置にジャンプするだけでは?
849:822
15/07/22 17:06:17.78 +xtThSAH.net
WindowsのPEのローダでできるかはわからんけど、自分でローダまで作る前提なら可能だと思うのだけどなぁ…
850:デフォルトの名無しさん
15/07/22 17:07:03.34 k7Ula1IS.net
違うよ老害くんの主張は
call/retは絶対アドレスをスタックに積んでjmpで完全に代替できて、できないものは実装依存(キリッ)だよ
おそらくDLLも存在しないワールド
851:デフォルトの名無しさん
15/07/22 17:14:23.14 k7Ula1IS.net
WindowsはWinMainの第1引数のhInstがモジュールのアドレスになってるからオフセットとれば絶対アドレス変換できなくもないけどな。アプリ側でゴリゴリやる必要あるがそんなんアホくさくてやらんだろ。
852:デフォルトの名無しさん
15/07/22 18:34:32.58 ALVAbODL.net
>>826
スタックはアドレスを取れるんだから、スタックに領域を確保して
>>724みたいにしてモジュールのアドレスを問い合わせて、その後ろに
処理継続先のオフセットとモジュールのアドレスを足してjmpするコードを生成する
ジャンプ先でスタックを戻す
モジュール名のリテラルはmovの連続で構成する
DEPは後から搭載された機能だからDEPが使えるというのは環境依存だよな
PICという制約を加えてもよければ、ローダによる再配置を禁止しても構わなくなるぞ
先に環境を指定して議論しなければだめだろ
853:,,・´∀`・,,)っ-○○○
15/07/22 19:11:08.69 bur23WMX.net
はぁ?
>>724はエントリポイントが固定アドレスじゃねーと使えないよ
-mPICオプションつけてコンパイルしてみ?callでEIPとってからオフセット差分を
callを回避するために結局callを使うって本末転倒じゃねーか
バカ杉
854:,,・´∀`・,,)っ-○○○
15/07/22 19:13:29.16 bur23WMX.net
ああ、DLLのマッピングされるアドレスは固定じゃないですね
固定されてたら競合しちゃうからねー
複数のプログラムから呼び出されることを想定してプロセスローカルでないアドレスに動的にマッピングされます
855:デフォルトの名無しさん
15/07/22 19:18:08.19 ALVAbODL.net
>>831はJITとやり方がそっくりだろ
JITはアプリ側でゴリゴリやる方式だし
856:,,・´∀`・,,)っ-○○○
15/07/22 19:26:58.09 2paHa4MR.net
call不要はねーわ。
ちなみにXbyakはcallがeip/rip相対にすらならないからいろいろ他のJITとは勝手が違う
857:デフォルトの名無しさん
15/07/22 20:01:00.11 iGjKi/Th.net
機械語をハンド逆アセンブル?しようと思ってるんですが、そういうのに使える便利なツールとかってありませんか。
ソースコードの機械語と命令単位で切り分けた機械語とニーモニックにしたものを並べて見比べたいんですが、
逆アセンブルツールというと自動的に解析してくれる様なものしかないみたいなので、メモ帳を複数起動して解析してる状況です。
一つのツールで操作できて整った画面で見られたらいいなぁと思ってるんですが、そういうニッチなツールはないですか。
858:,,・´∀`・,,)っ-○○○
15/07/22 20:03:31.70 2paHa4MR.net
EXEならVisualStudio付属ののDUMPBIN使えば?使い方はオプション見ればわかると思うけど
859:デフォルトの名無しさん
15/07/22 20:34:53.88 qru6k61f.net
逆アセンブルできてたら、もとのバイナリ、16進は不要では?
実際に経験がないからわからないけど、アセンブラの命令と対応する16進を覚えておくか、メモ帳で逐次検索するか、
ルビふりとか英-和の翻訳で英語と日本語を文区切りで併記するように機械語とアセンブラでの似たものを自作するとか。
860:デフォルトの名無しさん
15/07/22 21:34:40.92 iGjKi/Th.net
>>838
やっぱり自作しかないですかね。
x86-x64のオペコードはニーモニックと一対というわけではないので内部処理を確認する為に残しておきたいんですよね。
さすがに256命令+SSE命令 &MOD R/Mの組み合わせを暗記するというのは人間業ではないので今あるもので地道に頑張りたいと思います。
861:デフォルトの名無しさん
15/07/22 22:22:05.85 ALVAbODL.net
>>832
>>831のモジュールアドレスを
register void *dop=dlopen;
register void *dsym=dlsym
h=(*dop)(NULL);
cont=(*dsym)(h,"label_cont");
jmp(cont);
こんな感じに変更すればいいんじゃないのか
スタートアップルーチンでサンクを呼び出す部分までをこのやり方で置き換えるんだよ
>>833
後から勝手に制約を追加できるんなら、自分だったら動的再配置を禁止するぞ
そんなこと許したらcomファイル大勝利になるだろ
だから先に環境を示さないとダメなんだよ
本末転倒なんていったらCRISCの話でこんなことやってる方がどうかしてるだろ
団子がどうしてもcall使ってEIP取らないとできないことがあるって言うから
あえてcall封印してたんじゃなかったのかよ
862:,,・´∀`・,,)っ-○○○
15/07/22 22:30:16.31 6QdmLHPN.net
DLLのアドレスは不定だろ?
前提からして間違ってるよ?
863:,,・´∀`・,,)っ-○○○
15/07/22 22:36:05.03 6QdmLHPN.net
>>720に対する反論はどんな実装でも例外なく通用する完璧な実装を用意することだけだよ
>>840のコードは外部DLL(*NIXでいうところのSO)から別のDLLを呼び出すときには通用しない
864:,,・´∀`・,,)っ-○○○
15/07/22 22:46:58.82 6QdmLHPN.net
位置非依存コードは既に実用化されてる技術だけど「実装依存だからノーカン」みたいなこと言うアホもたい�
865:ェいだけど callを使わなくてもいいようにABIやスタートアップルーチンを書き換えればいいなんてのはもっとありえない解決策だよ 現実みろよ てかCRISC(笑)なんて既に死語だと思うけどね。 既にIntelプロセッサの内部命令はPentium ProからPentium 4までのアーキテクチャの 「Load/Storeアーキテクチャ」ではなくなってるしAtomはOoOを実装したCISCだし
866:デフォルトの名無しさん
15/07/22 23:06:10.53 oW3pCj8R.net
Open office Org.
867:デフォルトの名無しさん
15/07/22 23:12:09.13 ITYxsc4F.net
それはOOoじゃなかったっけ
868:デフォルトの名無しさん
15/07/22 23:21:04.52 oW3pCj8R.net
>>845
馬鹿野郎!
今は21世紀だぞ!
869:,,・´∀`・,,)っ-○○○
15/07/22 23:22:46.86 6QdmLHPN.net
「CRISC」ってどっかの学者さんが言い出した言葉ではなくIntelの造語で
20年も前の言葉でPentiumで用いた高速化のアプローチのことを指してそういっただけで
そういうアーキテクチャがあるわけではない。
「CISCをRISCライクな単純命令に分解して高速化しました」の方向を突き詰めたのがPentium4で
とっくにそっちは死に筋だよ
今はどっちかというとCISC命令を内部で融合して命令数を減らして高速化するアプローチが高速化の中心なので
「CRISC」は実態を表していない。
どっちかというと今の方向性は2006年の「Wide Dynamic Execution」でしょう
870:デフォルトの名無しさん
15/07/23 05:59:11.25 fN1C2EA/.net
今のCoreMAはCISCを別のCISC=uOPに変換して実行している所だな。
それは分解というより変換と言った方が正しい。
uOPはハードワイヤで実行可能な実行単位を基本としており、最初はRISC的なものであったが世代を追って高機能化して今は可変長のCISCになっている。
x64をそのまま使わないのはuOPが一部x64よりも高機能になったこともあるがベースはやはりx64の素性が悪いからでわざわざワンクッションおいてもuOPに変換した方が性能が出るからである。
一度変換した命令はキャッシュされ再利用されるので複雑なx64命令をデコードするのは最初の一回だけで良い。
命令がキャッシュにある間はデコーダは止まっていて電力を食わないようになっており、消費電力を気にすることなく大規模なx64デコーダを実装して性能を高めることができている。
871:,,・´∀`・,,)っ-○○○
15/07/23 08:12:10.12 tlVBnSRn.net
またどうしようもないおっさんがいる。たのむからブログやツイッターにでも引きこもってくれ。
872:,,・´∀`・,,)っ-○○○
15/07/23 08:32:09.52 tlVBnSRn.net
てかμOPsは可変長じゃねーよヴァカジャネーノ
いやたとえ可変だったところでμOPs cacheの1エントリに2~3μOPs書き込めるわけではないがな
1μOpsあたり何バイトだと思ってるの?
まあ40バイト程度だがな。
4μOPsフェッチするだけで160バイト/clk。4命令をデコードするより電力効率が多少ましなだけで
別に省エネでもなんでもねーわ。格納効率は最悪。
Cortex-A57には同じ目的に近いloop buffer(SNB以降のそれよりNehalemのそれに近い)があるが
都度デコードしたほうがマシなくらいなのでA72では削除された。
873:デフォルトの名無しさん
15/07/28 12:23:24.90 ss5oXPlA.net
なんか初心者スレッドって感じじゃなくなってるような
ここで完全初心者の俺が質問すると微妙だが
アセンブラというかlinuxカーネルの質問なんだけど
システムコールするとスタックとかプロセス空間が切り替わっちゃうらしいんだけど
そこでレジスタに乗り切らない文字列とかってどうやって渡してるんでしょうか
874:,,・´∀`・,,)っ-○○○
15/07/29 00:57:18.39 PIgMeuM3.net
ポインタ渡し
875:デフォルトの名無しさん
15/07/29 10:18:54.90 7dNzVewM.net
普通にポインタで渡してmemcpyみたいなことをしてる。ただカーネル内だとNULLに触れて死ぬのは許されないので、アドレスチェックしてmemcpyみたいなことをしている。
URLリンク(lxr.free-electrons.com)
プロセス空間変わるといってもユーザー空間はシステムコールを呼んだプロセスと同じアドレスが見えるようになってる。
カーネル空間全プロセス共有、ユーザー空間対象プロセスと共有みたいな配置になる。
(なのでカーネル空間用のアドレス必要で32bit OSだとユーザー空間は2GBとか3GBしか持てないとかになる)
876:デフォルトの名無しさん
15/07/29 23:57:28.65 zpCxDSCd.net
そうか普通にポインタ渡しなのか
>>852-853
>システムコールを呼んだプロセスと同じアドレスが見えるようになってる。
分かってない事が多すぎる・・・
877:デフォルトの名無しさん
15/07/30 00:27:18.11 1ZSGrKWz.net
というかシステムコールではアドレス空間変わらなくて、ページごとにRing3(ユーザーモード)から読めるかどうかみたいなのが設定されてるとかだったはず。
Linuxだと、
- 0-3GB プロセスごとのユーザ空間のメモリがマップしてある。Ring3 でもアクセスできる
- 3GB-4GB 全プロセスで共有のカーネル空間メモリがマップしてある。Ringからしかアクセスできない。
みたいになってたはず。
システムコールを呼ぶと、アドレス空間は変わらないけど、Ring0になるので、0-4GB全部アクセスできるようになる。
(Ring1,2の扱いはよく知らない)
878:デフォルトの名無しさん
15/07/30 01:05:18.46 UjoOxrCo.net
>>855
聞いた話だけどほとんどのプロセッサがユーザーモードとシステムモードの2種類しか持たなくて、
x86/64のように4種類も持っている方が珍しいんだと
そしてほとんど真ん中の2個は使われてないんだってさ
879:デフォルトの名無しさん
15/07/30 01:14:35.07 HdXuYlDO.net
システムコールは、呼び出したスレッドとは違う、カーネルのスレッドで実行されるって認識でOKですか?
880:デフォルトの名無しさん
15/07/30 01:23:21.48 unLWCujK.net
NG
881:デフォルトの名無しさん
15/07/30 01:27:27.60 HdXuYlDO.net
システムコールは、呼び出したスレッドで実行されるのですか?
それなら、自分のコードは特権になれなくて、カーネルのコードは特権になれるのは何故ですか?
882:デフォルトの名無しさん
15/07/30 01:31:28.62 unLWCujK.net
定められて手順を踏んで特権モードに切り替えてるから
883:デフォルトの名無しさん
15/07/30 01:36:35.97 HdXuYlDO.net
同じ手順を自分のコードではとれないのは何故ですか?
884:デフォルトの名無しさん
15/07/30 02:09:02.32 1ZSGrKWz.net
syscall, sysenterとかでググるといくつか解説が見つかると思う
URLリンク(www.marbacka.net)
自分で書いたプログラムでもカーネルモードに切り替えられるが事前に決められたアドレスにしかジャンプできない。
885:デフォルトの名無しさん
15/08/01 18:40:05.13 +UL3i04M.net
SHのMOV.L命令@(disp,PC),Rnで@(H'0004:8,PC)の場合pcから8バイト先にあるって意味ですか?
886:デフォルトの名無しさん
15/09/03 17:35:32.18 6eoHy3Qx.net
アセンブラで遊ぼうと思ったミジンコだが16bitリンカが手に入らないでござる
lnk563.exe ってwin8じゃ使えないの?
887:デフォルトの名無しさん
15/09/03 18:57:14.49 NJB3TdQy.net
方法1.リンカ要らずのNASM等を選ぶ
方法2.どうしてもMASMでなきゃ嫌なら実行環境でリンカを使う
888:デフォルトの名無しさん
15/09/03 19:49:38.34 ACT9XNdq.net
URLリンク(alink.sourceforge.net)
URLリンク(www.agner.org)
889:デフォルトの名無しさん
15/09/03 21:31:27.84 6eoHy3Qx.net
人がいた
ありがとう NASMを使ってみるよ
890:デフォルトの名無しさん
15/10/25 08:21:51.96 gC05hgZm.net
>>855-856
でもその多階層のおかげでハードウェア仮想化がやり易かったのも事実で
Ring0でハイパーバイザを動かしてRing1でゲストOSのような使い方ができる
891:デフォルトの名無しさん
15/11/03 09:18:31.95 XRdoJJRy.net
32ビットにアセンブルしかできないコンパイラがありこれを64ビット環境で実行したいんだけど
どうすればいいですか?
fib.sはそのコンパイラで作成
gcc -g -O2 -Wall fib.s -lm
エラーを1つ抜き出すと
fib.s :30: Error: invalid instruction suffix for push
30行目にはpushl %eax → pushq %raxと直すとエラーは消える
892:デフォルトの名無しさん
15/11/03 11:44:49.57 Fliardzw.net
普通に32ビット環境向けにコンパイルするんじゃダメなんですかね?
gccのオプションに-m32を追加してやって
893:デフォルトの名無しさん
15/11/03 14:30:53.52 C0Kah9v/.net
できました
ありがとう
894:デフォルトの名無しさん
16/01/05 12:01:39.79 uJ085arg.net
林晴比古さんのアセンブラ入門見ているんだけど
COM形式で書かれたHelloworld とASM形式の違いって何?
895:デフォルトの名無しさん
16/01/05 15:07:27.87 udrFqHkE.net
EXEフォーマット
896:デフォルトの名無しさん
16/01/06 19:37:15.05 yluT1kPN.net
俺が村田だ
897:デフォルトの名無しさん
16/01/08 19:57:01.78 9w8rhkkq.net
俺は田村だ
898:デフォルトの名無しさん
16/01/12 19:49:30.00 2tQBU5BA.net
俺は田田になろう
899:デフォルトの名無しさん
16/01/13 18:34:18.73 IMboGSkT.net
じゃあおれは村村
900:デフォルトの名無しさん
16/01/14 03:26:52.36 byr4bFjT.net
ムラムラとな
901:デフォルトの名無しさん
16/01/14 15:01:07.24 YerkhKe+.net
くだらねえこと書いてる暇があったらコード書け
902:デフォルトの名無しさん
16/02/07 15:53:45.03 zSKdEvcq.net
C F G7 C
903:デフォルトの名無しさん
16/02/07 18:06:15.79 2wykn2ry.net
れいさん乙
904:デフォルトの名無しさん
16/03/26 03:07:39.25 djw8qeqA.net
ムッシュ
905:デフォルトの名無しさん
16/04/26 21:52:15.84 Sbprxlsu.net
アセンブラ学びたいんですがアセンブラやるならまずCASLやれと言われて
CASLについて調べたんですけどもCASLとアセンブラって全くの別物ですよね。
CASLを理解出来ればアセンブラ習得に役に立つとかそういうものはあるんですか?
PC周りについても全く詳しくないのでそういうのも兼ねて学習できる言語ならいいのですが
906:デフォルトの名無しさん
16/04/27 01:00:54.66 vpv25bM3.net
アセンブラは、各CPUで異なるから、一々、個別のCPU命令を覚えていられない
一般的なアセンブラの記法である、CASL2, LLVM などの仮想アセンブラで、勉強する
実行時、
仮想アセンブラ → 各CPU個別の命令
へと、変換される
907:デフォルトの名無しさん
16/04/27 02:57:44.07 /k94gDMl.net
>>883
まずは取っつきやすい32bit用でどうぞ
URLリンク(www.masm32.com)
908:デフォルトの名無しさん
16/04/27 09:53:26.31 EoTK5XPo.net
>>884->>885
回答ありがとうございます。
自分はollydbgでcrackmeを解くことが出来るスキルを付けることを目標にしてるのですが
でもプログラミング経験がほぼ無いのでまずとっかかりにCASLやって...その後アセンブラを学ぼうと思ってるんですが
学習方法は間違えてないでしょうか?
909:デフォルトの名無しさん
16/04/27 13:29:56.10 mkzH47Ig.net
それとアセンブラにも
PIC,マイコン、Z80など色々種類があるみたいですが、どれが自分の目的にあってるか教えてほしいです
自分の環境はwin7,64bitです。この環境でも学習できるものを学びたいです
910:デフォルトの名無しさん
16/04/27 15:09:51.70 +os+Vu+g.net
>>886
CASLやっても実践ではあまり役に立たないので、やりたいことが決まっているのであれば、
何もわからなくてもとにかく以下の例の通りにそのままいじってみる。
URLリンク(grayhat-3dmovie-programming.com)
最初はわからないことだらけでも、基本はIntel 386 CPUの命令の羅列なので、
ollydbgの画面で1ステップずつ実行しながら理解するのが一番早い。
911:デフォルトの名無しさん
16/04/27 23:45:35.49 i86kqw6x.net
>>888
命令も何も理解してないまま、実戦に移って知識が付いていくものですか?
アセンブラはかなり難しいイメージがあるので基本を押さえてないとデバッグは無理と
勝手に自分の中で思っていたのですが…
時間はたっぷりあるので確実に覚えたいです
912:デフォルトの名無しさん
16/04/28 01:03:20.60 D/2kUBT7.net
メモリとレジスタだけ理解してりゃ、命令なんかその場で覚えりゃ十分
ビット演算とかその辺の動きは理解が必要かもしれないが、その程度
特権命令とかセグメントうんたらが必要になるなら、それはまたその時
ただ、x86のDOSでbios呼んで何かやる以外、初心者がアセンブラだけで簡単に出来ることなんて、なにもないけどな
それなら、C/C++の一部をアセンブラコードを出させてそれを読むとか、一部をアセンブラで書いてみるとかの
主体がC/C++にある方がずっとやりやすい
913:デフォルトの名無しさん
16/04/28 01:04:41.95 D/2kUBT7.net
メモリとレジスタだけじゃなく、フラグとスタックの仕組みくらいは最初に覚えといた方がいいか
914:デフォルトの名無しさん
16/04/28 02:42:09.05 atZPORcr.net
>>889
基本から勉強しようとする気持ちはわかるけど、いいデバッガ・アセンブラがあるんだから
実行しながら覚えたほうが早い。CPUのマニュアルを横に置いて、1ステップ実行したら
状態フラグとレジスタの値がどう変わるか見れば動作はわかる。
ollydbgはアセンブルもできるらしいから、1~数行のコードを書いて実行させることもできる。
とにかく毎日デバッガとアセンブラに触ること。動かして失敗しながら覚えること。
わからないことはその都度調べれば間に合う。
915:デフォルトの名無しさん
16/04/29 21:22:05.78 sUt0Q0jr.net
よくわかりませんけどね、
CとかVBをアセンブラに変換するソフトを作れば、
なんかアレな感じじゃないですか。
916:デフォルトの名無しさん
16/04/29 21:53:31.21 zOCFIMbn.net
VBなんか知らんが
ほぼ全てのCコンパイラが、Cで書かれたコードをアセンブラに変換して出力する機能を持ってるよ
それしかなく、実際に機械語に変換するのはアセンブラプログラムにまかせてしまっているコンパイラもある
917:デフォルトの名無しさん
16/05/01 15:51:33.79 tKi6j9CT.net
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
URLリンク(twitter.com)
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポート�
918:冾キることができますが、Port0でも利用可能です(接続数は少なくなります) 検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません 。
919:デフォルトの名無しさん
16/05/03 21:31:55.58 rzpxdG1A.net
初心者がアセンブリ言語を覚えたいと言ったとき
その8割は「Windowsで動くゲームを作りたい」「Windowsで動くゲームを改造してチートしたい」といったものであり
勉強すべきはWindows環境についてであってアセンブリ言語についてではなかったりする
920:デフォルトの名無しさん
16/05/04 18:17:05.69 cRuVDbfJ.net
アセンブラの教科書よりやねうらお先生のぱんつの方がベスト
921:デフォルトの名無しさん
16/05/06 21:38:41.15 OWOfsawE.net
おすすめの書籍教えて
922:デフォルトの名無しさん
16/05/07 10:45:20.57 Kik6brAm.net
いまどきのLLVM
923:デフォルトの名無しさん
16/05/07 13:09:41.32 U+Yqq8Eg.net
チートなんて、まず無理
メモリの値を変えても、サーバーと通信したときに、
パリティなどをチェックして、改造されていないかどうかを確かめるから、ばれる
ルーターの中には、伝送誤りが起こっても、パリティを変えて、正常と扱うものがあるので、
ドラクエXでは、そもそも通信されたデータを信用していない
だから、常に独自にチェックしている
924:デフォルトの名無しさん
16/05/07 15:50:50.22 4GJcXDs9.net
所謂チートバグみたいにオフゲーでも改造して挙動を楽しみたいとかあるのよ
925:デフォルトの名無しさん
16/05/07 16:22:32.96 3mhGs5Tp.net
>>900
オンラインゲーム前提で話してて草生える
926:デフォルトの名無しさん
16/05/08 11:24:47.08 NDoMe0zH.net
C++のプロローグを詳しく説明してるwwwか書籍はないですか?
www漁るとCばっか
927:デフォルトの名無しさん
16/05/08 11:45:33.85 pwQcqOb7.net
努力不足
やりなおし
928:デフォルトの名無しさん
16/05/09 11:36:13.64 noyNIse2.net
904です
分かりやすく書いてあるのみつけて、解決しました。
929:デフォルトの名無しさん
16/05/10 00:50:37.74 1N2kVLqm.net
お疲れ様
930:デフォルトの名無しさん
16/05/31 19:54:30.30 AfHNbOje.net
やる気のある者は去れ
931:デフォルトの名無しさん
16/06/12 14:47:28.03 nRDxQz3o.net
アセンブラの&はどういう意味?
結合? andと同じ?
932:デフォルトの名無しさん
16/06/12 18:20:14.59 fuUaUmmT.net
何のアセンブラだよ。
933:デフォルトの名無しさん
16/06/12 18:58:05.37 nRDxQz3o.net
>>909
ARM・・でいいのかな?
そこもよくわからない・・・
934:デフォルトの名無しさん
16/06/12 21:02:59.04 XGvNNTcY.net
擬似命令だったり、&hとして16進数を意味したり、アセンブラによっていろいろあるけど
ARMだとどうなんだろ
gasだとまた違ったりするだろうし
意外にbytecode用の中間出力だったりする可能性もあるし
(見たこと無いのでよく知らない)
935:デフォルトの名無しさん
16/06/12 21:07:59.02 MHUKBP3O.net
可能ならソース貼れば?
936:デフォルトの名無しさん
16/06/12 21:53:24.12 nqTn+/vX.net
llvm IRはぱっと見だと&記号使ってないような
intel記法、AT&T記法でも使ってないよね
独自のマクロとかだとソース無いと詰むな
937:デフォルトの名無しさん
16/06/15 19:49:26.85 RQgSJKk0.net
今の時代にアセンブラが必要って、
どういう分野のプログラマーなんだろ。
少し前に、非公式のファミコンソフトが出たけど、
そんなのしか思いつかん。
938:デフォルトの名無しさん
16/06/15 22:25:44.33 yIJ2BCTZ.net
安い1ボードPCが手に入るから、Cとかで書いたプログラムをOS無しで動かすとかしたいとき、
ブートローダからバトンもらってCに渡すような部分はアセンブラじゃないかな。
939:デフォルトの名無しさん
16/06/16 23:23:22.10 VLfFMudl.net
>>914
ファームウェア、OS、チップ周りのコードは全部アセンブラ。
アプリの人がくだまいてるのは知識を自慢したいだけ。あとはレトロ趣味。
940:デフォルトの名無しさん
16/06/17 00:47:33.75 g/0le+GF.net
>>916
いつの時代からタイムスリップしてきたんだ?
941:デフォルトの名無しさん
16/06/17 03:17:01.37 PNM3xCxJ.net
>>917
俺がアセンブラで書いたことあるのは、ブートローダ、カーネルプリミティブとかスケジューラ、MMU周り、ファームウェアとかコントローラ周りくらい。アプリでアセンブラ書いたことは一度もない。逆アセとか解析とかはまあするけど。
ついこないだだと思ってるけどな。
ようはCが動く状態になったらアセンブラなんかで書く必要ないってことだけど、違うって言いたいの?
942:デフォルトの名無しさん
16/06/17 08:09:43.93 ecrIc0Au.net
あ、全部ってのは間違いで、ドライバとかファイルシステムとかCで書けるとこはもちろん
Cで書く。
アセンブラが必要なのはCでかけないような処理か、Cコンパイラがないような環境かのどちらか。
ここで延々と話してる内容がそのどちらでもないような話が多いみたいなんで、詳しい人達が互いに、知識を競ってるようにしか見えないのが残念。
943:デフォルトの名無しさん
16/06/17 12:03:29.49 WSjlHFjC.net
マ板でやれって話しかないからな
944:デフォルトの名無しさん
16/06/17 23:36:40.98 5J9spy9L.net
>>915
こんな本もある
12ステップで作る 組込みOS自作入門
URLリンク(kozos.jp)
945:デフォルトの名無しさん
16/06/18 18:13:15.88 d8nab9By.net
アセンブラについてはノー知識だけど、URLリンク(os.phil-opp.com) で
x86_64でgrubからバトン渡されてRustのコードにバトン渡すまでのアセンブラが説明してあって興味を持ちました
アセンブラの命令自体は簡単だけどそれ以外の知識が沢山要るので大変なのだなあと感じています
今まで特に気にしてなかったリンカの意味とかnmで見える.textの意味とかが分かってきて楽しい
946:デフォルトの名無しさん
16/06/20 22:36:43.19 /Loo3J/M.net
OSの立ち上げ部分を勉強したいなら、Rustっていうので書かれたサンプルをCで書き直してみればいい練習になると思うよ。
947:デフォルトの名無しさん
16/06/24 13:21:30.40 /3QNO0r0.net
>>918
おまいさんが書いたと言ってるosはどこからダウンロードできるの?
948:デフォルトの名無しさん
16/06/25 09:35:23.63 +uLhlbXC.net
>>924
公開はしてない。Linuxならソース探せば上げれると出来ると思うよ。プロプライエタリな奴は上げれない
949:デフォルトの名無しさん
16/06/27 18:39:49.55 gm7Fhm/d.net
>>924
人のもの見る暇があるなら自分で書いてみればいいのに。
950:デフォルトの名無しさん
16/06/28 02:56:54.16 P6ezUFsS.net
>>922
これかなりいいよね
951:デフォルトの名無しさん
16/06/28 15:47:26.63 Xfds6bLp.net
質問します
LDR R1, =(aLimitfpsToD - 0x18C0FF8)
ってのがあるんですがこのときR1レジスタに入るのは0x18C0FF8のメモリ番地が
入るだけでしょうか?数値は入らないですよね?
変な質問ですいません
952:デフォルトの名無しさん
16/06/28 16:02:52.63 5ckL0Bml.net
数値が入る
しかも全然違う
953:デフォルトの名無しさん
16/06/28 18:21:05.37 Xfds6bLp.net
>>929
回答ありがとうございます。
差し支えなければどんな数値が入るか教えてもらえませんか?
954:デフォルトの名無しさん
16/06/28 18:45:43.76 nfEKCddO.net
なんのアーキテクチャか分かんないけど、aLimitfpsToDってのがどこかのラベルで0x18C0FF8からのオフセットが入んじゃないのかな?
(と=は知らんw
955:デフォルトの名無しさん
16/06/29 14:40:17.96 15yOy0V1.net
アセンブリ(言語)
956:とアセンブラを混同している人がたまにいる、という話題は既出ですか?
957:デフォルトの名無しさん
16/06/29 15:03:39.28 A93JdvJw.net
なにアセンブリをアセンブラでアセンブルするだけの事だ
混同されても実害はない
958:デフォルトの名無しさん
16/06/29 16:06:32.52 +NpkjfxL.net
はやてのように アセンブル
959:デフォルトの名無しさん
16/06/29 16:21:03.35 I/2QdAFu.net
あまり気にしなかったけど、「アセンブラのコード書く」とかは間違いなの?普通に言ってたけど。アセンブリで書くとか違和感あるけどな。
960:デフォルトの名無しさん
16/06/29 17:32:10.33 V1IZrtk2.net
assembler 組み立て工、組み立てる人、アセンブラ
assemble ~を組み立てる
assembly 組み立て
assembly language 組み立て用言語、アセンブリ言語
961:デフォルトの名無しさん
16/06/29 17:50:54.09 C8/RLHPN.net
>>932
URLリンク(en.wikipedia.org)
An assembly (or assembler) language,[1] often abbreviated asm, is a ...
References
1. Assembler language, IBM Knowledge center
URLリンク(www.ibm.com)
962:デフォルトの名無しさん
16/06/29 19:18:46.15 QKmYa11M.net
>>932
assemble+er、義務教育レベルの英語も理解できていないという事。
mayonnaiseは、フランス語だから、英語の規則は当てはまらないけれど、それでもmayoreには、ならない。
無理矢理ならば、mayonnaiserか、mayonnaiseist。
そんな事も解らない人達なんだよ。
963:デフォルトの名無しさん
16/06/29 19:20:04.12 QKmYa11M.net
>>937
それは、アセンブラで使用する言語って意味ね。
964:デフォルトの名無しさん
16/06/29 21:49:22.20 u3VATEok.net
言語のことをアセンブリって言うのは分かるけど、独習C、独習C++、独習アセンブリ?
アセンブリとアセンブラは慣例的にはあまり区別されてないように思うけどな。
965:デフォルトの名無しさん
16/06/30 15:33:47.45 VmcBuUmn.net
アセンブラで言語そのものを指す人もいれば、アセンブリを機械語に翻訳するプログラムだけ、って人もいる
区別しないと意図が伝わらない場合がどんだけあるかを考えると、さして深刻な問題じゃないような
966:デフォルトの名無しさん
16/07/16 23:38:52.13 MXamywZj.net
アッセンブルEX10
967:デフォルトの名無しさん
16/07/17 02:26:22.26 u2dAluYM.net
日本語としては、区別さえできればどちらでもいい
要は話者が寛容であるかどうかだ
968:デフォルトの名無しさん
16/08/11 20:38:10.64 CgUWJQKrz
CallWindowProcAにOllyDbgでログ付き条件ブレークポイントをかけて、ウィンドウで受け取るメッセージの詳細を出力する時にどうして式はEBP+8じゃないといけないのでしょうか
EBP+8にはウィンドウのハンドルが入っていて、特にMSG構造体へのポインタとかではないように思うのですが…
969:944
16/08/12 17:12:44.32 URvVD4gpm
CallWindowProcAぜんぜんウィンドウプロシージャじゃなかった
解決しました
970:デフォルトの名無しさん
16/10/15 10:48:09.91 eBSmAB5D.net
PE フォーマットの解説を知らないか?
971:デフォルトの名無しさん
16/10/15 12:49:07.08 Z8SQUEFb.net
仕様書がMSDNにあるはずだけどそこに書かれてない話?
972:片山博文MZ ◆T6xkBnTXz7B0
16/10/16 14:46:56.15 Ou+5Vobn.net
>>946
Resource Hackerのヘルプを参照
973:デフォルトの名無しさん
16/10/16 14:48:03.15 eOEStkDD.net
なんとか洋介山の本捨てたつもりだったがまだあった
来月捨てよう
974:デフォルトの名無しさん
16/10/18 19:22:34.09 Pul0IDVM.net
つBOOK・OFF
975:デフォルトの名無しさん
16/11/16 23:15:55.17 d7D9Ori4.net
4bitアセンブラはどのスレで活動すればいいですか?
976:デフォルトの名無しさん
16/11/17 00:05:52.27 d/bxtnYG.net
>>951
75X?
977:デフォルトの名無しさん
16/12/16 22:59:32.63 sTWK9lm6.net
>>952
縦積み命令がわからない
MOV A,#0
MOV A,#2
MOV A,#4
こういう書き方ってなんなの?
978:デフォルトの名無しさん
17/01/05 19:44:04.66 VylnptJy.net
助けてください
仕事で使わなきゃいけないのですが職歴コンビニバイトのみの新人で何から何まで一切分かりません
h8なんとかっていうpdfだけ渡されて、これで頑張ってと言われました
979:デフォルトの名無しさん
17/01/05 20:15:49.65 4pCGEQz7.net
そんなやつに仕事任すわけねーだろw
980:デフォルトの名無しさん
17/01/05 20:54:33.92 NEvicUSZ.net
>>953
たぶんMOVじゃないんじゃないかと。
縦積みが必要なのは、条件分岐が無いから。
ある条件が成立すると、次の命令がスキップ(実行されない)。
よって、この組み合わせ、すなわち、縦積みで条件分岐ができるようになるんだ。
981:デフォルトの名無しさん
17/01/05 23:15:42.12 xlHoBTkZ.net
>>954
年明けからジョークですか
982:デフォルトの名無しさん
17/01/06 06:59:42.56 KJDRn8ud.net
いや本当なんです
今まではそれの図みたいなやつを直すのをやらされてました
とにかくでてくる命令ひとつひとつが分からないのですがやさしく解説してるサイトとかありませんか
983:デフォルトの名無しさん
17/01/06 09:33:41.11 aKJxE5Q6.net
H8 入門
でくぐれ
984:デフォルトの名無しさん
17/01/06 15:26:03.02 XtKi9eaG.net
>>954
h8ならこっちの板の方がやさしいお兄さんが大勢いる
URLリンク(rio2016.2ch.net)
985:デフォルトの名無しさん
17/01/06 21:51:45.02 oEH4w/58.net
>>958
コンピュータの基礎からやらなきゃわかるわけないのに、何から何までわからない人ができる仕事じゃない。
医学書渡されて、これ見ながら手術してと言われるようなもん。基礎知識と経験なしにできるわけがない。
他の仕事をお勧めします。
986:デフォルトの名無しさん
17/01/16 12:53:22.13 YsJi63qB.net
それが本当なら
なにもわからん人にいきなりそんなことやらせる会社は早く辞めた方がいい
後でどんな難癖つけられるか分かったもんじゃない
987:デフォルトの名無しさん
17/01/25 06:53:06.66 UsTZ20bb.net
もらったPDFに全命令書いてあるというオチがありそうなんだが
メーカ配布のやつでフラグ変化から消費クロックまでしっかり書いてあるやつ
988:デフォルトの名無しさん
17/01/29 04:01:17.79 ha1UN0gn.net
アセンブラはじめるならLinuxでやるといいよ
DOSと同じような感覚でアセンブラプログラミングができるから
こんな感じ
Linux でアセンブリプログラミング
URLリンク(www.mztn.org)
Linux で64bitアセンブリプログラミング
URLリンク(www.mztn.org)
Linuxでのアセンブル方法はこんな感じ
as -a=hogehoge.lst -o hogehoge.o hogehoge.s
ld -o hogehoge hogehoge.s
989:デフォルトの名無しさん
17/01/29 04:03:45.58 ha1UN0gn.net
UbuntuだとQEMUを入れるだけでQEMU+binfmtの設定が自動せされるから
ライブラリへのリンクを貼るだけで他のCPUのバイナリをそのまま実行できるようになる
UbuntuだとARM、MIPS、PowerPCができる
64bitARMならこんな感じ
sudo apt-get install qemu
sudo apt-get install g++-aarch64-linux-gnu
sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib
sudo ln -s /usr/aarch64-linux-gnu/lib /lib/aarch64-linux-gnu
32bitARMならこんな感じ
sudo apt-get install qemu
sudo apt-get install g++-arm-linux-gnueabihf
sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib
sudo ln -s /usr/arm-linux-gnueabihf/lib /lib/arm-linux-gnueabihf
Cのコンパイル方法はこんな感じ
aarch64-linux-gnu-gcc -O2 -o hogehoge hogehoge.c
gcc-arm-linux-gnueabihf-gcc -O2 -o hogehoge hogehoge.c
アセンブル方法はこんな感じ
aarch64-linux-gnu-as -a=hogehoge.lst -o hogehoge.o hogehoge.s
aarch64-linux-gnu-ld -o hogehoge hogehoge.s <
990:br> gcc-arm-linux-gnueabihf-as -a=hogehoge.lst -o hogehoge.o hogehoge.s gcc-arm-linux-gnueabihf-ld -o hogehoge hogehoge.s できたバイナリは普通に実行できる ./hogehoge バイナリがどのアーキテクチャかはfileコマンドで確認できる file hogehoge
991:デフォルトの名無しさん
17/01/29 04:33:05.28 ha1UN0gn.net
修正
Linuxでのアセンブル方法はこんな感じ
as -a=hogehoge.lst -o hogehoge.o hogehoge.s
ld -o hogehoge hogehoge.o
アセンブル方法はこんな感じ
aarch64-linux-gnu-as -a=hogehoge.lst -o hogehoge.o hogehoge.s
aarch64-linux-gnu-ld -o hogehoge hogehoge.o
gcc-arm-linux-gnueabihf-as -a=hogehoge.lst -o hogehoge.o hogehoge.s
gcc-arm-linux-gnueabihf-ld -o hogehoge hogehoge.o
992:デフォルトの名無しさん
17/01/29 05:30:13.84 ha1UN0gn.net
ちなみにx86_64上のLinuxで32bitのバイナリを作成したい場合はこう
x86_64のLinuxでのCの32bitのx86バイナリのコンパイル
gcc -m32 -O2 -o hogehoge hogehoge.c
x86_64のLinuxでの32bitのx86アセンブル
as --32 -a=hogehoge.lst -o hogehoge.o hogehoge.s
ld -melf_i386 -o hogehoge hogehoge.o
993:デフォルトの名無しさん
17/01/29 06:40:56.41 ha1UN0gn.net
nasmでのx86_64のLinuxでの32bitアセンブル
nasm -f elf hogehoge.s
ld -melf_i386 -o hogehoge hogehoge.o
nasmでのx86_64のLinuxでの64bitアセンブル
nasm -f elf64 $1.s
ld -o $1 $1.o
Ubuntuでのnasmのインストール方法
sudo apt-get install nasm
994:デフォルトの名無しさん
17/01/29 06:53:32.55 ha1UN0gn.net
nasmでリスティングファイルも一緒に出力したい場合は
32bit
nasm -f elf -l hogehoge.lst hogehoge.s
64bit
nasm -f elf64 -l hogehoge.lst hogehoge.s
995:デフォルトの名無しさん
17/02/08 20:50:02.86 Mk3WVo/H.net
intel表記じゃないから却下
996:デフォルトの名無しさん
17/02/09 06:59:54.86 z8fk+TnA.net
MASM互換でないだけで、ニモニック自体はIntel記法やで
997:デフォルトの名無しさん
17/02/22 00:33:42.60 +9W7kpIJ.net
nasmでの疑似命令equ,res*, defineの違いって何ですか?
また
gasでのそれらに相当するものは?
998:デフォルトの名無しさん
17/02/23 01:10:33.00 OEoJPS/I.net
EQU 定数で置き換える
RES*シリーズ 指定単位×サイズのメモリ領域を確保する
%DEFINE 一行マクロ、関数みたいに引数取れる
gasは手書きに使うような代物じゃないから忘れていい
999:デフォルトの名無しさん
17/02/23 19:30:51.76 yLUryXxs.net
どうもです
色んな事が色々ごっちゃになって分けわからんくなってました
すいません基本gasでやってるんです
nasmの情報のが多いのでそっから変換したりしてやってます
まぁ確かに無駄が多いですが趣味の範囲なんです
なので無駄なんだけど無駄じゃないんです
それにやってないけど多分エディタによっては設定すれば自動挿入は普通に出来るんじゃないかと思ってます
1000:デフォルトの名無しさん
17/02/23 19:33:38.38 eG9NqkD/.net
やりたければやればいい
やってはいけないなんてことはまったくない
1001:デフォルトの名無しさん
17/02/24 18:12:05.71 3gLAKAVZ.net
では頑張る若者にプレゼントをあげやう
URLリンク(www.ibm.com)
IT界の巨神IBMさんが書いてくれたgasとnasmの比較記事だ
1002:デフォルトの名無しさん
17/02/24 19:12:19.30 f3uHJh0R.net
intel構文だとソースとデスティネーションが逆なんだよね。紛らわしい
1003:デフォルトの名無しさん
17/02/24 20:40:37.72 1tN3aNfb.net
不通にあるあるなんだが
1004:デフォルトの名無しさん
17/02/28 07:00:33.75 4RyJuYrh.net
68系も普通にやってたから、そこら辺はすぐに頭を切り替えられた
だがニモニック自体の変更は許せん……
1005:デフォルトの名無しさん
17/02/28 14:52:11.20 OcBIGmL7.net
mov a,b がa←bじゃなくてb←aなの?
1006:デフォルトの名無しさん
17/03/02 18:57:27.30 ZV5SMkF2.net
馬鹿には無理
1007:デフォルトの名無しさん
17/03/03 13:31:26.32 nBceVUOh.net
movならop1→op2
loadならop1←op2
っつー感覚
1008:デフォルトの名無しさん
17/03/03 14:06:44.03 IUFykjWp.net
leaは?
1009:デフォルトの名無しさん
17/03/06 16:43:49.83 7tw9lmnR.net
loadだから←かな
1010:デフォルトの名無しさん
17/03/08 21:11:56.27 w2yLRFMN.net
>>982-984
jmp 980
以下無限ループ
1011:デフォルトの名無しさん
17/03/09 00:44:05.09 9+K5Dr1K.net
>>985
jr FC
1012:デフォルトの名無しさん
17/03/10 23:15:09.01 fJKFVkkF.net
???
FC?
何それ?
�
1013:竄チた事ない人かな? 弾かれない?
1014:デフォルトの名無しさん
17/03/11 10:32:39.89 JsoExgwj.net
ラベルが定義されてたのかも知れないし
どうせ $FC だったり #FC だったり 0xFC だったり FCh だったりするんだから
どうでもいい
>987 こそアスペなんだろ
1015:デフォルトの名無しさん
17/03/11 10:57:57.87 wNy7VRXS.net
>>986がダメなのは
JRでの相対ジャンプの計算では、基準となるPCは命令実行後のアドレスから
つまり、>>985においてJRを実行する時は985からの基準してカウントする必要があり
>>985と同じく>>981にジャンプするためには、JR 0FBhと計算しなければいけないとわかっていないこと
1016:デフォルトの名無しさん
17/03/11 11:25:17.84 JsoExgwj.net
>>989
そもそも 1レス 1byte って誰が決めたん
1017:デフォルトの名無しさん
17/03/17 11:34:43.20 pwo5j4El.net
オフセットが奇数ってのも8ビットっぽくていいね
1018:デフォルトの名無しさん
17/03/17 18:39:54.13 lkugX1fn.net
ソフト組んでると、何で奇数番地にジャンプしたり奇数番値から実行するのが良くないのかよくわからないんだよね。
1019:デフォルトの名無しさん
17/03/21 15:42:23.11 94U0uFA6.net
回路が複雑化しそう
1020:デフォルトの名無しさん
17/03/24 03:52:31.48 6tZXs6+Y.net
どのCPUの話なのか分からないけど、基本的にはアクセス単位が16bitや32bitだからかと。
x86の場合、外部仕様は可変長命令だけどマイクロコードはRISCっぽい処理なので
奇数アラインされると効率が悪くなる(場合がある)から
1021:デフォルトの名無しさん
17/03/30 19:44:57.04 /2QbeuLQ.net
奇数アドレスに16ビットアクセスしたら通常はバスサイクル二回に分割される
PCIはxxx1、xxx2、xxx3番地から32ビットバースト転送してもオーバーヘッドは1サイクルだけだけど
変態だわ
1022:デフォルトの名無しさん
17/04/13 00:30:13.60 qkqMClc4.net
当方の環境はWindows7 SP1 x64でml64.exeを用いて
これからアセンブラを勉強したいと思っています。
とりあえずまずは手始めにcの標準関数、
例えばprintfとかputsとかを呼び出して「hello,world」でも...
と思っているんですが、
一体どのファイルを「includelib」して「call printf」等すれば良いのか
わかりません。
今のところ「user32.lib」とか「kernel32.lib」とか「msvcrt.lib」とか
読み込んでいますが、「unresolved external symbol printf....」と
エラーがでてしまいうまくいきません。
ml64の環境でcの標準関数を呼び出すには、
一体どのlibファイルをincludeすれば良いのでしょうか?
1023:デフォルトの名無しさん
17/04/13 02:32:35.73 8XBnDqPS.net
libはリンクした?
1024:デフォルトの名無しさん
17/04/13 14:59:16.50 6bOxPLAt.net
msvcrt.libで行けると思うけど環境変数lib設定してある?
1025:デフォルトの名無しさん
17/04/13 15:09:29.21 m/ZfxtWH.net
Winでのアセンブラはあまりオススメしないなぁ。。。
結局Cの関数なWin32API呼び出しまくるんでCでええやん。。。ってなる。
アセンブラならDOSかPICとかのマイコンのがアセンブラ使ってる感があって面白いよ。
1026:デフォルトの名無しさん
17/04/13 17:04:04.99 lsSSpfTO.net
999
1027:デフォルトの名無しさん
17/04/13 17:36:16.85 1WMn3pSz.net
アセンブラ初心者スレッド 2
スレリンク(tech板)
1028:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています