私は、このアセンブリコード:それを組み立てるためにしようとしたときINT%ebxの何が悪いですか?
INT %ebx
GCCは私にエラーを与えている:
INT ERROR:mismatch operand type for 'int'.
これは命令INT
のオペランドがINT $0X80
のような一定でなければならないということを意味していますか?
私は、このアセンブリコード:それを組み立てるためにしようとしたときINT%ebxの何が悪いですか?
INT %ebx
GCCは私にエラーを与えている:
INT ERROR:mismatch operand type for 'int'.
これは命令INT
のオペランドがINT $0X80
のような一定でなければならないということを意味していますか?
あなたの仮定は正しいです、INTのオペランドは定数でなければなりません。 the NASM x86 referenceによると:
A.81 INT: Software Interrupt
INT imm8 ; CD ib [8086]
A.82 INT3, INT1, ICEBP, INT01: Breakpoints
INT1 ; F1 [P6]
ICEBP ; F1 [P6]
INT01 ; F1 [P6]
INT3 ; CC [8086]
A.83 INTO: Interrupt if Overflow
INTO ; CE [8086]
のでINT
は、実際にレジスタを取る割り込み変異体の8ビット即値と非を取ります。
はい。 - パラメータを登録取るどれもこれだけです
Opcode Instruction Description
CC INT 3 Interrupt 3—trap to debugger.
CD ib INT imm8 Interrupt vector number specified by immediate byte.
CE INTO Interrupt 4—if overflow flag is 1.
:あなたはIntel Software Developers Manual, Volume 2A Instruction Set Reference, A-Mを見てみる場合は、INT
ための3つのバリエーションがあります。