Click here to Skip to main content
15,879,474 members
Articles / Programming Languages / ASM

Integrating a compiler/assembler in VS ; Using NASM with Visual Studio 2010

Rate me:
Please Sign up or sign in to vote.
5.00/5 (11 votes)
9 Jul 2012CPOL10 min read 93.8K   2.9K   29  
A simple technique to integrate a custom build tool in VS 2010.
<?xml version="1.0" encoding="utf-8"?>
<ProjectSchemaDefinitions xmlns="http://schemas.microsoft.com/build/2009/properties" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib">
  <Rule
    Name="NASM"
    PageTemplate="tool"
    DisplayName="Netwide Assembler"
    Order="200">
    <Rule.DataSource>
      <DataSource
        Persistence="ProjectFile"
        ItemType="NASM" />
    </Rule.DataSource>
    <Rule.Categories>
      <Category
        Name="General">
        <Category.DisplayName>
          <sys:String>General</sys:String>
        </Category.DisplayName>
      </Category>
	  <Category
        Name="Preprocessor">
        <Category.DisplayName>
          <sys:String>Preprocessing Options</sys:String>
        </Category.DisplayName>
      </Category>
	  <Category
        Name="Assembler Options">
        <Category.DisplayName>
          <sys:String>Assembler Options</sys:String>
        </Category.DisplayName>
      </Category>
	  <Category
        Name="Advanced">
        <Category.DisplayName>
          <sys:String>Advanced </sys:String>
        </Category.DisplayName>
      </Category>	  
      <Category
        Name="Command Line"
        Subtype="CommandLine">
        <Category.DisplayName>
          <sys:String>Command Line</sys:String>
        </Category.DisplayName>
      </Category>
    </Rule.Categories>
    <StringProperty
      Name="Inputs"
      Category="Command Line"
      IsRequired="true">
      <StringProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          ItemType="NASM"
          SourceType="Item" />
      </StringProperty.DataSource>
    </StringProperty>
    
  <StringProperty
	  Name="OutputFormat"	  
      Category="Assembler Options"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="Output File Name"
      Description="Specify Output Filename.-o [value]"
	  Switch="-o [value]"
	/>  

	<EnumProperty
	  Name="Outputswitch"
      Category="Assembler Options"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="Output Switch"
      Description="Select the type of output format required. Linking Should be disabled for ELF and Binary ,else error will popup">
      <EnumValue
        Name="0"
        DisplayName="Object File"
        Switch="-fwin" />
      <EnumValue
        Name="1"
        DisplayName="LINUX ELF FORMAT"
        Switch="-f elf" /> 
      <EnumValue
        Name="2"
        DisplayName="FLAT BINARY"
        Switch="-f bin" /> 
			
    </EnumProperty>	
	
	<StringListProperty
	Name="AssembledCodeListingFile"
	Category="Assembler Options"
	DisplayName="Assembled Code Listing File"	
	Description="Generates an assembled code listing file.     (-l [file])"
	HelpUrl="http://www.nasm.us/doc/"
	Switch="-l &quot;[value]&quot;"
	/>
	
	<BoolProperty
	Name="GenerateDebugInformation"
	Category="Assembler Options"
	DisplayName="Generate Debug Information"
	Description="Generates Debug Information.     (-g)"
	HelpUrl="http://www.nasm.us/doc/"
	Switch="-g"	
	/>
	  
  <StringListProperty
      Name="ErrorReporting"
      Category="Advanced"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="Redirect Error Messages to File"
      Description="Drops the error Message on specified device"
      Switch="-Z &quot;[value]&quot;"        
    />
	
	<StringListProperty
	Name="IncludePaths"
	Category="General"
	DisplayName="Include Paths"
	Description="Sets path for include file.     (-I[path])"
	HelpUrl="http://www.nasm.us/doc/"
	Switch="-I[value]"
	
	/>
	
	<StringListProperty
	Name="PreprocessorDefinitions"
    Category="Preprocessor"
    HelpUrl="http://www.nasm.us/doc/"
    DisplayName="Preprocessor Definitions"
    Description="Defines a text macro with the given name.     (-D[symbol])"
	Switch="-D[value]"

	/>
	
  <StringListProperty
	Name="UndefinePreprocessorDefinitions"
	Category="Preprocessor"
	HelpUrl="http://www.nasm.us/doc/"
	DisplayName="Undefine Preprocessor Definitions"
	Description="Undefines a text macro with the given name.     (-U[symbol])"	
	Switch="-U[value]"
	/>
	
	<EnumProperty
      Name="ErrorReportingFormat"
      Category="Advanced"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="Error Reporting Format"
      Description="Select the error reporting format ie. GNU or VC">
      <EnumValue
        Name="0"
        DisplayName="-Xgnu	GNU format: Default format"
        Switch="-Xgnu" />
      <EnumValue
        Name="1"
        DisplayName="-Xvc	Style used by Microsoft Visual C++"
        Switch="-Xvc" />      
    </EnumProperty>
	
	<BoolProperty
	Name="TreatWarningsAsErrors"
	Category="Assembler Options"
	DisplayName="Treat Warnings As Errors"
	Description="Returns an error code if warnings are generated.     (-Werror)"
	HelpUrl="http://www.nasm.us/doc/"
	Switch="-Werror"
	/>

	<BoolProperty
      Name="floatunderflow"
      Category="Advanced"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="float-underflow"
      Description="floating point underflow (default off)"
      Switch="-w+float-underflow" />

  <BoolProperty
      Name="macrodefaults"
      Category="Advanced"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="Disable macro-defaults"
      Description="macros with more default than optional parameters (default on)"
      Switch="-w-macro-defaults" />

  <BoolProperty
      Name="user"
      Category="Advanced"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="Disable user"
      Description="%warning directives (default on)"
      Switch="-w-user" />

  <BoolProperty
      Name="floatoverflow"
      Category="Advanced"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="Disable float-overflow"
      Description="floating point overflow (default on)"
      Switch="-w-float-overflow" />

  <BoolProperty
      Name="floatdenorm"
      Category="Advanced"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="float-denorm"
      Description="floating point denormal (default off)"
      Switch="-w+float-denorm" />

  <BoolProperty
      Name="numberoverflow"
      Category="Advanced"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="Disable number-overflow"
      Description="numeric constant does not fit (default on)"
      Switch="-w-number-overflow" />

  <BoolProperty
      Name="macroselfref"
      Category="Advanced"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="macro-selfref"
      Description="cyclic macro references (default off)"
      Switch="-w+macro-selfref" />

  <BoolProperty
      Name="floattoolong"
      Category="Advanced"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="Disable float-toolong"
      Description=" too many digits in floating-point number (default on)"
      Switch="-w-float-toolong" />

  <BoolProperty
      Name="orphanlabels"
      Category="Advanced"
      HelpUrl="http://www.nasm.us/doc/"
      DisplayName="Disable orphan-labels"
      Description="labels alone on lines without trailing `:' (default on)"
      Switch="-w-orphan-labels" />

  <StringProperty
      Name="CommandLineTemplate"
      DisplayName="Command Line"
      Visible="False"
      IncludeInCommandLine="False" />

  <DynamicEnumProperty
        Name="NASMBeforeTargets"
        Category="General"
        EnumProvider="Targets"
        IncludeInCommandLine="False">
      <DynamicEnumProperty.DisplayName>
        <sys:String>Execute Before</sys:String>
      </DynamicEnumProperty.DisplayName>
      <DynamicEnumProperty.Description>
        <sys:String>Specifies the targets for the build customization to run before.</sys:String>
      </DynamicEnumProperty.Description>
      <DynamicEnumProperty.ProviderSettings>
        <NameValuePair
          Name="Exclude"
          Value="^NASMBeforeTargets|^Compute" />
      </DynamicEnumProperty.ProviderSettings>
      <DynamicEnumProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          ItemType=""
          HasConfigurationCondition="true" />
      </DynamicEnumProperty.DataSource>
    </DynamicEnumProperty>
  <DynamicEnumProperty
      Name="NASMAfterTargets"
      Category="General"
      EnumProvider="Targets"
      IncludeInCommandLine="False">
      <DynamicEnumProperty.DisplayName>
        <sys:String>Execute After</sys:String>
      </DynamicEnumProperty.DisplayName>
      <DynamicEnumProperty.Description>
        <sys:String>Specifies the targets for the build customization to run after.</sys:String>
      </DynamicEnumProperty.Description>
      <DynamicEnumProperty.ProviderSettings>
        <NameValuePair
          Name="Exclude"
          Value="^NASMAfterTargets|^Compute" />
      </DynamicEnumProperty.ProviderSettings>
      <DynamicEnumProperty.DataSource>
        <DataSource
          Persistence="ProjectFile"
          ItemType=""
          HasConfigurationCondition="true" />
      </DynamicEnumProperty.DataSource>
    </DynamicEnumProperty>
  <StringProperty
      Name="ExecutionDescription"
      DisplayName="Execution Description"
      IncludeInCommandLine="False"
      Visible="False" />

  <StringListProperty
      Name="AdditionalDependencies"
      DisplayName="Additional Dependencies"
      IncludeInCommandLine="False"
      Visible="False" />
  
  <StringProperty
      Subtype="AdditionalOptions"
      Name="AdditionalOptions"
      Category="Command Line">
      <StringProperty.DisplayName>
        <sys:String>Additional Options</sys:String>
      </StringProperty.DisplayName>
      <StringProperty.Description>
        <sys:String>Additional Options</sys:String>
      </StringProperty.Description>
    </StringProperty>
  
  </Rule>
  <ItemType
    Name="NASM"
    DisplayName="Netwide Assembler" />
  <FileExtension
    Name="*.asm"
    ContentType="NASM" />
  <ContentType
    Name="NASM"
    DisplayName="Netwide Assembler"
    ItemType="NASM" />
</ProjectSchemaDefinitions>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Systems Engineer
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions