[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[OSASK 00055] nask バグ報告
- From: "FORM-Akkie" <akkiesoft !Atmark! marokun.net>
- Date: Fri, 03 Nov 2006 23:26:36 +0900
- Cc:
このメールは、以下のOSASK-ML投稿フォームから書き込まれた内容です。
http://osask.marokun.net/form/
お名前: nika
こんばんは、nikaです。
先日、naskでのアセンブルで妙な現象の発生を確認したので
報告したいと思います。
使用しているnask.exeは以下のものです。
ファイルサイズ: 27648
タイムスタンプ: 2004/05/06 17:23
cmp byte [ebx + 0], "M"
という命令をアセンブルすると
80 3B 4D
というバイナリになりますが、定数0を宣言して使うと
違うバイナリが生成されてしまうようです。
場合によってはラベルが宣言されてしまうバグもあるようで
内部が不安定になってしまうようです。
_mcb equ 0
cmp byte [ebx + _mcb], "M"
という命令をアセンブルすると"M"の値が無視されて、
80 3B 31
というバイナリになってしまいます。
naskのアセンブル時のその行周辺の.lstを引用します。
いくつかの行が消えているのも分かります。
309 [SECTION .text]
310 00000207 global _OsaskMain
311 = 00000000 _m equ 0
312 = 00000000 _d equ 0
313 00000207 80 3B 4D cmp byte [ebx + 0], "M"
314 0000020A 80 3B 31 cmp byte [ebx + _m], "M"
315 0000020D 80 3B 31 000029F7 80 7B 01 4D cmp byte [ebx + _d], "Z"
316 000029FB 80 7B 01 4D cmp byte [ebx + 1 + _m], "M"
317 000029FF 80 3B 5A cmp byte [ebx + _m + _d], "Z"
318 00002A02 80 3B 31 cmp byte [ebx + _m], "M"
319 00002A05 80 3B 31 000015F7 90 cmp byte [ebx + _d], "Z"
320 000015F8
321 000015F8 getsignalw: ; シグナルの取得(ウェイト有)
以下は上記のアセンブルソースです。
[SECTION .text]
global _OsaskMain
_m equ 0
_d equ 0
cmp byte [ebx + 0], "M"
cmp byte [ebx + _m], "M"
cmp byte [ebx + _d], "Z"
cmp byte [ebx + 1], "M"
cmp byte [ebx + 1 + _m], "M"
cmp byte [ebx + _m + _d], "Z"
cmp byte [ebx + _m], "M"
cmp byte [ebx + _d], "Z"
nop
getsignalw: ; シグナルの取得(ウェイト有)
(以下省略)
この場合は定数0を使わなければ問題無いバイナリにアセンブル
されているので、cpp0を通して数値に#defineして使用しています
が、気づかずに使用している方がいるかも知れません。
それでは。