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

■ このスレッドは過去ログ倉庫に格納されています
2012/12/29(土) 08:00:24.36
漏れは今までにC、C++、Pascal、HSP、JS、VBなど
数々の言語を極めてきたがやはり一番手にしっくりくる言語は機械語だ。

だから、機械語のことなら何でも質問しろ!
ただプログラムのコードなんかは長くなるがな。 あ、ASMの話でもいいよ。
2013/11/26(火) 17:04:51.07
誤爆乙?組み込み?
223217
垢版 |
2013/11/26(火) 17:58:32.82
>>220 なるほど。聞いてみてよかったです。ハードの設計者の意向でそのような
切り分けがなされるのでしょうね。私の知っているシステムではアドレス上位4bit
でチップセレクトされる先を決めるICが入っていました。220のやりかたのほうが
使う石が少なくできるような気がするのですが、私の顧客の伝統なのか拡張性?
のためなのか、私の付き合った現場ではメモリマップトI/Oばかりでした。
224デフォルトの名無しさん
垢版 |
2014/03/12(水) 16:05:23.04ID:56D9u4UN
8085+8259のシステムで、IRRレジスタを読む必要があります。
コマンドレジスタのアドレス0側を読むとIRRまたはISRが読め、その選択は
リードに先立つOCW3でコマンドレジスタのアドレス0側に書きます。
似たコマンドでOCW2というのもあり、これもアドレス0側に書くのですが、
OCW2とOCW3の違いは、書き込み内容のbit4,bit3が01か00かで区別される
と理解してよいでしょうか?
225デフォルトの名無しさん
垢版 |
2014/03/21(金) 13:34:21.98ID: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.74ID:rl5pYZY9
SAUTOX:
  あれ?なんで2行改行になるんだろ?
    XCHG
    DAD    SP

    MOV    M,E

    INX    H

    MOV    M,D

    XCHG

    RET
スタックにHLをストアするルーチンらしいのですが、前半が何をやってるのか
よくわかりません。SAUTO2:: の入口は LXI D,4 してSAUTOXへジャンプする
ので判り易いのですが・・・ 8080のASMです。
2014/03/21(金) 14:12:22.77ID:27SL9jQg
>>226
スタックトップに積まれたアドレスからEとDに2バイト読み込んだ後、スタックトップに積まれたアドレスを+2更新してる
228226
垢版 |
2014/03/21(金) 16:37:17.55ID:rl5pYZY9
スタックトップというのはSPが指している場所ですよね。そこにあるのはアドレス
ですか?+2更新されるのはSPではありませんか? SAUTOXに来た時、他の
SAUTO02/04/06・・・からはDE=4/6/8・・・なのに>>225から来たときはDEには
(SP)の内容が入ってますよね。226でやってることはストアすべきアドレスをHL
に計算して、入ってきたときのHLの内容をストアするのですが、225からくると
DEにあるデータはオフセットではなく不定のメモリ内容な気がして、そこが不安
なんですよ。
2014/03/23(日) 22:06:00.08ID:qJRZbThw
その前後で、スタックをどう使ってるかだよ、意味論的に
2014/03/23(日) 22:12:05.00ID:ruxpB9t5
>>225
http://maben.homeip.net/static/S100/software/C/ASCII/code/01.1/CRUN.MAC
2014/03/23(日) 22:37:35.41ID:ruxpB9t5
SAUTO
HLに16bitの値を格納し

CALL SAUTO
DW オフセット値

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

SAUTOX
DEにオフセット値
HLに16bitの値
を入れてCALLするとスタック上に確保されたローカル変数の領域(SP+オフセット値)にHLの値を格納する
232226
垢版 |
2014/03/24(月) 03:25:17.76ID:9W6ZJyQo
あ、いろいろレスが・・・ありがとです。そうか、CALLの後ろに DW オフセット
この呼び出し形式が解らなかったんです。pushされたリターンアドレスを
使わないと DW オフセットを取り出せないから225みたいなコードになってる
んですね。やっと解りました。
233デフォルトの名無しさん
垢版 |
2014/03/30(日) 17:06:33.96ID:h6LaJ3mN
どなたか >>224 わかりませんか?
2014/03/30(日) 20:10:21.73ID:gN3GGTNV
>>233
はい、わかります。

