5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

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

1 :デフォルトの名無しさん:2012/12/29(土) 08:00:24.36
漏れは今までにC、C++、Pascal、HSP、JS、VBなど
数々の言語を極めてきたがやはり一番手にしっくりくる言語は機械語だ。

だから、機械語のことなら何でも質問しろ!
ただプログラムのコードなんかは長くなるがな。 あ、ASMの話でもいいよ。

200 :デフォルトの名無しさん:2013/04/14(日) 04:19:11.36
do whileの脱出条件が間違っているようにしか見えない。
そもそもなぜdoなのか。通常のwhileではできない理由があるのか。
そこらへんが理解できないな。
あとコンパイラによってはdo { }が空文だと最適化でコードにしない
ものがあったりするので(昔のMS-Cとかね)最適化オプションは
全てオフにしてから確認するといいかもね。

201 :95:2013/04/14(日) 04:23:35.44
>>198 で、18h[R4]にC2hを入れてから、L26:の所でそこのbit6が1の間ループ。
>>199 の割り込み処理で 18h[R4]を 82h にしてます。

202 :95:2013/04/14(日) 04:29:21.93
あ、書いてる途中でレスが・・・ while { } だと前判定、do { } whileだと後判定になるから。
今のケースの場合は一緒ですけどね。前判定だとBZ で脱出、その後ろに B 続行
ってなるのがイヤだから、ってのもあります。

203 :95:2013/04/14(日) 05:31:48.69
見つけた〜!とおもう。hwsetup( )で MSTP_CMT1 = 0; // CMT unit1のクロックON
とコメントに書いてあるけど、これがウソで MSTP_CMT2 に0を書くべきでした。
SCIで体験した事だと、ユニットにクロックを与えないとレジスタにイネーブルを
書けなかったから、コンペアマッチタイマもそうだとおもう。

今基板帰してるから、また借りたら確認しますね。

204 :95:2013/04/19(金) 13:52:08.55
基板につける原クロックって水晶ですよね。CPU内蔵のクロック発振器ってどんな
原理なんでしょう?

205 :デフォルトの名無しさん:2013/04/19(金) 16:33:29.13
XTALがないならRCだろ。

