Difference between revisions of "PASMO TEST"
From Z80 Machines Wiki
(→オペレーター概要) |
(→ディレクティブ) |
||
Line 1: | Line 1: | ||
− | = | + | =優先順位テーブル= |
− | + | 優先順位による演算子の表、同じ行の演算子は同じ優先順位を持ちます。 | |
− | === | + | ## (see note) |
+ | $, NUL, DEFINED | ||
+ | *, /, MOD, %, SHL, SHR, <<, >> | ||
+ | +, - (binary[訳注:2項演算子]) | ||
+ | EQ, NE, LT, LE, GT, GE, =, !=, <, >, <=, >= | ||
+ | NOT, ~, !, +, - (unary[訳注:単項演算子]) | ||
+ | AND, & | ||
+ | OR, |, XOR | ||
+ | && | ||
+ | || | ||
+ | HIGH, LOW | ||
+ | ? | ||
− | + | <nowiki>##</nowiki>演算子は特別な場合で、マクロ展開中に処理されます。[[#macro_generalities|マクロに関する章]]を参照してください。 | |
+ | |||
+ | ==オペレーターのリスト== | ||
+ | |||
+ | ===! === | ||
+ | |||
+ | :論理否定。引数が0の場合はtrue、それ以外の場合はfalseを返します。 | ||
+ | |||
+ | ===<nowiki>!= </nowiki>=== | ||
+ | |||
+ | :NEと同じ。 | ||
+ | |||
+ | ===<nowiki>##</nowiki>=== | ||
+ | <div id="operator_doublesharp"> </div> | ||
+ | :識別子貼り付け演算子。[[#macro_generalities|マクロに関する章]]を参照してください。 | ||
+ | |||
+ | ===$=== | ||
+ | <div id="operator_dollar"> </div> | ||
+ | :現在の文の先頭の位置カウンタの値を提供します。たとえば、DWディレクティブでは、現在のアイテムではなく、リスト内の最初のアイテムの位置を指定します。 | ||
[訳注sample:align.asm] | [訳注sample:align.asm] | ||
− | + | . | |
− | + | . | |
− | + | . | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
align macro n | align macro n | ||
local newpos, oldpos | local newpos, oldpos | ||
oldpos equ $ | oldpos equ $ | ||
− | newpos equ (oldpos + n - 1) / n * n | + | newpos equ (oldpos + n - 1) / n * n |
if newpos < oldpos | if newpos < oldpos | ||
Line 31: | Line 54: | ||
. | . | ||
− | === | + | ===%=== |
+ | <div id="operator_percent"> </div> | ||
+ | :MODと同じです。 | ||
− | + | ===&=== | |
− | + | :ANDと同じです。 | |
− | + | ===&&=== | |
− | + | ||
− | + | :論理的両方のオペランドが真の場合、真。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | === | + | ===<nowiki>*</nowiki>=== |
− | : | + | :乗算。 |
− | === | + | ===+ === |
− | |||
− | |||
− | + | :加算または単項+。 | |
− | + | ===- === | |
− | + | :減算または単項-。 | |
− | + | ===/ === | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | :切り捨てられた整数の除算。 | |
− | + | ===< === | |
− | + | :LTと同じ | |
− | + | ===<< === | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | :SHLと同じ | |
− | + | ===<nowiki><= </nowiki>=== | |
− | + | :LEと同じ | |
− | + | ===<nowiki>= </nowiki>=== | |
− | + | :EQと同じ | |
− | + | ===> === | |
− | + | :GTと同じ | |
− | |||
− | : | ||
− | |||
− | + | ===<nowiki>>=</nowiki>=== | |
− | + | :GEと同じ | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | === | + | ===>> === |
− | |||
− | |||
− | + | :SHRと同じ | |
− | + | ===? === | |
− | + | :条件式。 ?の右側の式の場合、:で区切られた2つの式が続く必要があります。 trueの場合、最初の式が評価され、falseの場合、2番目の式が評価されます。 | |
− | + | ===| === | |
− | + | :ORと同じ。 | |
− | + | ===|| === | |
− | + | :論理OR。オペランドの1つがtrueの場合、true。 | |
− | + | ===~ === | |
− | + | :NOTと同じ | |
− | + | ===AND=== | |
− | + | :ビット単位のAND演算子。 | |
− | + | ===DEFINED=== | |
− | + | :引数は識別子でなければなりません。結果は、識別子が定義されている場合はtrue、定義されていない場合はfalseです。 | |
− | + | ===EQ=== | |
− | + | :等しい。両方のオペランドが等しい場合はtrue、そうでない場合はfalse。 | |
− | + | ===GE=== | |
− | |||
− | + | :より大きいか等しい。左のオペランドが右より大きいか等しい場合は真。 | |
− | + | ===GT=== | |
− | + | :より大きい。左のオペランドが右より大きい場合は真。 | |
− | + | ===HIGH=== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | :引数の上位バイトを返します。 | |
− | + | ===LE=== | |
− | + | :以下。左のオペランドが右よりも小さいか等しい場合は真。 | |
− | + | ===LOW=== | |
− | + | :引数の下位バイトを返します。 | |
− | |||
− | : | ||
− | + | ===LT=== | |
− | + | :未満。 左オペランドが右より小さい場合はtrue。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | === | + | ===MOD=== |
− | : | + | :係数。整数除算の残り。 |
− | === | + | ===NE=== |
− | : | + | :等しくない。両方のオペランドが等しい場合はfalse、そうでない場合はtrue。 |
− | === | + | ===NOT=== |
− | : | + | :ビット単位ではありません。このオペランドの1の補数を返します。 |
− | + | ===NUL=== | |
− | + | :右に何かがある場合はtrueを返し、それ以外の場合はfalseを返します。引数がマクロのパラメーターである場合に役立ちます。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | === | + | ===OR=== |
− | : | + | :ビット単位のOR演算子。 |
− | + | ===SHL=== | |
− | + | :シフト左。ゼロで埋めて、右オペランドで指定されたビット数だけ左にシフトした左オペランドを返します。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | === | + | ===SHR=== |
− | : | + | :シフト右。右側のオペランドで指定されたビット数だけ右側にシフトされ、ゼロで埋められた左側のオペランドを返します。 |
+ | ===XOR=== | ||
+ | :ビット単位のxor(排他的OR)演算子。 | ||
= オペレーター概要 = | = オペレーター概要 = |
Revision as of 19:49, 12 December 2020
Contents
- 1 優先順位テーブル
- 1.1 オペレーターのリスト
- 1.1.1 !
- 1.1.2 !=
- 1.1.3 ##
- 1.1.4 $
- 1.1.5 %
- 1.1.6 &
- 1.1.7 &&
- 1.1.8 *
- 1.1.9 +
- 1.1.10 -
- 1.1.11 /
- 1.1.12 <
- 1.1.13 <<
- 1.1.14 <=
- 1.1.15 =
- 1.1.16 >
- 1.1.17 >=
- 1.1.18 >>
- 1.1.19 ?
- 1.1.20 |
- 1.1.21 ||
- 1.1.22 ~
- 1.1.23 AND
- 1.1.24 DEFINED
- 1.1.25 EQ
- 1.1.26 GE
- 1.1.27 GT
- 1.1.28 HIGH
- 1.1.29 LE
- 1.1.30 LOW
- 1.1.31 LT
- 1.1.32 MOD
- 1.1.33 NE
- 1.1.34 NOT
- 1.1.35 NUL
- 1.1.36 OR
- 1.1.37 SHL
- 1.1.38 SHR
- 1.1.39 XOR
- 1.1 オペレーターのリスト
- 2 オペレーター概要
優先順位テーブル
優先順位による演算子の表、同じ行の演算子は同じ優先順位を持ちます。
## (see note) $, NUL, DEFINED *, /, MOD, %, SHL, SHR, <<, >> +, - (binary[訳注:2項演算子]) EQ, NE, LT, LE, GT, GE, =, !=, <, >, <=, >= NOT, ~, !, +, - (unary[訳注:単項演算子]) AND, & OR, |, XOR && || HIGH, LOW ?
##演算子は特別な場合で、マクロ展開中に処理されます。マクロに関する章を参照してください。
オペレーターのリスト
!
- 論理否定。引数が0の場合はtrue、それ以外の場合はfalseを返します。
!=
- NEと同じ。
##
- 識別子貼り付け演算子。マクロに関する章を参照してください。
$
- 現在の文の先頭の位置カウンタの値を提供します。たとえば、DWディレクティブでは、現在のアイテムではなく、リスト内の最初のアイテムの位置を指定します。
[訳注sample:align.asm]
. . . align macro n local newpos, oldpos oldpos equ $ newpos equ (oldpos + n - 1) / n * n if newpos < oldpos .error Align out of memory endif . . .
%
- MODと同じです。
&
- ANDと同じです。
&&
- 論理的両方のオペランドが真の場合、真。
*
- 乗算。
+
- 加算または単項+。
-
- 減算または単項-。
/
- 切り捨てられた整数の除算。
<
- LTと同じ
<<
- SHLと同じ
<=
- LEと同じ
=
- EQと同じ
>
- GTと同じ
>=
- GEと同じ
>>
- SHRと同じ
?
- 条件式。 ?の右側の式の場合、:で区切られた2つの式が続く必要があります。 trueの場合、最初の式が評価され、falseの場合、2番目の式が評価されます。
|
- ORと同じ。
||
- 論理OR。オペランドの1つがtrueの場合、true。
~
- NOTと同じ
AND
- ビット単位のAND演算子。
DEFINED
- 引数は識別子でなければなりません。結果は、識別子が定義されている場合はtrue、定義されていない場合はfalseです。
EQ
- 等しい。両方のオペランドが等しい場合はtrue、そうでない場合はfalse。
GE
- より大きいか等しい。左のオペランドが右より大きいか等しい場合は真。
GT
- より大きい。左のオペランドが右より大きい場合は真。
HIGH
- 引数の上位バイトを返します。
LE
- 以下。左のオペランドが右よりも小さいか等しい場合は真。
LOW
- 引数の下位バイトを返します。
LT
- 未満。 左オペランドが右より小さい場合はtrue。
MOD
- 係数。整数除算の残り。
NE
- 等しくない。両方のオペランドが等しい場合はfalse、そうでない場合はtrue。
NOT
- ビット単位ではありません。このオペランドの1の補数を返します。
NUL
- 右に何かがある場合はtrueを返し、それ以外の場合はfalseを返します。引数がマクロのパラメーターである場合に役立ちます。
OR
- ビット単位のOR演算子。
SHL
- シフト左。ゼロで埋めて、右オペランドで指定されたビット数だけ左にシフトした左オペランドを返します。
SHR
- シフト右。右側のオペランドで指定されたビット数だけ右側にシフトされ、ゼロで埋められた左側のオペランドを返します。
XOR
- ビット単位のxor(排他的OR)演算子。
オペレーター概要
すべての数値は、必要に応じて2の補数またはトラクティングを使用して、符号なしの16ビットとして取得されます。論理演算子は、trueの場合はFFFF hexを返し、falseの場合は0を返します。引数の0はfalseで、その他の値はtrueです。 括弧を使用して、式の一部をグループ化できます。また、許可または要求するz80命令でインダイレクションを表現するためにも使用されます。これにより、インダイレクションが許可されている場所で括弧で囲まれた式を使用すると、いくつかのエラーが発生する可能性があります。 Pasmoは、いくつかのヒューリスティックを使用して、式を正しく解釈できるようにしますが、完全にはほど遠い状態です。
括弧のみのモード[訳注:—bracketオプション]を使用すると、括弧は式をグループ化するという独自の意味を持ち、間接指定には括弧が必要であるため、あいまいさが解消されます。
短絡評価:&&および||演算子と条件式は短絡されています。これは、演算子の1つを評価する必要がない場合、エラーを生成せずに未定義のシンボルまたは0による除算を含めることができることを意味します(ただし、正しい構文が必要です)。条件式では、これは成立しない分岐に適用されます。&&演算子では、最初のオペランドがfalseの場合は2番目のオペランドに、||では最初のオペランドが真の場合、2番目のオペランドに、というように。