>>224
よいです。
235224
垢版 |
2014/03/31(月) 03:02:51.17ID:BXTiIPPO
ありがとうございます。
236デフォルトの名無しさん
垢版 |
2014/07/23(水) 16:13:08.87ID:hbLsGTB+
8085のデータブック読むと、機械語の説明のところにクロック数とステート数という
欄があります。クロック数はΦクロック(またはその半分)が単位でしょう。
ステート数というのが、クロック数のだいたい1/3ぐらいの数値なのですが、
これが何のことか、ブック中では説明なしに使われています。
このステート数というのはどういうものなのでしょう?
2014/07/23(水) 16:29:00.09ID:0dHAtBbf
>>236
http://www.inf.pucrs.br/~calazans/undergrad/orgcomp_EC/mat_microproc/intel-8085_datasheet.pdf
238236
垢版 |
2014/07/24(木) 02:53:13.32ID:8xeGZJ4L
どうもです。私が読んだのは沖電気の日本語版で、そのソースがインテルのこれ
なのでしょうね。全部読み下すほど英語力無いのですが、Table 3 Table 4 を
参照して各命令ごとに合計をとったものが日本語の資料に追記されたと
思えばいいでしょうか? M1,M2,M3がステート数に相当するものですね?
2015/03/07(土) 01:43:39.68ID:G+snOoOp
>>768
生まれた頃は暖かい家庭だったんじゃね、今からは想像できないだろうけど
2015/03/07(土) 01:44:34.65ID:G+snOoOp
誤爆った
2015/07/18(土) 21:42:32.75ID:U8NrmB25
検索してもx86命令とx64命令しか見つからないんですけどリアルモードってx86命令でいいんですか?
2015/07/20(月) 03:18:09.77ID:8dMvvLjx
リアルモードはほぼ16bit推奨環境
プリフィックス付かどうかで動作変わる命令は操作対象が16bitであると解釈される
例) INC AX → 40、INC EAX → 66 40
付く分動作が遅くなる、つまり、リアルモードで32bit操作は期待するほど速度でない

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

x64もレガシーモードで動作させればリアルモードを使えるけど、使える命令はx86命令に限定される、ハズ
なのでいいんですか?と聞かれたら概ねいいですと答えていいんじゃないですかね
243241
垢版 |
2015/07/20(月) 17:50:21.12ID:sEKWUTaF
>>242
ありがとうございます。

起動時のCPUはリアルモードで動作するという事で、
OSのブートプログラム書くのにリアルモードでのオペコードが必要なのに、
リアルモード用のオペコード一覧が見当たらないなと悩んでました。
244デフォルトの名無しさん
垢版 |
2015/11/09(月) 15:12:25.74ID:53+wftUK
機械学習に関してもここでいいでしょうか?

現在、Cで深層学習のお勉強プログラムを書いています。
Caffeなどそのもののライブラリを使わずに実装したいと思っているのですが、
自動微分がどうしても必要になりますが、これを高速にすることが可能なライブラリはありませんか?
2015/11/09(月) 15:20:26.46ID:jDVf3Lh4
スレ違い
246デフォルトの名無しさん
垢版 |
2015/11/09(月) 16:19:45.95ID:53+wftUK
機械語か・・、すみません。見間違えました。
2016/05/20(金) 23:25:32.36ID:KpVBsn6A
Hyper-v環境でルートパーティションにおけるcpuid命令は、通常の10倍遅い
2016/05/25(水) 13:46:52.89ID:KxnmxQU8
VTなら、cpuidは無条件でVM Exitするって書いてあるぞ。
遅いのは仕方ないね
2017/03/19(日) 07:11:55.60ID:mKlGkgH9
THIS IS AN ACCUMULATOR.
THIS IS A REGISTER.

AHH

ACCUMULATOR REGISTER ・・・
250デフォルトの名無しさん
垢版 |
2018/05/23(水) 23:09:35.05ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