206 :95:2013/04/19(金) 17:19:02.90
RC 発振器 でぐぐったらwikiが先頭に来たけど、余計解らない語句ばかり出てきた(w
何となくだけど、どの原理もLSI内部に納めるほど微小化できるのかな?とは思った。

基板は、ユーザーブート領域に焼く方法の所で引っかかってるみたいです。

207 :デフォルトの名無しさん:2013/04/20(土) 14:27:11.58
>>204
CPU内蔵ならクリスタルじゃなくてPLLじゃないの。
たぶんクリスタルよりPLLのほうが正確だし。

208 :デフォルトの名無しさん:2013/04/20(土) 14:28:13.61
あ、なんかPLLも基準周波数にクリスタルがいるらしい。
勘違いだったかも。

209 :95:2013/04/20(土) 17:29:42.08
CPU内蔵のPLLは、基準周波数を分周または逓倍するために使いますね。
204の話は、CPUみたいなLSIの内部に焼き付けられる原クロック回路は、
クリスタルみたいなデカいものじゃなさそうに思えるけど、どんなものなのかなあ・・・

210 :95:2013/04/21(日) 04:36:51.93
ユーザーブート領域のコードが動いたらしいです。私が確認に行けるのは木曜ですが

211 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/23(火) 00:05:14.14
x86-64の64ビットモードで動かない32ビットx86の命令ってどんなものがありますか?

212 :デフォルトの名無しさん:2013/04/23(火) 02:29:22.23
DAAとかなくなったんでなかったっけ?
あとLAHFとか。

213 :95:2013/04/25(木) 15:45:36.94
ユーザーブート領域のコードが動いたのは誤報でした。FF7FC000〜の空間には
コードが焼けない/読めない状態のままです。困ったなあ・・・

214 :デフォルトの名無しさん:2013/08/12(月) NY:AN:NY.AN
RX210 規制の間に本番用の基板でデバックが進みました。
デバック用の基板ではユーザ空間しか焼けませんでした。
ユーザーブート領域に焼いても、そこで実行したコードでROMアクセス違反は
発生します。ROMを焼くコードだけRAMにコピーしてそこを呼ぶ手法を採りました。
欲しい機能の実装はだいたい確認。引き合い時2人月だったお金も、3.5人月
もらえました。36度の書斎でのデバックは2,3日で済みました。やれやれ・・・

215 :デフォルトの名無しさん:2013/08/12(月) NY:AN:NY.AN
汗が基盤に垂れなかったのだろうか

いや、液状のほうの汗なw

216 :95:2013/08/13(火) NY:AN:NY.AN
書斎が32度以上のときは、アイスノンを頭に巻いて
30分ごとにリビングに避難しながらやってました。メインは未明の頃。

217 :デフォルトの名無しさん:2013/11/25(月) 01:54:29.88
8085ではメモリマップトI/O(ex:F000番地が8251のTXD/RXD)しか
やったことがないのですが、8085にもIN/OUT命令はありますよね。
オペランドは8bitのアドレス。
このIN/OUT命令を使うときはハードをどのように組むのですか?

218 :デフォルトの名無しさん:2013/11/25(月) 01:59:39.44
IO/~M信号を使用します。

219 :217:2013/11/26(火) 05:42:00.02
もうちょっとくやしくお願い。名前からすると「メモリじゃないよ」という信号みたい
ですね。 IN 04h と書くと、メモリではない04番地からリードですね。
そのとき8251を04番地に配線?すると上と同じ機能が得られるのですか?
私が出会ったのは217のようなシステムばかりでしたが、それは偶々?
8251側ではRD/WR信号とアドレスのLSBでI/Oレジスタを区別していましたが
IN/OUTを使おうと思うとその辺はどうなるのでしょう?
LDA/STAは3バイトだけど、IN/OUTは2バイトだからこっちのほうが小さいけど
そういう理由ではハードは決めないのですか?

220 :デフォルトの名無しさん:2013/11/26(火) 09:55:01.25
>>219
あんたの知っているシステムでは、8251自体はアドレスバス上位4ビットがONで下位ビットOFFのときに
チップセレクトされるようにつながっているのだろう。
8251のチップセレクトをするに当たって、メモリ空間を使いたくない場合は、IO/Mをデコードして
OFF(M)のときにチップセレクトされるようにすればいい。
私の知っているシステムでは、メモリ空間を広く取るためなどの理由でそうしていた。
命令長が理由でどっちを選択するか検討するという話は余り聞かないな。

221 :デフォルトの名無しさん:2013/11/26(火) 17:00:31.10
壊れた動画ファイルをバイナリエディタで開いて、そこから一コマでも画像ファイルにして抽出することってできますか?
拡張子は3gpで昔携帯で撮ったものです
少し調べてみてmdatって文字列は確認できたんですが、ヘッダ周辺はだいぶ壊れて上書きされているみたいです
バイナリ全くわからないんだけど、規則的に色の情報が配置されてるって単純な構造でもないのかしら…

222 :デフォルトの名無しさん:2013/11/26(火) 17:04:51.07
誤爆乙?組み込み?

223 :217:2013/11/26(火) 17:58:32.82
>>220 なるほど。聞いてみてよかったです。ハードの設計者の意向でそのような
切り分けがなされるのでしょうね。私の知っているシステムではアドレス上位4bit
でチップセレクトされる先を決めるICが入っていました。220のやりかたのほうが
使う石が少なくできるような気がするのですが、私の顧客の伝統なのか拡張性?
のためなのか、私の付き合った現場ではメモリマップトI/Oばかりでした。

224 :デフォルトの名無しさん:2014/03/12(水) 16:05:23.04 ID:56D9u4UN
8085+8259のシステムで、IRRレジスタを読む必要があります。
コマンドレジスタのアドレス0側を読むとIRRまたはISRが読め、その選択は
リードに先立つOCW3でコマンドレジスタのアドレス0側に書きます。
似たコマンドでOCW2というのもあり、これもアドレス0側に書くのですが、
OCW2とOCW3の違いは、書き込み内容のbit4,bit3が01か00かで区別される
と理解してよいでしょうか?

225 :デフォルトの名無しさん:2014/03/21(金) 13:34:21.98 ID:rl5pYZY9
SAUTO:

; store 16-bit automatic variable

;    VAR = HL

    XTHL

    MOV    E,M

    INX    H

    MOV    D,M

    INX    H

    XTHL

226 :つづき:2014/03/21(金) 13:35:36.74 ID:rl5pYZY9
SAUTOX:
  あれ?なんで2行改行になるんだろ?
    XCHG
    DAD    SP

    MOV    M,E

    INX    H

    MOV    M,D

    XCHG

    RET
スタックにHLをストアするルーチンらしいのですが、前半が何をやってるのか
よくわかりません。SAUTO2:: の入口は LXI D,4 してSAUTOXへジャンプする
ので判り易いのですが・・・ 8080のASMです。

227 :デフォルトの名無しさん:2014/03/21(金) 14:12:22.77 ID:27SL9jQg
>>226
スタックトップに積まれたアドレスからEとDに2バイト読み込んだ後、スタックトップに積まれたアドレスを+2更新してる

228 :226:2014/03/21(金) 16:37:17.55 ID:rl5pYZY9
スタックトップというのはSPが指している場所ですよね。そこにあるのはアドレス
ですか?+2更新されるのはSPではありませんか? SAUTOXに来た時、他の
SAUTO02/04/06・・・からはDE=4/6/8・・・なのに>>225から来たときはDEには
(SP)の内容が入ってますよね。226でやってることはストアすべきアドレスをHL
に計算して、入ってきたときのHLの内容をストアするのですが、225からくると
DEにあるデータはオフセットではなく不定のメモリ内容な気がして、そこが不安
なんですよ。

229 :デフォルトの名無しさん:2014/03/23(日) 22:06:00.08 ID:qJRZbThw
その前後で、スタックをどう使ってるかだよ、意味論的に

230 :デフォルトの名無しさん:2014/03/23(日) 22:12:05.00 ID:ruxpB9t5
>>225
http://maben.homeip.net/static/S100/software/C/ASCII/code/01.1/CRUN.MAC

231 :デフォルトの名無しさん:2014/03/23(日) 22:37:35.41 ID:ruxpB9t5
SAUTO
HLに16bitの値を格納し

CALL SAUTO
DW オフセット値

の形式で呼び出すとスタック上に確保されたローカル変数の領域(SP+オフセット値)にHLの値を格納する
SAUTOからの復帰はオフセット値を格納した次のアドレスから継続する

SAUTOX
DEにオフセット値
HLに16bitの値
を入れてCALLするとスタック上に確保されたローカル変数の領域(SP+オフセット値)にHLの値を格納する

232 :226:2014/03/24(月) 03:25:17.76 ID:9W6ZJyQo
あ、いろいろレスが・・・ありがとです。そうか、CALLの後ろに DW オフセット
この呼び出し形式が解らなかったんです。pushされたリターンアドレスを
使わないと DW オフセットを取り出せないから225みたいなコードになってる
んですね。やっと解りました。

233 :デフォルトの名無しさん:2014/03/30(日) 17:06:33.96 ID:h6LaJ3mN
どなたか >>224 わかりませんか?

234 :デフォルトの名無しさん:2014/03/30(日) 20:10:21.73 ID:gN3GGTNV
>>233
はい、わかります。

>>224
よいです。

235 :224:2014/03/31(月) 03:02:51.17 ID:BXTiIPPO
ありがとうございます。

236 :デフォルトの名無しさん:2014/07/23(水) 16:13:08.87 ID:hbLsGTB+
8085のデータブック読むと、機械語の説明のところにクロック数とステート数という
欄があります。クロック数はΦクロック(またはその半分)が単位でしょう。
ステート数というのが、クロック数のだいたい1/3ぐらいの数値なのですが、
これが何のことか、ブック中では説明なしに使われています。
このステート数というのはどういうものなのでしょう?

237 :デフォルトの名無しさん:2014/07/23(水) 16:29:00.09 ID:0dHAtBbf
>>236
http://www.inf.pucrs.br/~calazans/undergrad/orgcomp_EC/mat_microproc/intel-8085_datasheet.pdf

238 :236:2014/07/24(木) 02:53:13.32 ID:8xeGZJ4L
どうもです。私が読んだのは沖電気の日本語版で、そのソースがインテルのこれ
なのでしょうね。全部読み下すほど英語力無いのですが、Table 3 Table 4 を
参照して各命令ごとに合計をとったものが日本語の資料に追記されたと
思えばいいでしょうか? M1,M2,M3がステート数に相当するものですね?

239 :デフォルトの名無しさん:2015/03/07(土) 01:43:39.68 ID:G+snOoOp
>>768
生まれた頃は暖かい家庭だったんじゃね、今からは想像できないだろうけど

240 :デフォルトの名無しさん:2015/03/07(土) 01:44:34.65 ID:G+snOoOp
誤爆った

241 :デフォルトの名無しさん:2015/07/18(土) 21:42:32.75 ID:U8NrmB25
検索してもx86命令とx64命令しか見つからないんですけどリアルモードってx86命令でいいんですか?

242 :デフォルトの名無しさん:2015/07/20(月) 03:18:09.77 ID:8dMvvLjx
リアルモードはほぼ16bit推奨環境
プリフィックス付かどうかで動作変わる命令は操作対象が16bitであると解釈される
例) INC AX → 40、INC EAX → 66 40
付く分動作が遅くなる、つまり、リアルモードで32bit操作は期待するほど速度でない

