nasuka Ver 2.0̃hLg                               2009.1.1 by hideyosi

̃pbP[WɎ^Ănask.exe͖{nasukaƂ̂̃\tgłB
썇GNASKƂAZuhideyosiĥłB
i >nask.exe ƎsUsage\܂̂ŋʂł͂łj

AZuNASK͐썇G̍î̖łAprt@CiR}hj
ύX͖肪߁A݊d̊ϓ_OInask.exeƂ̂F߂
܂B

ȂAȉ͌ƂȂNASKɂĂ̐͂甲̂łB


-------------------------------------------------------------------------------

PDNASKɂ

  NASKNASM}N@\ȂȂɓOꂵR[h̎œK@\
荞񂾃AZułBAZû\Ƃ܂Bt
gGhAZuƂĂ̓}NȂ̂ŕsւłAobNGhAZu
ƂĂ͂ŕKv\ł傤BڂgɂẮANASM̃hLg
QlɂĂBTv\[X̂ŁANASMƈႤ͂ŕ
Ǝv܂B

  T|[gĂtH[}bgBINWCOFF(win32ŎgCOFF)݂̂łB

  g͒PŁA

prompt>nask sorcefile outputfile [listfile]

łB


QDNASK ver.0.0ł̐(Pdl?)

  PłB
    O16, O32, A16, A32,
    DQ, DT, RESQ, REST, INCBIN,
    [ABSOLUTE]
g܂BvvZbT߂g܂BȊO486DX߂͑SĎg
B

  imm̎̂قƂǂŃx܂ގg܂BʖڂȂ̂́ASHLñVtgʂ̕
ƁAINT߂̔ԍ̕RETnimm16݂̂̕łBłAԂ
ȂĒĂ܂B݂܂B̑ʖڂȕɊւĂAx܂܂Ȃ
Ȃ琳߂܂B

  DDfloat̒萔uƂ͂܂ł܂B

  TIMESɑ߂́AȂ炸1oCgɂĂB蔲łB݂܂B

  NASMɕWIɔĂALIGN}N͎g܂񂪁A@\tALIGNAL
IGNB߂T|[gĂ܂B̓p[^1󂯕t܂B܂A
NOPŃpfBO邩A0x00ŃpfBO邩IׂȂ킯łB

  ꂪCɓȂΈȉ̕\LȂǂőpĂB

    TIMES ( 4 - ($ %  4)) %  4 NOP   ;  4oCgAC
    TIMES (16 - ($ % 16)) % 16 NOP   ; 16oCgAC


RDMׂ(H)dl

  oCiTCY27.0KBłB

  NASK̃x́AǂŒ`ĂȂQƂł܂BNASMƈقȂ
P2pXł͂ȂłBOAEXTERNx́Aŏ̎QƂ
ɐ錾Ȃ΂܂B

  FORMAT͏o̓t@C̃tH[}bgwłBNASKł́AR}hCł͂Ȃ
\[XŎw肵܂B"BIN""WCOFF"܂BftHg"BIN"łB\[X̍
̕ň񂾂Lq܂B

  NASKł́ABITS[]łȂ΂Ȃ܂B

  ܂AINSTRSETȂǂ̒ǉ߂̂ŁANASMƂ̌݊\[Xۂɖɂ
邩܂B̂߂ɁAu;%NASKvƂLq邱Ƃł܂BN
ASMł͓R߂ɂȂ܂ANASKł̓Xy[XɂȂ܂BNASKp\[XƂ
ƂłA̋Lq͂܂B

  INSTRSETCPUw肵܂B̂ƂȉCPUwł܂B

  "8086", "80186", "80286", "80286p", "i386", "i386p", "i486", "i486p"

  8086[hł́AFSEBXȂǂ\ɂȂ܂BftHg8086łB
pt̂̓veNg[hp̖ߌQg悤ɂӖłBȂ8086
IĂ邩ƂāA8086ɎsłȂR[ho͂\Ȃ킯
͂܂BPɗ\x`pɊJĂ邾łBłAJcc
ǂNEARɂĂ܂Ƃ肦܂Bsȏꍇ́ASHORT𖾎܂傤B

  OPTIMIZE͍œKON/OFFłB0NASM݂łB1NASK̐^𖡂킦܂(
)BftHg0łB

  OPTION/%A>>̈łB0NASM̂悤ɕɂȂ܂B1ƕL
ɂȂ܂BftHg0łBȂA[OPTION 1]ł́A//%%ɂȂ
BEVtgɂẮAOPTIONɊւ炸A&>VtgA|>LVt
głB

  NASKł..$Ƃxg܂B͎̍s̃AhXԂ܂BN
bNwait邽߂̉eNjbNƂāuJMP SHORT $+2vƂ̂
܂AuJMP ..$vƂ킯łB

  NASKBIN[hł́Ax̍ƂȂĂSẲZ\łB(LABEL1+L
ABEL2)/2ƂALABEL1*5ƂADȂ悤ɂĂB$$͍PIɒO
ORGlԂ܂(YORGȂꍇ͈ÖقORG 0ɂ0Ԃ܂
)BWCOFF[hł$$̋NASMƓł(ZNVJnAhX)B

  BINłWCOFFł[SECTION]g܂Bwł鑮align݂̂łBalign
w͍ŏɂ̃ZNV錾ƂłBBIN̏ꍇAZNV͐錾
ɃoCiAACwɂăACĂ܂BȂalign
Sw肵ȂꍇANASK͂̃ZNVɊ܂܂ALIGNAALIGNBToāA
炱̃ZNVɕt^ׂACIɌ肵܂B

  WCOFFŗpłZNV́A.textA.dataA.bsŝ݂łB̃ZNV
Ă͂܂BBINł͂Ƃ͖֌WɔCӂ̖O܂B


SDAhbVO

  (1)ZOgI[o[ChvtBbNX
    ZOgI[o[Ch́Aȉ3̏ꏊɂꂩɏ܂BDȂ
  ɏĂB
      E[]̒(NASM)
      E[]̑O(MASM)
      EIyR[h̑O("cs movsb"A"es mul [edi]"̂悤)
    ȂAOPTIMIZEONɂȂĂ΁Aȗ\DSSS̎w͂Ə
  ܂BŖl̂悤ɂłZOgvO}ACɂ
  Ȃŏ܂()BLEA߂ł́AǂȃZOgI[o[ChĂĂ
  ƃLZ܂B

  (2)AhX
    NASM̂悤ɁAȂ蕡GȋLq܂B"IDIV BYTE [EBX*3]"ȂĂ̂
  OKȂ̂͂łA"LEA EAX,[(EAX+ECX-5)*8/2-3*EAX]"Ƃ̂OKłBX
  P[ɊZF߂̂́ANASM𒴂Ă܂(A[EAX*3/2]Ƃ̂
  łȂ)B܂AVtgł܂([EAX<<1])BȂAWX^Ɋ|ZƂ
  |鐔x⃌WX^܂܂ȂłKv܂B

  (3)x[XƃCfbNX
    [EAX+ECX+8]݂ȋLqł́ANASK͂ǂx[Xɂ΂̂̍
  ʂŌ߂ėǂƔf܂B[EAX*1+ECX+8][EAX+ECX*1+8]̂悤ɂǂ
  Ɋ|ZĂAȍٗʂɂCfbNXɂ܂킵
  B|ŹA1*ECX̂悤Ȃ̂ł܂܂BɊ|ZĂ΁ANASK
  ̍ٗʂł܂BEEEƂ̂nask00ał̎dlłAnask00bȍ~ł́A
  OPTIMIZEON̂Ƃ͊|ZĂٗʂ𔭊܂Bj~ɂNOSPL
  ITw肵ĂBNOSPLITw肳ĂΊ|ZD悵܂Bw肳
  Ȃ΁Adisp8̏ȗvtBbNXȗ˂炢܂B
    [EBP+EDX]̂悤Ȃ̂ł́ASSDSw肳Ă΃vtBbNXȗł
  @߂Ăǂx[Xɂ邩Iт܂AłȂEDXx[Xɂ
  āAdisp8̏ȗ_܂B

  (4)AhX[h
    AhX32bitWX^gĂ32bitAhbVOA16bit
  WX^gĂ16bitAhbVOɂȂ܂BBITS̓er
  ĕKvɉăAhXTCYI[o[ChvtBbNXo͂܂B
    AhXdisp݂̂̏ꍇ́Adisp̒lɂ炸AAhXTCYI[
  o[ChȂƂOŃAZu܂B𕢂ꍇ́A[]
  ɁAWORDDWORDƏĉB


TDCZX

  Ƃ肠x̐썇CZX-01KpĂ܂B͂Ăł
AƑ҂Ă΂Ɖ₷o[W񋟂ł邩܂B
CZXʂAς͎̂̈RłBJꍇ͍邽
NASK`ƂOȊOgB


UDӎ

  썇2002.10.03`2003.02.28̊Ԃ̂Jʂ́AʔF@l 񏈗U
Ƌ (IPA) ́u\tgEFAnƖ[Xvł̈ϑƖɂ
łB̏؂ĎxƂɂĂ\グ܂B


VDe킢킯()

  \[XANSI-Cŏ肾łA֗ɕĒ߂Ɂu//vg
Ă܂B̕΁AقƂǂ32bitRpCŒʂł傤B

  \[X͓ǂ݂₷ȂɁA܂ʂ܂ł܂B͓r玞Ԃɒǂ
悤ɊJ悤ɂȂ߂ŁAlgƂĂ͕s̎cohłB
Ə΁Aǂ݂₷Ȃɂ1x͏Ȃ邩܂
B

  ԂłAMASM[UNASK݂Ȃ̂ƎvĂ܂
AɂȂ邱ƂEEEB

-------------------------------------------------------------------------------





