We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
実はなかなか面倒な命令である
0x2C ib SUB AL, imm8 ALからimm8を引きます 0x2D iw SUB AX, imm16 AXからimm16を引きます 0x2D id SUB EAX, imm32 EAXからimm32を引きます 0x80 /5 ib SUB r/m8, imm8 r/m8からimm8を引きます 0x81 /5 iw SUB r/m16, imm16 r/m16からimm16を引きます 0x81 /5 id SUB r/m32, imm32 r/m32からimm32を引きます 0x83 /5 ib SUB r/m16, imm8 r/m16から符号拡張したimm8を引きます 0x83 /5 ib SUB r/m32, imm8 r/m32から符号拡張したimm8を引きます 0x28 /r SUB r/m8, r8 r/m8からr8を引きます 0x29 /r SUB r/m16, r16 r/m16からr16を引きます 0x29 /r SUB r/m32, r32 r/m32からr32を引きます 0x2A /r SUB r8, r/m8 r8からr/m8を引きます 0x2B /r SUB r16, r/m16 r16からr/m16を引きます 0x2B /r SUB r32, r/m32 r32からr/m32を引きます
このような命令がOS自作では出てくる
SUB ECX,512/4 ; IPLの分だけ差し引く SUB ECX,1
↓
SUB ECX,128 ; IPLの分だけ差し引く SUB ECX,1
SUB ECX,128 ; 81 e9 80 00 00 00 => SUB r/m32, imm32... r/m32からimm32を引きます SUB ECX,1 ; 83 e9 01 => SUB r/m32, imm8 ... r/m32から符号拡張したimm8を引きます
SUB ECX,128
0x81 /5 id SUB r/m32, imm32 0x83 /5 ib SUB r/m32, imm8
符号ありint8型は -127~+127までの範囲しか使えず範囲を超えるとオーバーフローしてしまう
-127~+127
よって、SUB r/m32, imm32が選ばれる
SUB r/m32, imm32
他の命令もよくこんな感じで選ばれているっぽい