P00BP
251デフォルトの名無しさん
垢版 |
2018/07/04(水) 23:00:04.37ID:gFgZc5FG
3AN
2018/07/06(金) 12:35:01.36ID:uTPDH9XV
P00BP
253デフォルトの名無しさん
垢版 |
2019/06/11(火) 19:40:34.85ID:lzLjg8nQ
いつも思うんだけど〜
パソコンが普及してない時代の開発環境ってどうやってたんだろ?
2019/06/11(火) 20:01:06.20ID:VhUqfkAg
ハンドアセンブル
2019/06/11(火) 20:26:14.70ID:lzLjg8nQ
ポケコンのようなマイコン書き込み機みたいなのあったんですかね?
2019/06/11(火) 21:48:02.75ID:Z9zAVGxt
Ultrixあたりで普通にvi+dbxだったけど。
257デフォルトの名無しさん
垢版 |
2019/06/12(水) 10:51:07.63ID:tqvE0DW+
TK-80 より前だと
トグルスイッチぱちぱち
2019/06/27(木) 20:11:05.46ID:tbUThdPV
機械語で質問してもいいんですか???
2019/06/28(金) 01:40:39.40ID:niXud6I6
もちろん。
ただし、どのアーキテクチャか明記して、絶対に「質問」であること。
2019/06/28(金) 13:08:42.61ID:Dkg4aDVY
絶対値を求める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>
261デフォルトの名無しさん
垢版 |
2019/06/28(金) 14:26:33.93ID:BSWMNPgI
DWORDは16
eaxは32
2019/06/28(金) 15:24:26.32ID:Dkg4aDVY
ちーがーうーだーろーおー
DWORDは4バイトだから32ビットで合っている
ただ、DWORDは符号なしなのでSDWORDに置き換えましたが結果は同じ(失敗)でした
前者の処理に問題があるのかな?
263デフォルトの名無しさん
垢版 |
2019/06/28(金) 15:43:55.03ID:2bLDyTWm
.IF eax < 0

これが常に偽なんだろ
2019/06/28(金) 16:03:32.71ID:Dkg4aDVY
なるほど、マイナスのフラグを判定してないのね
265デフォルトの名無しさん
垢版 |
2019/06/28(金) 16:05:24.11ID:L7hsi0hP
実行時に展開されるマクロとアセンブリ時に展開されるマクロを混同してないか
2019/06/28(金) 16:25:12.23ID:Dkg4aDVY
そのあたりがわかってなかったよ dクス
2019/08/12(月) 12:49:51.89ID:kdU0FwTT
機械語のスレなのにマトモなレスが全部アセンブラ関連なのはなぜ?
もっと機械語の質問しようぜ!
268デフォルトの名無しさん
垢版 |
2019/08/12(月) 16:27:18.01ID:/PThgSmN
Z80の話なのですが、
「オペコードがなぜこの順番なのか謎だったが
ハード的に都合のいいように並んでいるのに気がついて震えた」
というようなコメントをどこかで見たのですが具体的にわかるかた教えてください
269デフォルトの名無しさん
垢版 |
2019/08/12(月) 16:42:01.69ID:teiWuRr3
レジスタやろ
A B C D E H L (im) じゃなくて
B C D E H L A (im) の方が都合が良かった
270デフォルトの名無しさん
垢版 |
2020/08/10(月) 13:44:28.05ID:wCJpM8p8
動画ファイルのバイナリ編集なんて出来んですか?
2020/08/10(月) 13:52:53.98ID:okb2Hsyz
ヘッダとかの諸元を書き換えたりは出来たとしても
普通に扱う動画は圧縮されてるから直接は触れない

そしてそもそも機械語でやる必要など無い
2020/08/10(月) 14:06:28.95ID:wCJpM8p8
そうですかありがとうございました
2021/10/27(水) 10:02:51.76ID:XE3bmMwX
76h
2022/08/04(木) 21:26:55.98ID:D1hmTC5W
機械語の初心者です
今に時代にマッチした入門書はありませんか?ぜご紹介いただけると嬉しいです!
2022/12/28(水) 08:11:09.43ID:lEr8v5P6
過疎スレか、興味あったけど残念。

大昔486載せたPC手に入った時にコプロ(浮動小数計算)の使用に興味もったけど
ネットもまだ無く関連書籍も知らず結局諦めた。
ニーモニックから内容は想像出来たけど、まずレジスタ自体どうなってるのかもわからんかったし。

例えばレジスタAXの値を1.03倍(当時の消費税?)をコプロで計算するにはどうやってたのかな?
276デフォルトの名無しさん
垢版 |
2023/04/28(金) 19:39:40.60ID:DXOd2k9/
ググると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相対のアドレスなんて事前に計算できるしそんな目的で汎用レジスタを専有するのはもったいない気もする
2023/05/28(日) 16:57:39.18ID:OWG1pOhD
gptに質問するとコード出るよ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況