This semester, I am taking a class on assembly programming using Kip Irvine’sbook “Assembly Language for Intel-Based Computers.” Unfortunately, the bookshould really be called “Assembly Language for Intel-Based WindowsComputers,” as it is written for Microsoft Macro Assembler (MASM). It mentionsthat the programs in the book could be converted to TASM assembly fairlyeasily, but they will not run out of the box.
I could run MASM on a Windows virtual machine, but that would be fairly heavyto have running whenever I want to work on assembly. Instead, I wanted to seeif I could run MASM with little overhead using Wine.It turns out that this is fairly easy to do!
Assembler mac free download. MIRA MIRA - Sequence assembler and sequence mapping for whole genome shotgun and EST / RNASeq sequencing. Just tap on the install button to install the app. Once the installation completes, go to Bluestacks 2 home page Menu App Drawer Bard Video Assembler. Double tap on the app icon to get the video editor on PC. Also Read Download Nearby for PC (Windows 10/8/7/xp) or Mac OS X. The Assembler supports all existing x86 and x64 extensions, and has strong support for macos. Most university projects will use a assembly language because the main goal is to demonstrate feasibility and any unnecessary complications in demonstrating this are undesirable. The gnu assembler is already installed on your mac (assuming that you installed the dev tools package). If you want to avoid XCode, you can invoke it from the command line with as, or with the preprocessor by using gcc yourfile.s $(OPTIONS).
Good instructions for installing Wine on Mac are availablehere. Instructions forUbuntu are available here. The installprocess for other distros should be fairly straightforward as well.
The TL;DR for intsalling on Mac is to install XQuartz and wine via homebrew:
brew install Caskroom/cask/xquartz wine
Commands executed using wine
are executed in “Wine prefixes,” which arevirtual Windows environments of sorts. By default, the ~/.wine
prefix isused; configuration for this environment is stored in ~/.wine/*.reg
files,and the C: file tree is stored in ~/.wine/drive_c
.
We could run MASM in the default wine
prefix and it would work perfectlyfine. However, we will be setting Windows environment variables that couldpotentially interfere with other programs running on Wine. If you plan on usingWine for anything else, it is best to install MASM in its own Wine prefix. Youcan create a new prefix as follows:
Wine will initialize a new Windows file system tree at ~/wine-masm/drive_c
and open a window for you to configure the system. The defaults are fine, soyou can close the Wine Configuration window that appears.
I downloaded MASM from http://www.masm32.com/. You can download and run theinstaller as follows:
The first steps of the installer are fairly self-explanatory:
After clicking OK, the installer starts assembling/linking some libraries andoutputs its progress in the terminal:
At one point, the installer asks if I want to overwrite msvcrt.exp
. I’vetried it with both yes
and no
, and I don’t think it matters.
A dialog appears asking if you want to create a shortcut to the MASM editor:
We aren’t using the Windows desktop, and we probably won’t even be using theMASM editor (I much prefer Sublime or vim), so click No.
At the end, the MASM editor appears. You can close this, or check it out ifyou’re interested. You can always open it in the future by runningWINEPREFIX=~/wine-masm wine 'C:masm32qeditor.exe'
.
At this point, the installation is complete, and you should be able to run theMASM assembler:
If you are using Irvine’s textbook, you will want to download his example andinclude files. The files are available on his website athttp://www.kipirvine.com/asm/examples/index.htm. I am using the 5th editiontextbook, so I downloaded the files fromhttp://www.kipirvine.com/asm/examples/IrvineExamplesVS2008.zip:
Irvine provides some scripts that (quite irritatingly/inflexibly) expect thisdownload to be extracted to C:Irvine:
If you are using a newer edition of the book, the example files are packaged ina .msi installer. You can download/extract as follows:
Accept all the default options.
We need to set the Windows PATH, INCLUDE, and LIB environment variables so thatwhen we are assmebling/linking, we can find the MASM binaries/includes/sharedlibraries more easily. To do this, open regedit
:
Browse to HKEY_CURRENT_USER/Environment
. Add a new string value (right clickthe right-hand pane, New > String Value) named PATH
. Double click this newvalue and enter the following:
Also create an INCLUDE
key with value C:masm32include;C:Irvine
and aLIB
key with value C:masm32lib;C:Irvine
. (If you are just trying to runmasm on *nix and aren’t using Irvine’s book, then you can omit the C:Irvine
parts of those keys.)
At this point, you can call masm without needing to specify full binary orinclude paths:
At this point, we could be done. However, specifying all the masm flags canbecome a pain, and we could easily write a bash function to take care of this.In my ~/.bash_profile
, I have the following:
Feel free to tweak this function as necessary.
Once you “reload” your bash profile (. ~/.bash_profile
), you canassemble/link/run .asm files in one command:
Wine is really handy when it works – and it works quite well in this case,without any DLL overrides or fancy configuration or what not. We are able to runMASM and assembled binaries with little overhead, and we can use our host shellsand editors without needing any fancy tricks!
One of the best parts of ABA TECHSHOW every year is the opportunity to talk with the vendor to find out what goodies they have in the works. This year, Lee & Neil from DocMoto, showed me their newest feature – document assembly on a Mac! They were also gracious enough to provide the following Guest Post about this new feature:
Simply put, document assembly is the automatic assembling of a document based on rules. Document assembly is popular with lawyers because there is a high degree of repetition in the work they do. The benefits it brings are significant, it can save lots of time, it can reduce error, and it can guarantee that everybody follows consistent rules.
Windows users have had access to a number of powerful (if slightly complex) document assembly tools for years. But for Mac users the choice has been limited. In the latest release of DocMoto, version 3.6 we introduce our own set of document assembly tools that we think will help to bridge the gap between Windows and Mac platforms.
When we set out to implement our document assembly toolkit we set down our key objectives, here they are:
Lets deal with each in turn:
Simple placeholder substitution is the act of replacing a placeholder in a document with a value. A typical example might be {clientName} which is replaced by the client’s name.
Simple placeholder substitution is very similar to MS Word’s merge fields, indeed some practice management systems even use Word merge fields to achieve placeholder substitution.
Simple placeholders are only useful to an extent. Before long it becomes apparent that it would be much better if entire blocks or “snippets” of text could be substituted.
DocMoto’s document assembly toolkit supports this. Each snippet is defined as a template in its own right. So snippets can themselves include references to other snippets. Snippets are referenced in a similar manner to placeholders, for example {@standard paragraphs/terms and conditions.docx} refers to a snippet containing the firm’s standard terms and conditions.
The ability to nest one placeholder into another allows for very powerful substitution. The idea of nested placeholders is to have a new valid placeholder created by replacing the nested one. The DocMoto placeholder {@standard paragraphs/terms and conditions {state}.docx} is an example of a nested placeholder, with {state} being the nested part.
We can use this idea to achieve logic such as inserting the correct terms and conditions snippet for the client’s state.
Decision based substitution is much like the familiar “IF THEN ELSE” construct.
For example the following DocMoto instructions change the pronoun within a document based on the sex of the client.
if {sex}=‘Male’ then ‘he’
if {sex)=‘Female’ then ‘she’
else ‘they’
In the above example text (he, she, they) is being inserted, but we could just as easily have created the instruction to insert entire snippets.
DocMoto uses a native Mac client. That means we can directly access MS Word on your desktop and use that to do the work for us.
The benefit of using Word is that you can create very sophisticated document templates, which will be assembled correctly regardless of complexity. This is in contrast to some systems that don’t use Word to process a document, which can, on occasion result in some unexpected output.
To see document assembly using DocMoto we have published a series of videos. You can find them on the links below: