機械語なら俺に質問しろ!その2
■ このスレッドは過去ログ倉庫に格納されています
漏れは今までにC、C++、Pascal、HSP、JS、VBなど 数々の言語を極めてきたがやはり一番手にしっくりくる言語は機械語だ。 だから、機械語のことなら何でも質問しろ! ただプログラムのコードなんかは長くなるがな。 あ、ASMの話でもいいよ。 RC 発振器 でぐぐったらwikiが先頭に来たけど、余計解らない語句ばかり出てきた(w 何となくだけど、どの原理もLSI内部に納めるほど微小化できるのかな?とは思った。 基板は、ユーザーブート領域に焼く方法の所で引っかかってるみたいです。 >>204 CPU内蔵ならクリスタルじゃなくてPLLじゃないの。 たぶんクリスタルよりPLLのほうが正確だし。 あ、なんかPLLも基準周波数にクリスタルがいるらしい。 勘違いだったかも。 CPU内蔵のPLLは、基準周波数を分周または逓倍するために使いますね。 204の話は、CPUみたいなLSIの内部に焼き付けられる原クロック回路は、 クリスタルみたいなデカいものじゃなさそうに思えるけど、どんなものなのかなあ・・・ ユーザーブート領域のコードが動いたらしいです。私が確認に行けるのは木曜ですが x86-64の64ビットモードで動かない32ビットx86の命令ってどんなものがありますか? DAAとかなくなったんでなかったっけ? あとLAHFとか。 ユーザーブート領域のコードが動いたのは誤報でした。FF7FC000〜の空間には コードが焼けない/読めない状態のままです。困ったなあ・・・ RX210 規制の間に本番用の基板でデバックが進みました。 デバック用の基板ではユーザ空間しか焼けませんでした。 ユーザーブート領域に焼いても、そこで実行したコードでROMアクセス違反は 発生します。ROMを焼くコードだけRAMにコピーしてそこを呼ぶ手法を採りました。 欲しい機能の実装はだいたい確認。引き合い時2人月だったお金も、3.5人月 もらえました。36度の書斎でのデバックは2,3日で済みました。やれやれ・・・ 汗が基盤に垂れなかったのだろうか いや、液状のほうの汗なw 書斎が32度以上のときは、アイスノンを頭に巻いて 30分ごとにリビングに避難しながらやってました。メインは未明の頃。 8085ではメモリマップトI/O(ex:F000番地が8251のTXD/RXD)しか やったことがないのですが、8085にもIN/OUT命令はありますよね。 オペランドは8bitのアドレス。 このIN/OUT命令を使うときはハードをどのように組むのですか? もうちょっとくやしくお願い。名前からすると「メモリじゃないよ」という信号みたい ですね。 IN 04h と書くと、メモリではない04番地からリードですね。 そのとき8251を04番地に配線?すると上と同じ機能が得られるのですか? 私が出会ったのは217のようなシステムばかりでしたが、それは偶々? 8251側ではRD/WR信号とアドレスのLSBでI/Oレジスタを区別していましたが IN/OUTを使おうと思うとその辺はどうなるのでしょう? LDA/STAは3バイトだけど、IN/OUTは2バイトだからこっちのほうが小さいけど そういう理由ではハードは決めないのですか? >>219 あんたの知っているシステムでは、8251自体はアドレスバス上位4ビットがONで下位ビットOFFのときに チップセレクトされるようにつながっているのだろう。 8251のチップセレクトをするに当たって、メモリ空間を使いたくない場合は、IO/Mをデコードして OFF(M)のときにチップセレクトされるようにすればいい。 私の知っているシステムでは、メモリ空間を広く取るためなどの理由でそうしていた。 命令長が理由でどっちを選択するか検討するという話は余り聞かないな。 壊れた動画ファイルをバイナリエディタで開いて、そこから一コマでも画像ファイルにして抽出することってできますか? 拡張子は3gpで昔携帯で撮ったものです 少し調べてみてmdatって文字列は確認できたんですが、ヘッダ周辺はだいぶ壊れて上書きされているみたいです バイナリ全くわからないんだけど、規則的に色の情報が配置されてるって単純な構造でもないのかしら… >>220 なるほど。聞いてみてよかったです。ハードの設計者の意向でそのような 切り分けがなされるのでしょうね。私の知っているシステムではアドレス上位4bit でチップセレクトされる先を決めるICが入っていました。220のやりかたのほうが 使う石が少なくできるような気がするのですが、私の顧客の伝統なのか拡張性? のためなのか、私の付き合った現場ではメモリマップトI/Oばかりでした。 8085+8259のシステムで、IRRレジスタを読む必要があります。 コマンドレジスタのアドレス0側を読むとIRRまたはISRが読め、その選択は リードに先立つOCW3でコマンドレジスタのアドレス0側に書きます。 似たコマンドでOCW2というのもあり、これもアドレス0側に書くのですが、 OCW2とOCW3の違いは、書き込み内容のbit4,bit3が01か00かで区別される と理解してよいでしょうか? SAUTO: ; store 16-bit automatic variable ; VAR = HL XTHL MOV E,M INX H MOV D,M INX H XTHL SAUTOX: あれ?なんで2行改行になるんだろ? XCHG DAD SP MOV M,E INX H MOV M,D XCHG RET スタックにHLをストアするルーチンらしいのですが、前半が何をやってるのか よくわかりません。SAUTO2:: の入口は LXI D,4 してSAUTOXへジャンプする ので判り易いのですが・・・ 8080のASMです。 >>226 スタックトップに積まれたアドレスからEとDに2バイト読み込んだ後、スタックトップに積まれたアドレスを+2更新してる スタックトップというのはSPが指している場所ですよね。そこにあるのはアドレス ですか?+2更新されるのはSPではありませんか? SAUTOXに来た時、他の SAUTO02/04/06・・・からはDE=4/6/8・・・なのに>>225 から来たときはDEには (SP)の内容が入ってますよね。226でやってることはストアすべきアドレスをHL に計算して、入ってきたときのHLの内容をストアするのですが、225からくると DEにあるデータはオフセットではなく不定のメモリ内容な気がして、そこが不安 なんですよ。 その前後で、スタックをどう使ってるかだよ、意味論的に SAUTO HLに16bitの値を格納し CALL SAUTO DW オフセット値 の形式で呼び出すとスタック上に確保されたローカル変数の領域(SP+オフセット値)にHLの値を格納する SAUTOからの復帰はオフセット値を格納した次のアドレスから継続する SAUTOX DEにオフセット値 HLに16bitの値 を入れてCALLするとスタック上に確保されたローカル変数の領域(SP+オフセット値)にHLの値を格納する あ、いろいろレスが・・・ありがとです。そうか、CALLの後ろに DW オフセット この呼び出し形式が解らなかったんです。pushされたリターンアドレスを 使わないと DW オフセットを取り出せないから225みたいなコードになってる んですね。やっと解りました。 >>233 はい、わかります。 >>224 よいです。 8085のデータブック読むと、機械語の説明のところにクロック数とステート数という 欄があります。クロック数はΦクロック(またはその半分)が単位でしょう。 ステート数というのが、クロック数のだいたい1/3ぐらいの数値なのですが、 これが何のことか、ブック中では説明なしに使われています。 このステート数というのはどういうものなのでしょう? >>236 http://www.inf.pucrs.br/ ~calazans/undergrad/orgcomp_EC/mat_microproc/intel-8085_datasheet.pdf どうもです。私が読んだのは沖電気の日本語版で、そのソースがインテルのこれ なのでしょうね。全部読み下すほど英語力無いのですが、Table 3 Table 4 を 参照して各命令ごとに合計をとったものが日本語の資料に追記されたと 思えばいいでしょうか? M1,M2,M3がステート数に相当するものですね? >>768 生まれた頃は暖かい家庭だったんじゃね、今からは想像できないだろうけど 検索してもx86命令とx64命令しか見つからないんですけどリアルモードってx86命令でいいんですか? リアルモードはほぼ16bit推奨環境 プリフィックス付かどうかで動作変わる命令は操作対象が16bitであると解釈される 例) INC AX → 40、INC EAX → 66 40 付く分動作が遅くなる、つまり、リアルモードで32bit操作は期待するほど速度でない プロテクトモードは32bit環境 例)INC AX → 66 40、INC EAX → 40 操作対象が16bit幅な命令も使えるけどリアルモードより遅い x64もレガシーモードで動作させればリアルモードを使えるけど、使える命令はx86命令に限定される、ハズ なのでいいんですか?と聞かれたら概ねいいですと答えていいんじゃないですかね >>242 ありがとうございます。 起動時のCPUはリアルモードで動作するという事で、 OSのブートプログラム書くのにリアルモードでのオペコードが必要なのに、 リアルモード用のオペコード一覧が見当たらないなと悩んでました。 機械学習に関してもここでいいでしょうか? 現在、Cで深層学習のお勉強プログラムを書いています。 Caffeなどそのもののライブラリを使わずに実装したいと思っているのですが、 自動微分がどうしても必要になりますが、これを高速にすることが可能なライブラリはありませんか? Hyper-v環境でルートパーティションにおけるcpuid命令は、通常の10倍遅い VTなら、cpuidは無条件でVM Exitするって書いてあるぞ。 遅いのは仕方ないね THIS IS AN ACCUMULATOR. THIS IS A REGISTER. AHH ACCUMULATOR REGISTER ・・・ 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 P00BP いつも思うんだけど〜 パソコンが普及してない時代の開発環境ってどうやってたんだろ? ポケコンのようなマイコン書き込み機みたいなのあったんですかね? Ultrixあたりで普通にvi+dbxだったけど。 もちろん。 ただし、どのアーキテクチャか明記して、絶対に「質問」であること。 絶対値を求めるAbsProc()という関数をASMで作りました。しかしながら、期待した値が返ってきませんでした。 戻り値はC++の関数に実装しているのですが、他サイトで書いてあったコードを試したところ上手くいきました。 前者は自分が書いたコード、後者は他サイトに載っていたコード、内容が理解できません。 <base> AbsProc proc dwValue:DWORD mov eax, dwValue .IF eax < 0 neg eax .ENDIF ret AbsProc endp -- AbsProc2 proc dwValue:DWORD mov eax, dwValue cdq xor eax, edx sub eax, edx ret AbsProc2 endp -- </base> ちーがーうーだーろーおー DWORDは4バイトだから32ビットで合っている ただ、DWORDは符号なしなのでSDWORDに置き換えましたが結果は同じ(失敗)でした 前者の処理に問題があるのかな? 実行時に展開されるマクロとアセンブリ時に展開されるマクロを混同してないか 機械語のスレなのにマトモなレスが全部アセンブラ関連なのはなぜ? もっと機械語の質問しようぜ! Z80の話なのですが、 「オペコードがなぜこの順番なのか謎だったが ハード的に都合のいいように並んでいるのに気がついて震えた」 というようなコメントをどこかで見たのですが具体的にわかるかた教えてください レジスタやろ A B C D E H L (im) じゃなくて B C D E H L A (im) の方が都合が良かった ヘッダとかの諸元を書き換えたりは出来たとしても 普通に扱う動画は圧縮されてるから直接は触れない そしてそもそも機械語でやる必要など無い 機械語の初心者です 今に時代にマッチした入門書はありませんか?ぜご紹介いただけると嬉しいです! 過疎スレか、興味あったけど残念。 大昔486載せたPC手に入った時にコプロ(浮動小数計算)の使用に興味もったけど ネットもまだ無く関連書籍も知らず結局諦めた。 ニーモニックから内容は想像出来たけど、まずレジスタ自体どうなってるのかもわからんかったし。 例えばレジスタAXの値を1.03倍(当時の消費税?)をコプロで計算するにはどうやってたのかな? ググるとrbpはスタックのベースポインタみたいな解説が出てくるけどこれ本当か? とりあえず >rustc.exe -V -v rustc 1.66.0 (69f9c33d7 2022-12-12) binary: rustc commit-hash: 69f9c33d71c871fc16ac445211281c6e7a340943 commit-date: 2022-12-12 host: x86_64-pc-windows-msvc release: 1.66.0 LLVM version: 15.0.2 >rustc.exe --emit asm --crate-type=rlib -C panic=abort -C debuginfo=0 -C debug-assertions=no -C opt-level=3 lib.rs ってやって生成されるアセンブラリストを見てもプロシージャの頭でrspをrbpへコピーしたりはしていないし 自動変数のrsp相対のアドレスなんて事前に計算できるしそんな目的で汎用レジスタを専有するのはもったいない気もする ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる