Message Log 31 Return to Parent Menu 
Last Updated by 07/01/05(Fri)  

 
Tips
 

 やっぱり 2001 年もアセンブラッ!!だねっ


 
Message log list
 

 アセンブラ掲示板に書き込まれた過去のログです。


Message log 44 (05/01/0506/30/05)
Message log 43 (01/01/0504/30/05)
Message log 42 (01/01/0412/31/04)
Message log 41 (11/01/0312/31/03)
Message log 40 (10/01/0310/31/03)
Message log 39 (04/01/0309/30/03)
Message log 38 (12/01/0203/31/03)
Message log 37 (08/01/0211/30/02)
Message log 36 (05/01/0207/31/02)
Message log 35 (03/01/0204/30/02)
Message log 34 (01/01/0202/28/02)
Message log 33 (09/15/0112/31/01)
Message log 32 (08/01/0109/14/01)
Message log 31 (05/26/0107/31/01)
Message log 30 (05/15/0105/25/01)
Message log 29 (05/01/0105/14/01)
Message log 28 (02/01/0104/30/01)
Message log 27 (01/01/0101/31/01)
Message log 26 (10/01/0012/31/00)
Message log 25 (07/21/0009/30/00)
Message log 24 (06/16/0007/20/00)
Message log 23 (05/20/0006/15/00)
Message log 22 (05/01/0005/19/00)
Message log 21 (04/01/0004/30/00)
Message log 20 (02/01/0003/31/00)
Message log 19 (01/01/0001/31/00)
Message log 18 (11/01/9912/31/99)
Message log 17 (09/05/9910/31/99)
Message log 16 (08/21/9909/04/99)
Message log 15 (07/01/9908/20/99)
Message log 14 (04/01/9906/30/99)
Message log 13 (02/01/9903/31/99)
Message log 12 (11/01/9801/31/99)
Message log 11 (09/21/9810/31/98)
Message log 10 (08/01/9809/20/98)
Message log 09 (07/01/9807/31/98)
Message log 08 (05/04/9806/30/98)
Message log 07 (04/08/9805/03/98)
Message log 06 (02/23/9804/07/98)
Message log 05 (01/01/9802/22/98)
Message log 04 (11/09/9712/31/97)
Message log 03 (10/17/9711/08/97)
Message log 02 (08/22/9710/16/97)
Message log 01 (06/20/9708/21/97)


 
Message log 05/26/0107/31/01
 




fox  [2001/07/31 Tue 14:18:01]  [211.133.141.4]

なべちゃんさん、Ichiさん、ご返答ありがとうございます。

ichiさん
>>jmp $+2   ;;パイプライン破棄
>とりあえず、これは必要ではありませんね。

あ、そうですね。これは要らないです

>>mov cr0, ax ;;switch to ProtectedMode
>これですけど、制御レジスタには32ビットレジスタしか

すみません、これは誤記です。
ソースのほうではちゃんとEAXを使用しています。

----------------------
なべちゃんさん
>詳細な仕様がかかれた本を探す事をおすすめします。
>あとはそういう切り替えを行っているソースを読むとかでしょうか?

ありがとうございます、そうしてみます。
一応ソースを参考にして段段確りしてきたとは思うのですが
動かないのでは仕方がないです(涙

既に Intel のマニュアルは手元にあるのですが、
英語なのと分厚いので読むのに時間がかかって結構大変です
どこかに邦訳版はないものですかね・・・

Ichi  [2001/07/31 Tue 00:10:57]  [211.13.2.51]
http://www7.freeweb.ne.jp/computer/ichi98/

■foxさん
>jmp $+2   ;;パイプライン破棄
とりあえず、これは必要ではありませんね。
直後にfar jumpするのですから。

>mov cr0, ax ;;switch to ProtectedMode
これですけど、制御レジスタには32ビットレジスタしか
転送できませんので、アセンブラに
mov cr0, eax
と解釈されていると思います。
この関連で、CR0に誤った値を転送してしまっている、
ということはありませんか?
なべちゃん  [2001/07/30 Mon 22:35:02]  [202.236.152.84]

なんとも...。もう一度動作を検証されたほうが...。

use16 では、limit に ffffh 以上を指定しても無意味だった
きがしますが、よくは覚えていません。

はじめて読む486は入門に最適ですが、プログラムを組むのには
ちょっと不十分ですので、intel 当たりでプログラマーズリファレンス
を落として読むなり
詳細な仕様がかかれた本を探す事をおすすめします。

あとはそういう切り替えを行っているソースを読むとかでしょうか?

fox  [2001/07/30 Mon 20:26:17]  [211.133.141.5]

また駄目になってしまいました(泣
例によってプロテクトモードへの切り替えですが、
32ビットセグメントを呼び出すためにGDTの設定をつけました。
そうしましたところ、CSのセレクタ値をロードした時に
リブートしてしまいます。

作っているGDT
セレクタ値  内容
 00H    全てゼロ
 08H    DPL=0 BASE=0 Limit=ffffffH(BIG) type=R/W data(D=false)
 10H    DPL=0 BASE=_TEXT16 Limit=同じ type=R/E code(D=false)
 18H    DPL=0 BASE=_TEXT32 Limit=同じ type=R/E code(D=true)

BASEはちゃんとリニアアドレスに変換して、入れています。
ご迷惑でなければダンプ結果も書かせていただきます。
上のような設定をlgdtで行って・・・

;; 全略
  mov cr0, ax ;;switch to ProtectedMode
  jmp $+2   ;;パイプライン破棄
;; CSにセレクタ値をロード
  db 0eah
  dw set_cs_selector
  dw 10h    ;; 10Hのセレクタをロード
set_cs_selector:
  jmp $    ;;ここまで実行されているかテスト
  mov ax, 18h
  mov ds, ax
;; 以下略

このようなソースで、jmp $ まで来ないでリブートしてしまいます。
CS ロードのための FAR JUMP の前に jmp $ を置くとちゃんと無限ループに
入ってくれます。

486の本の通りにしているのですが、なかなか思い通りに行かずに
難儀しています。
あれこれ試してどうしても駄目なので、多分またなにか重大な勘違いを
しているのだろうと思うですが・・。
何度も済みませんが、お知恵を貸してください。


fox  [2001/07/30 Mon 13:26:01]  [211.133.141.4]

なべちゃんさんご返答感謝です。

お勧めされる方の多い「はじめて読む486」を
紀伊国屋で買ってきました。

今までちまちまデータシートを邦訳していたのが
虚しくなるような、充実した内容ですね。

>え? セグメントレジスタを切り替えない限り、
>use16 (data = code = 16bit) で動作するような気が(^^;;

とりあえず言い分けを・・・。
この段階ではとりあえずプロテクト<->リアルの変更が出来るかどうか
試したかっただけでして。
すぐに主のコードをuse32なセグメントに配置しなければならないのは
どの道見えていたのですが。
じゃあなんでECX使ってるのかと言われると、良く解ってなかったから
なのですが、一見動いていたのでこれでいいのかなぁ、と思い込んでました。
くぅ。


鈴木 まゆみ┌|∵|┘  [2001/07/29 Sun 12:13:19]  [61.112.138.228]

澤口@一升金さん&3連どんさんへ

アドバイスどうもありがとうございました(^-^)/
Microsoft C/C++ version 7.0A
を使ってコンパイルしたら,DOSモードで動きました。
ありがとうございます
( ^.^)( -.-)( _ _)

FROM まゆみ┌|∵|┘
なべちゃん  [2001/07/27 Fri 16:21:20]  [202.236.152.84]
Free386 offical page

>仰る通り、プロテクトモードに切り替えた直後に問題のコードを
>記述しています。

え? セグメントレジスタを切り替えない限り、
use16 (data = code = 16bit) で動作するような気が(^^;;

カトさん
>use32上の主処理に short jmp or near jmp すれば

far jmp でないと、use32 に切り替わらないのでは?

fox  [2001/07/26 Thu 15:01:30]  [211.133.141.4]

カトさん、ご返答どうもありがとうございます。
仰る通り、プロテクトモードに切り替えた直後に問題のコードを
記述しています。
またuse16なセグメントです。

昨日からCPUのデータシートと格闘していたのですが、
その情報と併せて考えてみると、確かに仰る通りの現象が
起きるのではないかと思います。
正常に動作していると思っていたmov 32bit-reg,32bitに関しては
あまり検証していませんでした。
(dec ECXに関してはプレフィックスの除去を行ってみたのですが)

重ね重ねどうもありがとうございます。
早速試してみます。

力卜  [2001/07/26 Thu 12:17:27]  [192.51.44.19]

foxさん、こんにちは。力卜と申します。

ソースを見ていないので想像ですが、プロテクトモードに切り換えた後に
“そのまま続けて”問題のコードが書かれているのではないでしょうか。
以降、それを前提として書いてみます。外していたら無視してください。

(masmをお使いだとして) プロテクトモードへの切り換え処理までは use16で
宣言したセグメント内に書くとして、その後の主処理 (問題として挙げられた
mov ecx,即値 や dec ecxなど) はちゃんと use32で宣言したセグメント内に
書かないと 66hプレフィクスの有無がCPUの動作モードと矛盾して、おかしな
コードを実行してしまうことになると思います。
私はCPUモードの切り換えみたな硬派なプログラムを書いたことがないので
うまく記述できるかわからないのですが、use16上のコードでプロテクト
モードに切り換えた直後、use32上の主処理に short jmp or near jmp すれば
よいと思います。両方のセグメントを同じ group にしておけば、リンク時に
同一セグメント上のコードとして連続して実行できますよね?(多分)

私は nasm 使いなので nasm で生成されるコードを確認してみました。
16ビットモードで "mov ecx,0000ffffh" は、"66B9FFFF0000" のコードが出ました。
32ビットモードで "mov cx,0ffffh" は、"66B9FFFF" のコードが出ました。
つまり、use16用の“mov ecx,即値”命令は、32ビットモード時にまず
“mov cx,即値の下位”命令として解釈されてしまい、続く“即値の続き”の
00 00… はそのまま機械語として実行してしまうはずです。
即値の値によって、“次にどんな命令を実行するか”が変わってしまうワケです。

ではでは。

fox  [2001/07/25 Wed 19:39:23]  [211.133.141.5]

ご返答どうもありがとうございます。

>なべちゃん  [2001/07/25 Wed 15:27:32]  [202.236.152.84]
>・HIMEM.SYS + EMM386.EXE 環境では CPU が既にプロテクトモード
> で動作してるため、CR0 をいじった瞬間に飛びます。

この件ですが、慌てて簡単なテストコードを個別に書きましたら
どうやらCR0の問題ではないということがわかりました。
因みに、プログラム自体がそういう性質なもので、
HIMEM.SYS、EMM386共に使用していません。
DOSエクステンダに関しても、ユーザーの意向により利用できないのです。

>・CPUモード切り替えはディバガで終えません。

仰る通りのようです。
CR0でリブートしてるように見えたのは、このためのようです。

どうやらプロテクトモードへの再入は問題ないということは解りました。
例外(?)を引き起こしているのは、以下のような部分であることが
解りました。

mov ecx, 0ffffffffh ; OK
LOOP1A:
dec ecx ; NG!
jnz short LOOP1A ; OK

mov ecx, 0ffffh ; OK
LOOP1B:
dec ecx ; OK
jnz short LOOP1B ; OK

mov ecx, 0ffffffffh ; OK
LOOP1C:
loop LOOP1C ; OK (65535回しかループしませんが)

ECXに32ビット値が入っているとDEC時にリブートしてしまいます。
16ビット値だと正常に動作します。
CPUのマニュアルなどもざっと眺めましたがなぜこれがいけないのか
解りません。
66H プレフィックスの除去なども行ってみましたが、同じ状態です。
かなり混乱してきました。どなたかヒントを下さい、お願いします。


なべちゃん  [2001/07/25 Wed 15:27:32]  [202.236.152.84]
Free386 offical page (RUN386互換 DOS-Extender)

to FOX さん

いくつかあります。
・HIMEM.SYS + EMM386.EXE 環境では CPU が既にプロテクトモード
 で動作してるため、CR0 をいじった瞬間に飛びます。
・CPUモード切り替えはディバガで終えません。
モード切り替えはOSなプログラムですから、ディバガで追うのは無茶です。
・CPUモード切り替え後もディバガで終えません。
 V86(or Real)、Protect の両方共で使えるディバガはみたことありません。

DOS環境の一番お手軽な拡張は DOS-Extender を使う事です。
go32 とか djなんたら というものを使うとお手軽でしょう。

.db  [2001/07/25 Wed 08:30:47]  [202.224.108.151]

こんにちは。.db です。
自己レスです。
過去ログを参照したところ解決例があったので無事解決できました。
ではまた。

fox  [2001/07/24 Tue 18:18:08]  [211.133.141.5]

どうもはじめまして。質問があります。
アセンブラはポケコンとPC98で弄った程度なんですが、
既存のC/ASMで書かれたDOSプログラムを拡張しようと考えています。

そのDOSプログラムはプロテクトモードに入り、
GDTを設定してセグメントリミットを拡張してリアルモードに戻っています。
ところがこれをでプログラムの本処理部分だけをアセンブラ化し、
再度プロテクトモード下で実行させたいのです。

ところがソースを参考にして、CR0を設定しても
設定した瞬間にリブートしてしまいます。
何が悪い/足りないのか特定したいのでお尋ねします。
ただ単純にリアルモード->プロテクトモードの遷移を行おうとした場合に、

1.割り込みを禁止する cli
2.CR0をロードする mov EAX, CR0
3.ビット1を立てる or EAX,1
4.3の値をCR0にストアする mov CR0, EAX
5.?CS:IP絡み?次の命令  jmp $+2
6.割り込み許可       sti

これをマクロ展開しています。
(デバッガで追うと、4の実行時にリブートします。)
以上のように、なるべく最低限の変更で実現したいと考えてるのですが
基本的な考えはこれで大丈夫なのでしょうか?
よろしくお願いします。

.db  [2001/07/24 Tue 17:52:49]  [202.224.108.219]
ml でリンクができません。



はじめまして。 masm 使いの .db です。
今回は ml を初めて使う事によって、問題の発生しました。

pc9801 の x86 用のアセンブラコードを以下のように ml に渡しますと
自動的に /z2 オプションを指定されてコンパイル(リンク)
エラーの発生してしまいます。

> Assembling: code.asm
>Microsoft (R) Incremental Linker Version 5.12.8078
>Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
>
>/z2
>"egc.obj"
>"egc.exe"
>NUL
>LINK : warning LNK4044: unrecognized option "z2"; ignored
>egc.obj : warning LNK4033: converting object format from OMF to
>LINK : fatal error LNK1181: cannot open input file "egc.exe"

ヘルプを見ても /z2 オプションは不明でした。
リンクエラーナンバーは 4044, 4033 です。

masm 5.1 互換モードでも同様のエラーが出てしまいましたが、
masm 32 は 32 ビット用なので pc9801 用のコンパイルするには、
特別なオプションなどが必要なのでしょうか?
例えば、 masm.hlp に特に解説は無いのですが、
コード内から .186 などの指定は必要になるのでしょうか?

どうすると、 /z2 オプションを回避して、デバッグ情報も無しに、
リンクすることができるのでしょうか?

よろしくお願いします。



鈴木 まゆみ┌|∵|┘  [2001/07/24 Tue 10:30:20]  [202.11.120.218]

澤口@一升金さん&3連どんさんへ

アドバイスどうもありがとうございます(^-^)/
一度試してみます。できたら報告します。

e(^。^)g_ファイト!!

ここのみなさんって良い人ばかりですね。
みんなで質問し合って,向上していくっていいですね┌|∵|┘
もっとここのみなさんのレベルに追いつくように
頑張らなくっちゃ(*^.^*)エヘッ
ていうことでアセンブラも最近やり始めました。
みなさんのお世話になるかもしれませんが(^ー^)ノ
よろしくお願いしまーす( ^.^)( -.-)( _ _)

FROM まゆみ┌|∵|┘
澤口@一升金  [2001/07/23 Mon 21:58:22]  [211.2.146.33]

澤口@一升金です。

to 鈴木 まゆみ┌|∵|┘さん:

>DOSモードで動く.exeファイルの作り方を教えてください。
W32 console aplication は 32bit の実行ファイルです。 VC++5.0 では
16bit DOS モード用の実行ファイルは生成できません。
( VC++ 1.5 ならできます)
ここの過去アーカイブにあると思いますが、ArrowSoft Assembler とか
A86,masm などの 16bit 版アセンブラを使用して DOS 用実行ファイル
を作るのがいいでしょう。
Borland C++ suite などを購入するのもいいかも知れません。

http://www.borland.co.jp/bcsuite/
澤口@一升金  [2001/07/23 Mon 21:47:22]  [211.2.146.33]

澤口@一升金です。

to 笑む獅子さん:

>1.ウィンドウクリエイトに関する処理はAPIだとは思いますが
>もしAPIを使わずに自前でプログラミングするとそれはマシン語なのか疑問です。
原理的に API を使わずにプログラミングできないわけではないですが、そう
すると、ほとんどOSそのものを丸ごと作ることになります。現実的ではなさ
そうですね。

>2.なんのマニュアルも無しにマザーボードをハードウェアライクに操作するのは私には無理そうです。
誰だって無理だと思います。

>3.C/C++の .lib ファイルはマシン語なのか、それともOSが独自に解釈するキーワードなのか分かりません。
マシン語です。ただし、処理系が独自に構成するので、例えば VC++ の lib ファイルが
そのまま gcc や Borland C++ でリンクできるとは限りません。

>アセンブラにかんするソフトウェアが入手困難や法外な価格なのは憤慨に耐えない!
? これは何というソフトウェアの話なのでしょうか。
x86 系ならフリーのアセンブラだけで何十種類もありますが。ここの過去アーカイブで
も商用のアセンブラの話題はほとんど出ていないはずです。

>5.Winではマシン語はできないのではないか?WinというOSに不信感
なぜそう思われたのでしょう。もっとも、アセンブラでハードを直接いじるのなら、DOS
か RT-Linux が向いているとは思いますが。

>6..sys .exe .lib .dll .VxD .drv これらはやはり非マシン語なのでしょうか?
全てマシン語です。ただし、このバイナリをメモリのどこにロードして実行を
移すのかはOSが管理しています。
F  [2001/07/23 Mon 19:48:02]  [211.9.1.6]

1.ウィンドウクリエイトに関する処理はAPIだとは思いますが
もしAPIを使わずに自前でプログラミングするとそれはマシン語なのか疑問です。

2.なんのマニュアルも無しにマザーボードをハードウェアライクに操作するのは私には無理そうです。

3.C/C++の .lib ファイルはマシン語なのか、それともOSが独自に解釈するキーワードなのか分かりません。

4.皆様方は御立派であらせられますが・・・一つ疑問が。

昨今、アセンブラ関連のツールは入手困難と聞き提案が。
「究極ソフトウェア「アセンブレーション」→→→何でもできるよ!」
の構図において
「安価な開発ツールでアセンブラを自作だぴょん!」
を企てるのも一つかと・・・

アセンブラにかんするソフトウェアが入手困難や法外な価格なのは憤慨に耐えない!

5.Winではマシン語はできないのではないか?WinというOSに不信感

6..sys .exe .lib .dll .VxD .drv これらはやはり非マシン語なのでしょうか?
OSには解釈できるがCPUには解釈できないバイナリなのかどうなのか、そこらへんがしっくりこないです
3連どん  [2001/07/23 Mon 12:45:22]  [202.247.6.2]

昔のTurbo-CやMS-Cならリアルモードのコードを生成します。
Turbo-Cは、Borland CommunityのMuseumからフリーダウンロード
可能( ココ → http://community.borland.com/museum )
俺は確認してないけど(アンケートみたいのに答えんとアカンみたいやし)
ここはアセンブラの掲示板やから、アセンブラ(機械語)以外の質問はダメだよ。




まゆみ┌|∵|┘  [2001/07/22 Sun 11:54:27]  [61.112.138.160]

追申

 C言語をやさしく教えてくれる彼氏を募集中でーす。
 私は工学部の大学にかよう。女子大生でーす(^ー^)ノ
 顔は癒し系かな。プログラムを教えてくれるやさしい人メール待ってます┌|∵|┘
鈴木 まゆみ┌|∵|┘  [2001/07/22 Sun 11:41:24]  [61.112.138.160]

はじめまして(^ー^)ノ

私は今C言語を勉強しているのですが,Visual C++ 5.0で作ったプログラムをコンパイルすると,DOSプロンプトでは動くのですが,DOSモードで再起動したDOSモードでは「This program cannot be run in DOS mode.」と表示されて動きません。
OSはWindows98seです。プロジェクトはWin32 Console Applicationを使いました。
DOSモードで動く.exeファイルの作り方を教えてください。
笑む獅子  [2001/07/19 Thu 16:12:09]  [210.154.48.58]

OSASKにご期待ください

はじめまして、こんにゃちわぁ〜。

このページにhttp://members.tripod.com/~masapico/doc_MakeExe.html
出会ってから小生はEXEの中身が知りたくなりました結果
貴殿のサイトに訪問してしまいました事を御報告致します。

1.ウィンドウクリエイトに関する処理はAPIだとは思いますが
もしAPIを使わずに自前でプログラミングするとそれはマシン語なのか疑問です。

2.なんのマニュアルも無しにマザーボードをハードウェアライクに操作するのは私には無理そうです。

3.C/C++の .lib ファイルはマシン語なのか、それともOSが独自に解釈するキーワードなのか分かりません。

4.皆様方は御立派であらせられますが・・・一つ疑問が。

昨今、アセンブラ関連のツールは入手困難と聞き提案が。
「究極ソフトウェア「アセンブレーション」→→→何でもできるよ!」
の構図において
「安価な開発ツールでアセンブラを自作だぴょん!」
を企てるのも一つかと・・・

アセンブラにかんするソフトウェアが入手困難や法外な価格なのは憤慨に耐えない!

5.Winではマシン語はできないのではないか?WinというOSに不信感

6..sys .exe .lib .dll .VxD .drv これらはやはり非マシン語なのでしょうか?
OSには解釈できるがCPUには解釈できないバイナリなのかどうなのか、そこらへんがしっくりこないです。
staro  [2001/07/17 Tue 20:30:39]  [210.190.218.56]

 こんばんわ、staroです。

 けんぼぉさん、三連どんさん、レスありがとうございます。

>けんぼぉさん
>↓ここの”第5回”ですかね。
http://www.teu.ac.jp/nsit/~tominaga/lect/pbe3/

 さっそくそのサイトの情報を読ませてもらいました。
 うまく応用してみます。

>三連どんさん
>gccといってもx86系やらあります。CPUの種類は?
>VisualC++のインラインアセンブラならわかりますが、gccは???

 ええと、x86系のGNU C Compilerです。
 Windows98でgcc Developer Stationを使いながらやっています。
 自分の使っているパソコンのCPUはAMDK6-2 400MHzです。

 実は、アセンブラはVisualC++6.0のインラインアセンブラから
入りまして、自分の持っているスタンダード版は最適化が
ないのかなぁ?と思い、gccに移りました。

 ところが、VCのインラインアセンブラは中にラベルやジャンプ
を組み込めるんですが、gccの場合はあちこちのサイトを見る限りでは
中にラベルやジャンプ命令を組み込んだものは見当たりませんでした。

 gccのインラインアセンブラは...

int nDst, nSrc;
nSrc = 10;

__asm__ __volatile__ (
"mov %0, %%eax\n"
"add $16, %%eax\n"
"mov %%eax, %1\n"
:"=m"( nSrc )
:"=m"( nDst )
);

 こんな感じで記述しています。ここにどうやってラベルを
埋め込むんだろう?というのが問題だったんです。

 gccのインラインアセンブラでは主にここのサイトを参考にしています。
 http://www.me.ics.saitama-u.ac.jp/~fujita/linux_mmx/

 では。
3連どん  [2001/07/17 Tue 18:13:14]  [202.247.6.6]

gccといってもx86系やらあります。CPUの種類は?

VisualC++のインラインアセンブラならわかりますが、gccは???

ちなみにVC++(x86)では。

DWORD abc = 123; //DWORD unsigned long
__asm{
mov eax,abc
cmp eax,256
jb label1 ; Carry Flag = 1ならばlabel1へ
mov eax,1
label1:
};


こんな感じになります。


けんぼぉ  [2001/07/17 Tue 11:06:31]  [210.163.178.219]

ども、けんぼぉです。

♪staroさん
はじめまして。

> gccのインラインアセンブラの条件分岐の方法がいまだにわかりません。

↓ここの”第5回”ですかね。
http://www.teu.ac.jp/nsit/~tominaga/lect/pbe3/
staro  [2001/07/15 Sun 14:34:52]  [210.190.218.48]

 はじめまして、staroというものです。
 いつも掲示板上の皆さんの意見を参考に勉強させて頂いてます。

 以前、gccでインラインアセンブラができないかと思いまして、ここの掲示板の過去ログやネット上のサイトを探し回り、何とかできるようになったのですが、gccのインラインアセンブラの条件分岐の方法がいまだにわかりません。

 どなたか、このgccのインラインアセンブラでの条件分岐について知っている方がいましたら、ご指導頂ければ幸いです。

 では。
くた  [2001/07/13 Fri 09:21:04]  [210.172.70.130]

3連どんさん、さ〜さん、有難うございました。助かりました。
「レジスタを複数繋げてシフトする事」なのですね。

さ〜  [2001/07/13 Fri 02:22:55]  [211.126.24.117]

米ヤフーでfunnel shiftで検索してみたところ、
HPのページがひっかかりました。

http://devresource.hp.com/devresource/Docs/Refs/IA64ISA/app_program3.html

適当に訳すとこんなことらしいです。

> shrp命令は 128bit入力のファネルシフトを行う。
> そいつは二つのレジスタをつなげた128bitフィールドから
> 任意の64bitフィールドを取り出す。開始位置は即値で指定する。
> この命令はアラインされていないデータを高速に調整できる。
> shrpの両方のオペランドに同じレジスタを使えば、
> bit rotateにも使える。

こんな命令があったのか。

3連どん  [2001/07/12 Thu 17:44:16]  [202.247.6.3]
低レベルjavaプログラム

ファネル(Funnel)を辞書で調べたら・・・

【じょうご;(漏斗形の)通風筒, 採光孔; (機関車・汽船の)煙突. 】

う〜ん、ビットを集中させるシフト演算???
アセンブラやって10年(高校時代から)始めて聞く言葉です。

くたくた  [2001/07/10 Tue 14:52:57]  [210.172.70.130]

初めまして、くたくたと申します。

「ファネルシフト」とはどういう物でしょうか。
検索をかけたのですが、全くひっかかりませんでした。
(SANYOのHPにひっかかったが、説明無し)

どうぞ宜しくお願い致します。

くたくた  [2001/07/10 Tue 14:52:50]  [210.172.70.130]

初めまして、くたくたと申します。

「ファネルシフト」とはどういう物でしょうか。
検索をかけたのですが、全くひっかかりませんでした。
(SANYOのHPにひっかかったが、説明無し)

どうぞ宜しくお願い致します。

truss2dbx  [2001/07/09 Mon 01:34:26]  [61.124.69.53]

SMPな環境でマシン語を使ってCPUを切り替えたり、
もしくは選択したCPUで処理したりすることは可能でしょうか?
(例えばPentiumV*2の環境の場合)
もしかしてBIOSのシステムコールでそういうものが隠されて
いるのでしょうか?
もしあったら使ってみたいな〜。

truss2dbx  [2001/07/09 Mon 01:34:20]  [61.124.69.53]

SMPな環境でマシン語を使ってCPUを切り替えたり、
もしくは選択したCPUで処理したりすることは可能でしょうか?
(例えばPentiumV*2の環境の場合)
もしかしてBIOSのシステムコールでそういうものが隠されて
いるのでしょうか?
もしあったら使ってみたいな〜。

ZW  [2001/06/24 Sun 22:38:48]  [210.251.3.7]
よろしければ

はじめまして、ZWと申します。
三菱の16bitマイコンM377シリーズのデバッカ等をご存知
であれば教えてください。
機能的には逆アセンブルが出来て簡単なトレースができればいいです。

けんぼぉ  [2001/06/22 Fri 09:30:10]  [210.163.178.219]

ども、けんぼぉです。

♪かずさん
はじめまして。
>逆アセンブルしたソースを見ても何から手をつければいいのか
>分からず、結局何も出来ません。
>そのような事が書かれたHPや書籍をご存知の方がいらっしゃい
>ましたらそちらの方もよろしくお願いします。

ある程度はアセンブラを書けるぐらいにならないと、システム
コールとかが分からないと思いますので、逆汗したソースは読め
ないと思います。けど、逆汗したソースを読むのは1番いい勉強
方法だと思います。
多分、DOS/V マシンをお使いかと思いますので、以下を参照して
みて下さい。

プログラミングの力を生み出す本
http://www.ohmsha.co.jp/data/books/contents/4-274-13207-2.htm

ラジカルなプログラミング入門(絶版)
筑摩書房 1991年8月発行 価格: 1,214円(税別)
ISBN: 4-480-05161-9

あと、アスキーの「はじめて読む8086」「はじめて読む486」
シリーズは基本かと思います。

プログラミングの入り口
http://www.geocities.co.jp/SiliconValley/9979/asmhead.html

アセンブラ入門
http://www.d1.dion.ne.jp/~ecb/assembler/

プログラミング
http://www.geocities.co.jp/SiliconValley-PaloAlto/5989/programming.html
かず  [2001/06/21 Thu 23:27:22]  [210.147.135.53]

逆アセンブラして出来たソースを見て勉強しようと
思うのですが逆アセンブルしたソースを見ても
何から手をつければいいにか分からず、
結局何も出来ません。
ちょっとしたコツや手順を教えていただけませんか。
後、そのような事が書かれたHPや書籍を
ご存知の方がいらっしゃいましたらそちらの方も
よろしくお願いします。
なべちゃん  [2001/06/13 Wed 23:48:14]  [202.236.152.84]


忘れずに、chain してください。chain とは本来登録されていた
ルーチンに制御を返すことです。
だりあ  [2001/06/13 Wed 19:04:49]  [202.13.167.1]

INT 21hをフックして、自作ルーチンに置き換えたいのですが、割り込みベクタを書き換えたとたん不正な命令があったとして強制終了されてしまいます。他の割り込みベクタは変更できるのですが(例えばINT 22h,23h,24h)、何か方法があるのでしょうか?
誰か知っていれば教えてください。
澤口@一升金  [2001/06/10 Sun 21:46:12]  [211.4.198.30]

澤口@一升金です。

to wz さん:

インターフェースの記事はCQ出版社のコピーサービスを利用するのが
確実だと思うのですが。
1981年11月号と1983年12月号で特集記事が組まれてますね。

http://www.cqpub.co.jp/interface/include/questions.htm#HowToBuyBackNumber

しかし、いまどき Z8000 を使うメリットって何かあるのでしょうか。
wz  [2001/06/09 Sat 20:00:19]  [65.10.10.239]

今度Z8000を触る事になった者です。

アセンブラは初めてなので、参考のために日本語の資料を探していると
昔のインターフェイス誌に記事が載っているのを発見しました。
どなたかもっていらっしゃる方はいませんでしょうか?

よろしければ譲って頂くか、コピーをお願いしたいのですが。

よろしくお願いいたします。
澤口@一升金  [2001/06/06 Wed 02:39:13]  [211.4.198.32]

澤口@一升金です。

to H8/300さん:

現在入手可能な日本語の書籍では、吉野敏也氏の一連の著作に
かなり詳細なファイルシステムの解説があります。

http://member.nifty.ne.jp/t_yoshino/

ネットでは、 DOS file system で検索するといろいろ出てきます。
例えば

http://www.alumni.caltech.edu/~pje/dosfiles.html

簡単なサンプルソースコードがここにあります。

http://www.piclist.com/techref/com/dunfield/ftp/embedpc/readme.htm

率直に言えば、商用として販売するのなら、今時は自分でファイル
システムを一から作るより、メーカー製のライブラリを購入するべき
だと思うのですが。
例えば

http://www.aicp.co.jp/product/romdos.html
http://sies.tjsys.co.jp/product/tj/middle/fildos/
http://www.artsys.co.jp/products/afs68k.html
@@  [2001/06/05 Tue 13:44:46]  [202.32.87.10]

Cで何とかなりそうなので試してみます。すいません
@@  [2001/06/05 Tue 13:37:02]  [202.32.87.10]

>OSはなんでしょう?

Windows2000です。

>SMPな環境でプログラムを組んだことはないのですが、NT系のOSで
>したら『SetThreadAffinityMask() でスレッドが使用するプロセ
>ッサを限定してプロセッサに関する情報を取得する』ということ
>をプロセッサの数だけ繰り返せば取得できそうな気がします。

しろさんありがとうございます。
早速試してみたいと思うのですが、できればアセンブラで解決する方法はありませんでしょうか?

しろ  [2001/06/05 Tue 04:39:29]  [210.253.200.230]

> SMPのCPU Signatureを個別に取得するにはどうすればいいのでしょうか?

OSはなんでしょう?
SMPな環境でプログラムを組んだことはないのですが、NT系のOSで
したら『SetThreadAffinityMask() でスレッドが使用するプロセ
ッサを限定してプロセッサに関する情報を取得する』ということ
をプロセッサの数だけ繰り返せば取得できそうな気がします。
なべちゃん  [2001/06/04 Mon 11:23:44]  [202.236.152.84]

carry
【名】持ち運び、《ゴルフ》飛距離、キャリー、桁上げ
carry flag
   キャリーフラグ、桁上げフラグ
[英辞郎より]

アセンブラの質問  [2001/06/03 Sun 11:20:49]  [211.122.170.138]

アセンブラの中で、キャリーという言葉が出てきますが、キャリーとは何のことですか。説明してくださったらうれしいです。
@@  [2001/06/01 Fri 15:08:10]  [202.32.87.10]

SMPのCPU Signature(Family/Model/Step)を個別に取得するにはどうすればいいのでしょうか?

普通にCPUIDで呼び出すと1個目のSignatureしか取得できません。
ご存知方いらっしゃいましたらよろしくおねがいします。
(サンプルもあるとすごく嬉しいのですが・・・)
K.Takata  [2001/05/26 Sat 00:34:22]  [210.253.95.124]

>詳細な仕様が記述されているページを教えていただけないでしょうか。

http://www.vector.co.jp/soft/data/prog/se044198.html



e-mail: mist@e-net.or.jp
Structured Anchor Tree Return to Menu Return to Parent Menu 
Powered by Unit Missing Link.