プロテクトモードは32bit環境
例)INC AX → 66 40、INC EAX → 40
操作対象が16bit幅な命令も使えるけどリアルモードより遅い

x64もレガシーモードで動作させればリアルモードを使えるけど、使える命令はx86命令に限定される、ハズ
なのでいいんですか?と聞かれたら概ねいいですと答えていいんじゃないですかね

243 :241:2015/07/20(月) 17:50:21.12 ID:sEKWUTaF
>>242
ありがとうございます。

起動時のCPUはリアルモードで動作するという事で、
OSのブートプログラム書くのにリアルモードでのオペコードが必要なのに、
リアルモード用のオペコード一覧が見当たらないなと悩んでました。

244 :デフォルトの名無しさん:2015/11/09(月) 15:12:25.74 ID:53+wftUK
機械学習に関してもここでいいでしょうか?

現在、Cで深層学習のお勉強プログラムを書いています。
Caffeなどそのもののライブラリを使わずに実装したいと思っているのですが、
自動微分がどうしても必要になりますが、これを高速にすることが可能なライブラリはありませんか?

245 :デフォルトの名無しさん:2015/11/09(月) 15:20:26.46 ID:jDVf3Lh4
スレ違い

246 :デフォルトの名無しさん:2015/11/09(月) 16:19:45.95 ID:53+wftUK
機械語か・・、すみません。見間違えました。

247 :デフォルトの名無しさん:2016/05/20(金) 23:25:32.36 ID:KpVBsn6A
Hyper-v環境でルートパーティションにおけるcpuid命令は、通常の10倍遅い

248 :デフォルトの名無しさん:2016/05/25(水) 13:46:52.89 ID:KxnmxQU8
VTなら、cpuidは無条件でVM Exitするって書いてあるぞ。
遅いのは仕方ないね

249 :デフォルトの名無しさん:2017/03/19(日) 07:11:55.60 ID:mKlGkgH9
THIS IS AN ACCUMULATOR.
THIS IS A REGISTER.

AHH

ACCUMULATOR REGISTER ・・・

75 KB
新着レスの表示

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)