llvm-project/llvm/lib/MC
Eric Astor ee2c0f76d7 [ms] [llvm-ml] Add a draft MASM parser
Summary:
Many directives are unavailable, and support for others may be limited.

This first draft has preliminary support for:
    - conditional directives (including errors),
    - data allocation (unsigned types up to 8 bytes, and ALIGN),
    - equates/variables (numeric and text),
    - and procedure directives (without parameters),
as well as COMMENT, ECHO, INCLUDE, INCLUDELIB, PUBLIC, and EXTERN. Text variables (aka text macros) are expanded in-place wherever the identifier occurs.

We deliberately ignore all ml.exe processor directives.

Prominent features not yet supported:
    - structs
    - macros (both procedures and functions)
    - procedures (with specified parameters)
    - substitution & expansion operators

Conditional directives are complicated by the fact that "ifdef rax" is a valid way to check if a file is being assembled for a 64-bit x86 processor; we add support for "ifdef <register>" in general, which requires adding a tryParseRegister method to all MCTargetAsmParsers. (Some targets require backtracking in the non-register case.)

Reviewers: rnk, thakis

Reviewed By: thakis

Subscribers: kerbowa, merge_guards_bot, wuzish, arsenm, dschuff, jyknight, dylanmckay, sdardis, nemanjai, jvesely, mgorny, sbc100, jgravelle-google, hiraditya, aheejin, kbarton, fedor.sergeev, asb, rbar, johnrusso, simoncook, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, atanasyan, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, jsji, Jim, s.egerton, pzheng, sameer.abuasal, apazos, luismarques, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D72680
2020-02-16 12:30:46 -05:00
..
MCDisassembler [Disassembler] Delete the VStream parameter of MCDisassembler::getInstruction() 2020-01-11 13:34:52 -08:00
MCParser [ms] [llvm-ml] Add a draft MASM parser 2020-02-16 12:30:46 -05:00
CMakeLists.txt [MC] Delete MCCodePadder 2019-12-09 19:21:31 -08:00
ConstantPools.cpp [MCStreamer] De-capitalize EmitValue EmitIntValue{,InHex} 2020-02-14 23:08:40 -08:00
ELFObjectWriter.cpp [MC][ELF] Rename MC related "Associated" to "LinkedToSym" 2020-02-06 11:31:04 -08:00
LLVMBuild.txt
MCAsmBackend.cpp [MC] Delete MCCodePadder 2019-12-09 19:21:31 -08:00
MCAsmInfo.cpp [MC] De-capitalize another set of MCStreamer::Emit* functions 2020-02-14 19:26:52 -08:00
MCAsmInfoCOFF.cpp
MCAsmInfoDarwin.cpp
MCAsmInfoELF.cpp [MC] Delete unused MCAsmInfoELF::UsesNonexecutableStackSection after EM_WEBASSEMBLY was removed in D48744 2019-12-15 15:43:30 -08:00
MCAsmInfoWasm.cpp
MCAsmInfoXCOFF.cpp [XCOFF][AIX] Differentiate usage of label symbol and csect symbol 2019-11-08 09:30:10 -05:00
MCAsmMacro.cpp MCAsmMacro: add `#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)` to some dump() declarations 2019-08-20 04:14:43 +00:00
MCAsmStreamer.cpp [MC] De-capitalize MCStreamer::Emit{Bundle,Addrsig}* etc 2020-02-15 09:11:48 -08:00
MCAssembler.cpp [RISCV] Fix evaluating %pcrel_lo against global and weak symbols 2020-01-23 02:05:48 +00:00
MCCodeEmitter.cpp
MCCodeView.cpp [MCStreamer] De-capitalize EmitValue EmitIntValue{,InHex} 2020-02-14 23:08:40 -08:00
MCContext.cpp [MC] Add MCSection::NonUniqueID and delete one MCContext::getELFSection overload 2020-02-14 20:25:52 -08:00
MCDwarf.cpp [MCStreamer] De-capitalize EmitValue EmitIntValue{,InHex} 2020-02-14 23:08:40 -08:00
MCELFObjectTargetWriter.cpp MC/ELF: Allow targets to set ABI version 2019-02-14 22:42:09 +00:00
MCELFStreamer.cpp [MC] De-capitalize MCStreamer::Emit{Bundle,Addrsig}* etc 2020-02-15 09:11:48 -08:00
MCExpr.cpp [AsmPrinter] Print FP constant in hexadecimal form instead 2020-02-07 16:00:55 +00:00
MCFragment.cpp [MC] Reorder MCFragment members to decrease padding 2020-01-05 19:09:40 -08:00
MCInst.cpp
MCInstPrinter.cpp [MC] Rewrite tablegen for printInstrAlias to comiple faster, NFC 2019-12-06 15:00:18 -08:00
MCInstrAnalysis.cpp Revert "Forward declare Optional<T> in STLExtras.h" 2019-11-13 16:36:21 -08:00
MCInstrDesc.cpp
MCLabel.cpp
MCLinkerOptimizationHint.cpp
MCMachOStreamer.cpp [MC] De-capitalize MCStreamer::Emit{Bundle,Addrsig}* etc 2020-02-15 09:11:48 -08:00
MCMachObjectTargetWriter.cpp
MCNullStreamer.cpp [MC] De-capitalize MCStreamer::Emit{Bundle,Addrsig}* etc 2020-02-15 09:11:48 -08:00
MCObjectFileInfo.cpp [AsmPrinter] Omit unique ID for .stack_sizes 2020-02-14 21:25:06 -08:00
MCObjectStreamer.cpp [MC] De-capitalize MCStreamer::Emit{Bundle,Addrsig}* etc 2020-02-15 09:11:48 -08:00
MCObjectWriter.cpp
MCRegisterInfo.cpp MCRegisterInfo: Merge getLLVMRegNum and getLLVMRegNumFromEH 2019-09-24 09:31:02 +00:00
MCSchedule.cpp
MCSection.cpp [MC][ARM] Delete MCSection::HasData and move SHF_ARM_PURECODE logic to ARMELFObjectWriter::addTargetSectionFlags 2020-01-05 14:20:34 -08:00
MCSectionCOFF.cpp
MCSectionELF.cpp [MC][ELF] Rename MC related "Associated" to "LinkedToSym" 2020-02-06 11:31:04 -08:00
MCSectionMachO.cpp
MCSectionWasm.cpp [WebAssembly] Update MC for bulk memory 2019-02-19 22:56:19 +00:00
MCSectionXCOFF.cpp [AIX] Emit TOC entries for ASM printing 2019-11-27 17:20:55 -05:00
MCStreamer.cpp [MC] De-capitalize MCStreamer::Emit{Bundle,Addrsig}* etc 2020-02-15 09:11:48 -08:00
MCSubtargetInfo.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
MCSymbol.cpp
MCSymbolELF.cpp [MC] Delete STT_SECTION special cases from MCSymbolELF::setType and setBinding 2019-12-15 20:39:25 -08:00
MCTargetOptions.cpp [ms] [llvm-ml] Add a draft MASM parser 2020-02-16 12:30:46 -05:00
MCValue.cpp [MC] Ignore VK_WEAKREF in MCValue::getAccessVariant 2019-12-15 16:05:46 -08:00
MCWasmObjectTargetWriter.cpp [WebAssembly] Make __attribute__((used)) not imply export. 2019-08-29 22:40:00 +00:00
MCWasmStreamer.cpp [MC] De-capitalize MCStreamer::Emit{Bundle,Addrsig}* etc 2020-02-15 09:11:48 -08:00
MCWin64EH.cpp [MCStreamer] De-capitalize EmitValue EmitIntValue{,InHex} 2020-02-14 23:08:40 -08:00
MCWinCOFFStreamer.cpp [MC] De-capitalize MCStreamer::Emit{Bundle,Addrsig}* etc 2020-02-15 09:11:48 -08:00
MCWinEH.cpp
MCXCOFFObjectTargetWriter.cpp Boilerplate for producing XCOFF object files from the PowerPC backend. 2019-07-09 19:21:01 +00:00
MCXCOFFStreamer.cpp [MC] De-capitalize MCStreamer::Emit{Bundle,Addrsig}* etc 2020-02-15 09:11:48 -08:00
MachObjectWriter.cpp [MachO] Pad section data to pointer size bytes 2020-02-11 14:52:21 -08:00
StringTableBuilder.cpp Adds support for writing the .bss section for XCOFF object files. 2019-08-20 22:03:18 +00:00
SubtargetFeature.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
WasmObjectWriter.cpp [WebAssembly] Add new `export_name` clang attribute for controlling wasm export names 2019-12-11 11:54:57 -08:00
WinCOFFObjectWriter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
XCOFFObjectWriter.cpp [XCOFF][AIX] Support basic relocation type on AIX 2020-01-30 15:59:09 +00:00