漏れは今までにC、C++、Pascal、HSP、JS、VBなど
数々の言語を極めてきたがやはり一番手にしっくりくる言語は機械語だ。
だから、機械語のことなら何でも質問しろ!
ただプログラムのコードなんかは長くなるがな。 あ、ASMの話でもいいよ。
機械語なら俺に質問しろ!その2
■ このスレッドは過去ログ倉庫に格納されています
2012/12/29(土) 08:00:24.36
16895
2013/03/27(水) 04:49:55.10 まだ割り込み来ない・・・やったこと:hwsetupで、マルチファンクションピンコントローラの
P20〜P33PFSでTXD/RXD端子に設定、PORT3.PMRとPORT2.PMRでTXD/RXD使用、
ICU.IPR[218]と[226]=優先度2、IER[27]と[28]=0Fと3C(SCI1,6のERI,RXI,TXI,TEI許可)
リセット直後でINTBに可変ベクタテーブルの先頭設定、hwsetup( )から戻った所で
set_psw( )でPSWのIbitをオン。SCI1と6のSMR,BRR設定してSCRに50h(REとRIE)書いた。
これでシリアルにデータ入れても割り込み来ない。uartのレジスタの辺りダンプすると
みんな00になってる。BRRやSCRやRDRは非ゼロが見えるはずなのに・・・
何かまだ設定忘れてる??
P20〜P33PFSでTXD/RXD端子に設定、PORT3.PMRとPORT2.PMRでTXD/RXD使用、
ICU.IPR[218]と[226]=優先度2、IER[27]と[28]=0Fと3C(SCI1,6のERI,RXI,TXI,TEI許可)
リセット直後でINTBに可変ベクタテーブルの先頭設定、hwsetup( )から戻った所で
set_psw( )でPSWのIbitをオン。SCI1と6のSMR,BRR設定してSCRに50h(REとRIE)書いた。
これでシリアルにデータ入れても割り込み来ない。uartのレジスタの辺りダンプすると
みんな00になってる。BRRやSCRやRDRは非ゼロが見えるはずなのに・・・
何かまだ設定忘れてる??
16995
2013/04/02(火) 05:58:57.63 SCIxには保護レジスタなんてありませんよね?
17095
2013/04/02(火) 16:28:54.68171デフォルトの名無しさん
2013/04/02(火) 18:19:21.45 基本中の基本って言われたら
基本を調べるよなふつう
基本を調べるよなふつう
172デフォルトの名無しさん
2013/04/02(火) 19:32:31.71 つーか、私だって全てのCPUのレジスタ構成を把握しているわけじゃないもん。
自分が使うCPUならレジスタ構成を把握するのが基本だろって話だよ。
自分が使うCPUならレジスタ構成を把握するのが基本だろって話だよ。
17395
2013/04/03(水) 02:45:11.79 自分が使うユニットの章しか読まないでコードしてもなんとか動いたんですよ、H8Sとか。
概要の章に、何章までは全部読んで理解しないと使えないよ的な前置きが欲しかったな。
1600ページもあるの、全部なんか読んでられないわ。
概要の章に、何章までは全部読んで理解しないと使えないよ的な前置きが欲しかったな。
1600ページもあるの、全部なんか読んでられないわ。
17495
2013/04/03(水) 03:06:31.08 モジュールストップ解除したら動きました。やれやれ・・・
タイマ割り込みが来ないのもこれのせいでした。この石は省電力が売りなので、
使わないユニットにはクロックを送らないことで省電力を実現してるんでしょうね。
これでやっと本来のアプリのデバックに入れます。
タイマ割り込みが来ないのもこれのせいでした。この石は省電力が売りなので、
使わないユニットにはクロックを送らないことで省電力を実現してるんでしょうね。
これでやっと本来のアプリのデバックに入れます。
17595
2013/04/06(土) 16:59:58.74 評価セット借りてきて、自分のパソコンにつなぎました。
ドライバのインスコで神経すり減らしたけど、動いたら快適。
DATAflashの書き込みと読み出しがうまく行きました\(^o^)/
同じ手法で内蔵fROMの書き込みもしてるので、この先Sレコードの書き込みも
うまく行きそうです。デバック用にWDTリフレッシュ殺して動かしてますが、
うまく通信できてます。
ドライバのインスコで神経すり減らしたけど、動いたら快適。
DATAflashの書き込みと読み出しがうまく行きました\(^o^)/
同じ手法で内蔵fROMの書き込みもしてるので、この先Sレコードの書き込みも
うまく行きそうです。デバック用にWDTリフレッシュ殺して動かしてますが、
うまく通信できてます。
176デフォルトの名無しさん
2013/04/06(土) 19:21:41.28 で、忘れた頃にWDT入れたら、真っ青になるとw
# 茶化してるだけねw
# 茶化してるだけねw
17795
2013/04/07(日) 16:41:00.54 FFFFFFFC番地に入っているアドレスに飛ばすc文はどう書けばいいですか?
( (void*)(0xFFFFFFFC) )( ); ってやると、FFFFFFFC番地に飛ぶ命令が出ちゃう。
( (void*)(0xFFFFFFFC) )( ); ってやると、FFFFFFFC番地に飛ぶ命令が出ちゃう。
178デフォルトの名無しさん
2013/04/07(日) 17:16:27.39 >>177
ポインタサイズが32bitと仮定すると
unsigned long pl;
void (*func)(void);
pl = *((unsigned long *)(0xFFFFFFFC));
func = (void *)pl;
ポインタサイズが32bitと仮定すると
unsigned long pl;
void (*func)(void);
pl = *((unsigned long *)(0xFFFFFFFC));
func = (void *)pl;
179デフォルトの名無しさん
2013/04/07(日) 17:42:33.19 普通にこうすりゃいいだろ
((void (*)(void))0xFFFFFFFC)();
分かり辛いなら
void (*func)(void) = (void (*)(void))0xFFFFFFFC;
func();
((void (*)(void))0xFFFFFFFC)();
分かり辛いなら
void (*func)(void) = (void (*)(void))0xFFFFFFFC;
func();
180デフォルトの名無しさん
2013/04/07(日) 17:43:40.18 >>179
分かってないなあ
分かってないなあ
181デフォルトの名無しさん
2013/04/07(日) 17:45:37.68 (*((void(*)(void))(*(unsigned long *)0xFFFFFFFC)))();
こうかな…?手元に環境が無いのでちょっと自信ない
こうかな…?手元に環境が無いのでちょっと自信ない
182デフォルトの名無しさん
2013/04/07(日) 17:53:07.22183デフォルトの名無しさん
2013/04/07(日) 23:31:03.66 機械語スレでCごとき高級言語とか
# デスクトップでも__asm は試作で重宝してる
# デスクトップでも__asm は試作で重宝してる
184デフォルトの名無しさん
2013/04/08(月) 01:19:14.00 asmすらこのスレにはふさわしくないんだよなあ
emitしないと
emitしないと
18595
2013/04/08(月) 01:26:33.40 >>182さんので通りました。 ありがとうございます。
MOV.L #0FFFFFFFCH,R4
MOV.L [R4],R5
JMP R5
このcはasmの行を挟み込む機能は無くて、asmのインライン関数を吐かせるんです。
判らなかったら、#pragma inline_asm func
void func(void) { } の中に上の3行を挟んで書こうと思っていました。
「ポインタのポインタ」 で理解するより3行のasmのほうが私には理解し易いですね。
MOV.L #0FFFFFFFCH,R4
MOV.L [R4],R5
JMP R5
このcはasmの行を挟み込む機能は無くて、asmのインライン関数を吐かせるんです。
判らなかったら、#pragma inline_asm func
void func(void) { } の中に上の3行を挟んで書こうと思っていました。
「ポインタのポインタ」 で理解するより3行のasmのほうが私には理解し易いですね。
186デフォルトの名無しさん
2013/04/08(月) 01:34:29.20 分かり辛いなら
typedef void (*funcptr_t)(void);
funcptr_t* p_func = (funcptr_t*)0xFFFFFFFC;
(*p_func)();
とか
typedef void (*funcptr_t)(void);
funcptr_t* p_func = (funcptr_t*)0xFFFFFFFC;
(*p_func)();
とか
187デフォルトの名無しさん
2013/04/08(月) 04:11:03.2218895
2013/04/08(月) 09:40:33.18 そうですね。asmでの理解ならすんなりいくのに。
ユーザーブート領域のプログラムをデバックしようと思って、その空間でLINKした
コードをダウンロードして、リセットベクタをそこを指すようにして実行してみると、
対象領域がみんなFFになってる。未実装として読まれてるみたいです。
端子2つと特定番地の内容でブートモードになる、とマニュアルに書かれていたけど、
なるほどこういうことだったのか。リセットベクタを含む固定ベクタはアプリにだけLINK
するものですね。起動時にそういう端子入力ができるようにハードを直してもらいます。
ユーザーブート領域のプログラムをデバックしようと思って、その空間でLINKした
コードをダウンロードして、リセットベクタをそこを指すようにして実行してみると、
対象領域がみんなFFになってる。未実装として読まれてるみたいです。
端子2つと特定番地の内容でブートモードになる、とマニュアルに書かれていたけど、
なるほどこういうことだったのか。リセットベクタを含む固定ベクタはアプリにだけLINK
するものですね。起動時にそういう端子入力ができるようにハードを直してもらいます。
189デフォルトの名無しさん
2013/04/08(月) 11:30:36.97 機械語オーライなら、もちろん、call convention は気にするよな?
組み込みのCの処理系がどうとなってるか詳しくないが、
typedef int (__cdecl* myfuncptr_t)(int, int);
とかって書くようにしてるぞ。
組み込みのCの処理系がどうとなってるか詳しくないが、
typedef int (__cdecl* myfuncptr_t)(int, int);
とかって書くようにしてるぞ。
190デフォルトの名無しさん
2013/04/09(火) 00:12:48.20 __cdecl がデフォルトだったと思うので
__stdcall しか書かないな
__stdcall しか書かないな
19195
2013/04/09(火) 14:34:43.07 SCIの受信とDMACを連携して動作させられるじゃないですか。あれってバイト数は
DMACに設定するんだから、何バイト来るか判っている場合にしか使えませんよね?
DMACに設定するんだから、何バイト来るか判っている場合にしか使えませんよね?
192デフォルトの名無しさん
2013/04/09(火) 21:12:38.25 DMACは基本的に固定長のデータ転送に使うものだから
不定長のデータには使えない。
不定長のデータには使えない。
19395
2013/04/13(土) 05:28:44.66 watms(int ms) 関数が素通りしてるっぽい・・・ RX210
void waitms(int ms) { hwsetup( ) で MSTP_CMT1 = 0; はやってる。
// 入力:ミリ秒単位の数値(50mSまで)。誤差の少ないwait関数。
CMT3.CMCOR = PCLK/128/1000*ms; // 1KHz(1mS)の分周値*mS
CMT3.CMCR.WORD = 0x00C2; // Φ/128 セレクト,CMIE3許可
CMT.CMSTR1.BIT.STR3 = 1; // カウントUP start
// do { } while( CMT3.CMCNT ); // 一致を待つ
// ↑CPUマニュアル 25.2.4には、一致するとCMCNTは0になると書かれているが
// 0である128clkの間、別の割込で他の箇所を実行しているかもしれない。
// そこで下記の割り込みを待つようにする。
do { } while( CMT3.CMCR.WORD & 0x40 ); // 割り込みを待つ
}
#pragma interrupt(Excep_CMTU1_CMT3(vect=VECT_CMT3_CMI3))
void Excep_CMTU1_CMT3(void) { // 1mSタイマ割込み処理 13.02.28
CMT3.CMCR.WORD = 0x0082; // Φ/32 セレクト,CMIE3禁止
CMT.CMSTR1.BIT.STR3 = 0; // カウントUP stop
} これで1msのn倍waitできると思ったんだけど、すぐリターンしてくるみたいなの
void waitms(int ms) { hwsetup( ) で MSTP_CMT1 = 0; はやってる。
// 入力:ミリ秒単位の数値(50mSまで)。誤差の少ないwait関数。
CMT3.CMCOR = PCLK/128/1000*ms; // 1KHz(1mS)の分周値*mS
CMT3.CMCR.WORD = 0x00C2; // Φ/128 セレクト,CMIE3許可
CMT.CMSTR1.BIT.STR3 = 1; // カウントUP start
// do { } while( CMT3.CMCNT ); // 一致を待つ
// ↑CPUマニュアル 25.2.4には、一致するとCMCNTは0になると書かれているが
// 0である128clkの間、別の割込で他の箇所を実行しているかもしれない。
// そこで下記の割り込みを待つようにする。
do { } while( CMT3.CMCR.WORD & 0x40 ); // 割り込みを待つ
}
#pragma interrupt(Excep_CMTU1_CMT3(vect=VECT_CMT3_CMI3))
void Excep_CMTU1_CMT3(void) { // 1mSタイマ割込み処理 13.02.28
CMT3.CMCR.WORD = 0x0082; // Φ/32 セレクト,CMIE3禁止
CMT.CMSTR1.BIT.STR3 = 0; // カウントUP stop
} これで1msのn倍waitできると思ったんだけど、すぐリターンしてくるみたいなの
194デフォルトの名無しさん
2013/04/13(土) 18:42:50.64 volatile?
機械語じゃなくね?w
保守してくれてるとおもって気にしてないが
機械語じゃなくね?w
保守してくれてるとおもって気にしてないが
195デフォルトの名無しさん
2013/04/13(土) 19:13:06.56 素通りしてるとか言う前に吐かれたマシンコードを見るのが
先じゃないのかな。
先じゃないのかな。
196デフォルトの名無しさん
2013/04/13(土) 19:14:54.81 ああ、「マシンコード」か。見慣れない字面だから空目してびっくりしたわ。
197デフォルトの名無しさん
2013/04/13(土) 22:25:12.84 マ○ンコード
19895
2013/04/14(日) 04:11:24.79 マシンコードは見たんですよ〜 すぐ気が付くようなミスは無かったと思う。
CMT3.CMCOR = PCLK/128/1000*ms; // 1KHz(1mS)の分周値*mS
MOV.L #00088000H,R4
MUL #90H,R1
MOV.W R1,1CH[R4]
CMT3.CMCR.WORD = 0x00C2; // Φ/128 セレクト,CMIE3許可
MOV.W #00C2H,18H[R4]
CMT.CMSTR1.BIT.STR3 = 1; // カウントUP start
MOVU.W 0H[R4],R5
BSET 01H,R5
MOV.W R5,10H[R4]
do { } while( CMT3.CMCR.WORD & 0x40 ); // 割り込みを待つ
L26: MOVU.W 18H[R4],R5
BTST #06H,R5
BNE L26
RTS
CMT3.CMCOR = PCLK/128/1000*ms; // 1KHz(1mS)の分周値*mS
MOV.L #00088000H,R4
MUL #90H,R1
MOV.W R1,1CH[R4]
CMT3.CMCR.WORD = 0x00C2; // Φ/128 セレクト,CMIE3許可
MOV.W #00C2H,18H[R4]
CMT.CMSTR1.BIT.STR3 = 1; // カウントUP start
MOVU.W 0H[R4],R5
BSET 01H,R5
MOV.W R5,10H[R4]
do { } while( CMT3.CMCR.WORD & 0x40 ); // 割り込みを待つ
L26: MOVU.W 18H[R4],R5
BTST #06H,R5
BNE L26
RTS
19995
2013/04/14(日) 04:15:42.22 void Excep_CMTU1_CMT3(void) { // 1mSタイマ割込み処理
PUSHM R4-R5
CMT3.CMCR.WORD = 0x0082; // Φ/32 セレクト,CMIE3禁止
MOV.L #00088000H,R4
MOV.W #0082H,18H[R4]
CMT.CMSTR1.BIT.STR3 = 0; // カウントUP stop
MOVU.W 10H[R4],R5
BCLR #01H,R5
MOV.W R5,10H[R4]
POPM R4-R5
RTE
PUSHM R4-R5
CMT3.CMCR.WORD = 0x0082; // Φ/32 セレクト,CMIE3禁止
MOV.L #00088000H,R4
MOV.W #0082H,18H[R4]
CMT.CMSTR1.BIT.STR3 = 0; // カウントUP stop
MOVU.W 10H[R4],R5
BCLR #01H,R5
MOV.W R5,10H[R4]
POPM R4-R5
RTE
200デフォルトの名無しさん
2013/04/14(日) 04:19:11.36 do whileの脱出条件が間違っているようにしか見えない。
そもそもなぜdoなのか。通常のwhileではできない理由があるのか。
そこらへんが理解できないな。
あとコンパイラによってはdo { }が空文だと最適化でコードにしない
ものがあったりするので(昔のMS-Cとかね)最適化オプションは
全てオフにしてから確認するといいかもね。
そもそもなぜdoなのか。通常のwhileではできない理由があるのか。
そこらへんが理解できないな。
あとコンパイラによってはdo { }が空文だと最適化でコードにしない
ものがあったりするので(昔のMS-Cとかね)最適化オプションは
全てオフにしてから確認するといいかもね。
20195
2013/04/14(日) 04:23:35.4420295
2013/04/14(日) 04:29:21.93 あ、書いてる途中でレスが・・・ while { } だと前判定、do { } whileだと後判定になるから。
今のケースの場合は一緒ですけどね。前判定だとBZ で脱出、その後ろに B 続行
ってなるのがイヤだから、ってのもあります。
今のケースの場合は一緒ですけどね。前判定だとBZ で脱出、その後ろに B 続行
ってなるのがイヤだから、ってのもあります。
20395
2013/04/14(日) 05:31:48.69 見つけた〜!とおもう。hwsetup( )で MSTP_CMT1 = 0; // CMT unit1のクロックON
とコメントに書いてあるけど、これがウソで MSTP_CMT2 に0を書くべきでした。
SCIで体験した事だと、ユニットにクロックを与えないとレジスタにイネーブルを
書けなかったから、コンペアマッチタイマもそうだとおもう。
今基板帰してるから、また借りたら確認しますね。
とコメントに書いてあるけど、これがウソで MSTP_CMT2 に0を書くべきでした。
SCIで体験した事だと、ユニットにクロックを与えないとレジスタにイネーブルを
書けなかったから、コンペアマッチタイマもそうだとおもう。
今基板帰してるから、また借りたら確認しますね。
20495
2013/04/19(金) 13:52:08.55 基板につける原クロックって水晶ですよね。CPU内蔵のクロック発振器ってどんな
原理なんでしょう?
原理なんでしょう?
205デフォルトの名無しさん
2013/04/19(金) 16:33:29.13 XTALがないならRCだろ。
20695
2013/04/19(金) 17:19:02.90 RC 発振器 でぐぐったらwikiが先頭に来たけど、余計解らない語句ばかり出てきた(w
何となくだけど、どの原理もLSI内部に納めるほど微小化できるのかな?とは思った。
基板は、ユーザーブート領域に焼く方法の所で引っかかってるみたいです。
何となくだけど、どの原理もLSI内部に納めるほど微小化できるのかな?とは思った。
基板は、ユーザーブート領域に焼く方法の所で引っかかってるみたいです。
207デフォルトの名無しさん
2013/04/20(土) 14:27:11.58208デフォルトの名無しさん
2013/04/20(土) 14:28:13.61 あ、なんかPLLも基準周波数にクリスタルがいるらしい。
勘違いだったかも。
勘違いだったかも。
20995
2013/04/20(土) 17:29:42.08 CPU内蔵のPLLは、基準周波数を分周または逓倍するために使いますね。
204の話は、CPUみたいなLSIの内部に焼き付けられる原クロック回路は、
クリスタルみたいなデカいものじゃなさそうに思えるけど、どんなものなのかなあ・・・
204の話は、CPUみたいなLSIの内部に焼き付けられる原クロック回路は、
クリスタルみたいなデカいものじゃなさそうに思えるけど、どんなものなのかなあ・・・
21095
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とか。
あとLAHFとか。
21395
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日で済みました。やれやれ・・・
デバック用の基板ではユーザ空間しか焼けませんでした。
ユーザーブート領域に焼いても、そこで実行したコードでROMアクセス違反は
発生します。ROMを焼くコードだけRAMにコピーしてそこを呼ぶ手法を採りました。
欲しい機能の実装はだいたい確認。引き合い時2人月だったお金も、3.5人月
もらえました。36度の書斎でのデバックは2,3日で済みました。やれやれ・・・
215デフォルトの名無しさん
2013/08/12(月) NY:AN:NY.AN 汗が基盤に垂れなかったのだろうか
いや、液状のほうの汗なw
いや、液状のほうの汗なw
21695
2013/08/13(火) NY:AN:NY.AN 書斎が32度以上のときは、アイスノンを頭に巻いて
30分ごとにリビングに避難しながらやってました。メインは未明の頃。
30分ごとにリビングに避難しながらやってました。メインは未明の頃。
217デフォルトの名無しさん
2013/11/25(月) 01:54:29.88 8085ではメモリマップトI/O(ex:F000番地が8251のTXD/RXD)しか
やったことがないのですが、8085にもIN/OUT命令はありますよね。
オペランドは8bitのアドレス。
このIN/OUT命令を使うときはハードをどのように組むのですか?
やったことがないのですが、8085にもIN/OUT命令はありますよね。
オペランドは8bitのアドレス。
このIN/OUT命令を使うときはハードをどのように組むのですか?
218デフォルトの名無しさん
2013/11/25(月) 01:59:39.44 IO/~M信号を使用します。
219217
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バイトだからこっちのほうが小さいけど
そういう理由ではハードは決めないのですか?
ですね。 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)のときにチップセレクトされるようにすればいい。
私の知っているシステムでは、メモリ空間を広く取るためなどの理由でそうしていた。
命令長が理由でどっちを選択するか検討するという話は余り聞かないな。
あんたの知っているシステムでは、8251自体はアドレスバス上位4ビットがONで下位ビットOFFのときに
チップセレクトされるようにつながっているのだろう。
8251のチップセレクトをするに当たって、メモリ空間を使いたくない場合は、IO/Mをデコードして
OFF(M)のときにチップセレクトされるようにすればいい。
私の知っているシステムでは、メモリ空間を広く取るためなどの理由でそうしていた。
命令長が理由でどっちを選択するか検討するという話は余り聞かないな。
221デフォルトの名無しさん
2013/11/26(火) 17:00:31.10 壊れた動画ファイルをバイナリエディタで開いて、そこから一コマでも画像ファイルにして抽出することってできますか?
拡張子は3gpで昔携帯で撮ったものです
少し調べてみてmdatって文字列は確認できたんですが、ヘッダ周辺はだいぶ壊れて上書きされているみたいです
バイナリ全くわからないんだけど、規則的に色の情報が配置されてるって単純な構造でもないのかしら…
拡張子は3gpで昔携帯で撮ったものです
少し調べてみてmdatって文字列は確認できたんですが、ヘッダ周辺はだいぶ壊れて上書きされているみたいです
バイナリ全くわからないんだけど、規則的に色の情報が配置されてるって単純な構造でもないのかしら…
222デフォルトの名無しさん
2013/11/26(火) 17:04:51.07 誤爆乙?組み込み?
223217
2013/11/26(火) 17:58:32.82 >>220 なるほど。聞いてみてよかったです。ハードの設計者の意向でそのような
切り分けがなされるのでしょうね。私の知っているシステムではアドレス上位4bit
でチップセレクトされる先を決めるICが入っていました。220のやりかたのほうが
使う石が少なくできるような気がするのですが、私の顧客の伝統なのか拡張性?
のためなのか、私の付き合った現場ではメモリマップトI/Oばかりでした。
切り分けがなされるのでしょうね。私の知っているシステムではアドレス上位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かで区別される
と理解してよいでしょうか?
コマンドレジスタのアドレス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
; 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です。
あれ?なんで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.77ID:27SL9jQg >>226
スタックトップに積まれたアドレスからEとDに2バイト読み込んだ後、スタックトップに積まれたアドレスを+2更新してる
スタックトップに積まれたアドレスから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にあるデータはオフセットではなく不定のメモリ内容な気がして、そこが不安
なんですよ。
ですか?+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.08ID:qJRZbThw その前後で、スタックをどう使ってるかだよ、意味論的に
230デフォルトの名無しさん
2014/03/23(日) 22:12:05.00ID:ruxpB9t5231デフォルトの名無しさん
2014/03/23(日) 22:37:35.41ID:ruxpB9t5 SAUTO
HLに16bitの値を格納し
CALL SAUTO
DW オフセット値
の形式で呼び出すとスタック上に確保されたローカル変数の領域(SP+オフセット値)にHLの値を格納する
SAUTOからの復帰はオフセット値を格納した次のアドレスから継続する
SAUTOX
DEにオフセット値
HLに16bitの値
を入れてCALLするとスタック上に確保されたローカル変数の領域(SP+オフセット値)にHLの値を格納する
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みたいなコードになってる
んですね。やっと解りました。
この呼び出し形式が解らなかったんです。pushされたリターンアドレスを
使わないと DW オフセットを取り出せないから225みたいなコードになってる
んですね。やっと解りました。
233デフォルトの名無しさん
2014/03/30(日) 17:06:33.96ID:h6LaJ3mN どなたか >>224 わかりませんか?
234デフォルトの名無しさん
2014/03/30(日) 20:10:21.73ID:gN3GGTNV235224
2014/03/31(月) 03:02:51.17ID:BXTiIPPO ありがとうございます。
236デフォルトの名無しさん
2014/07/23(水) 16:13:08.87ID:hbLsGTB+ 8085のデータブック読むと、機械語の説明のところにクロック数とステート数という
欄があります。クロック数はΦクロック(またはその半分)が単位でしょう。
ステート数というのが、クロック数のだいたい1/3ぐらいの数値なのですが、
これが何のことか、ブック中では説明なしに使われています。
このステート数というのはどういうものなのでしょう?
欄があります。クロック数はΦクロック(またはその半分)が単位でしょう。
ステート数というのが、クロック数のだいたい1/3ぐらいの数値なのですが、
これが何のことか、ブック中では説明なしに使われています。
このステート数というのはどういうものなのでしょう?
237デフォルトの名無しさん
2014/07/23(水) 16:29:00.09ID:0dHAtBbf238236
2014/07/24(木) 02:53:13.32ID:8xeGZJ4L どうもです。私が読んだのは沖電気の日本語版で、そのソースがインテルのこれ
なのでしょうね。全部読み下すほど英語力無いのですが、Table 3 Table 4 を
参照して各命令ごとに合計をとったものが日本語の資料に追記されたと
思えばいいでしょうか? M1,M2,M3がステート数に相当するものですね?
なのでしょうね。全部読み下すほど英語力無いのですが、Table 3 Table 4 を
参照して各命令ごとに合計をとったものが日本語の資料に追記されたと
思えばいいでしょうか? M1,M2,M3がステート数に相当するものですね?
239デフォルトの名無しさん
2015/03/07(土) 01:43:39.68ID:G+snOoOp >>768
生まれた頃は暖かい家庭だったんじゃね、今からは想像できないだろうけど
生まれた頃は暖かい家庭だったんじゃね、今からは想像できないだろうけど
240デフォルトの名無しさん
2015/03/07(土) 01:44:34.65ID:G+snOoOp 誤爆った
241デフォルトの名無しさん
2015/07/18(土) 21:42:32.75ID:U8NrmB25 検索してもx86命令とx64命令しか見つからないんですけどリアルモードってx86命令でいいんですか?
242デフォルトの名無しさん
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命令に限定される、ハズ
なのでいいんですか?と聞かれたら概ねいいですと答えていいんじゃないですかね
プリフィックス付かどうかで動作変わる命令は操作対象が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のブートプログラム書くのにリアルモードでのオペコードが必要なのに、
リアルモード用のオペコード一覧が見当たらないなと悩んでました。
ありがとうございます。
起動時のCPUはリアルモードで動作するという事で、
OSのブートプログラム書くのにリアルモードでのオペコードが必要なのに、
リアルモード用のオペコード一覧が見当たらないなと悩んでました。
244デフォルトの名無しさん
2015/11/09(月) 15:12:25.74ID:53+wftUK 機械学習に関してもここでいいでしょうか?
現在、Cで深層学習のお勉強プログラムを書いています。
Caffeなどそのもののライブラリを使わずに実装したいと思っているのですが、
自動微分がどうしても必要になりますが、これを高速にすることが可能なライブラリはありませんか?
現在、Cで深層学習のお勉強プログラムを書いています。
Caffeなどそのもののライブラリを使わずに実装したいと思っているのですが、
自動微分がどうしても必要になりますが、これを高速にすることが可能なライブラリはありませんか?
245デフォルトの名無しさん
2015/11/09(月) 15:20:26.46ID:jDVf3Lh4 スレ違い
246デフォルトの名無しさん
2015/11/09(月) 16:19:45.95ID:53+wftUK 機械語か・・、すみません。見間違えました。
247デフォルトの名無しさん
2016/05/20(金) 23:25:32.36ID:KpVBsn6A Hyper-v環境でルートパーティションにおけるcpuid命令は、通常の10倍遅い
248デフォルトの名無しさん
2016/05/25(水) 13:46:52.89ID:KxnmxQU8 VTなら、cpuidは無条件でVM Exitするって書いてあるぞ。
遅いのは仕方ないね
遅いのは仕方ないね
249デフォルトの名無しさん
2017/03/19(日) 07:11:55.60ID:mKlGkgH9 THIS IS AN ACCUMULATOR.
THIS IS A REGISTER.
AHH
ACCUMULATOR REGISTER ・・・
THIS IS A REGISTER.
AHH
ACCUMULATOR REGISTER ・・・
250デフォルトの名無しさん
2018/05/23(水) 23:09:35.05ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
P00BP
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
P00BP
251デフォルトの名無しさん
2018/07/04(水) 23:00:04.37ID:gFgZc5FG 3AN
252デフォルトの名無しさん
2018/07/06(金) 12:35:01.36ID:uTPDH9XV P00BP
253デフォルトの名無しさん
2019/06/11(火) 19:40:34.85ID:lzLjg8nQ いつも思うんだけど〜
パソコンが普及してない時代の開発環境ってどうやってたんだろ?
パソコンが普及してない時代の開発環境ってどうやってたんだろ?
254デフォルトの名無しさん
2019/06/11(火) 20:01:06.20ID:VhUqfkAg ハンドアセンブル
255デフォルトの名無しさん
2019/06/11(火) 20:26:14.70ID:lzLjg8nQ ポケコンのようなマイコン書き込み機みたいなのあったんですかね?
256デフォルトの名無しさん
2019/06/11(火) 21:48:02.75ID:Z9zAVGxt Ultrixあたりで普通にvi+dbxだったけど。
257デフォルトの名無しさん
2019/06/12(水) 10:51:07.63ID:tqvE0DW+ TK-80 より前だと
トグルスイッチぱちぱち
トグルスイッチぱちぱち
258デフォルトの名無しさん
2019/06/27(木) 20:11:05.46ID:tbUThdPV 機械語で質問してもいいんですか???
259デフォルトの名無しさん
2019/06/28(金) 01:40:39.40ID:niXud6I6 もちろん。
ただし、どのアーキテクチャか明記して、絶対に「質問」であること。
ただし、どのアーキテクチャか明記して、絶対に「質問」であること。
260デフォルトの名無しさん
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>
戻り値は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
eaxは32
262デフォルトの名無しさん
2019/06/28(金) 15:24:26.32ID:Dkg4aDVY ちーがーうーだーろーおー
DWORDは4バイトだから32ビットで合っている
ただ、DWORDは符号なしなのでSDWORDに置き換えましたが結果は同じ(失敗)でした
前者の処理に問題があるのかな?
DWORDは4バイトだから32ビットで合っている
ただ、DWORDは符号なしなのでSDWORDに置き換えましたが結果は同じ(失敗)でした
前者の処理に問題があるのかな?
263デフォルトの名無しさん
2019/06/28(金) 15:43:55.03ID:2bLDyTWm .IF eax < 0
これが常に偽なんだろ
これが常に偽なんだろ
264デフォルトの名無しさん
2019/06/28(金) 16:03:32.71ID:Dkg4aDVY なるほど、マイナスのフラグを判定してないのね
265デフォルトの名無しさん
2019/06/28(金) 16:05:24.11ID:L7hsi0hP 実行時に展開されるマクロとアセンブリ時に展開されるマクロを混同してないか
266デフォルトの名無しさん
2019/06/28(金) 16:25:12.23ID:Dkg4aDVY そのあたりがわかってなかったよ dクス
267デフォルトの名無しさん
2019/08/12(月) 12:49:51.89ID:kdU0FwTT 機械語のスレなのにマトモなレスが全部アセンブラ関連なのはなぜ?
もっと機械語の質問しようぜ!
もっと機械語の質問しようぜ!
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- ヤフコメ「中国への輸出がなくなる事で、日本国内で美味しくいただける事に感謝します」👈やたら政権寄りなのはなぜ?(´・ω・`) [399259198]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- ファブルに出てくる貝沼君ってのがお前らにそっくりなんだよ
- 俺「お湯を流してと…」シンク「ボンッw」
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- paypayで支払いするの便利すぎワロッタwwwwwwwwwwwwwww
