FAQ - Frequently Asked Questions

About this site

How often do you put any source, doc or binary on line?

About this project

I'm a developer willing to join you in this project. How can I help?
When will PopAsm be ready?

About other assemblers

You criticize NASM a lot. Why?
PopAsm implements many NASM features. Why didn't you join them instead?

About PopAsm implementation

Why dont you use tools like flex/bison to make your job easier?
Why did you decide to write your code in C++?


About this site

Q: How often do you update this site?

A: Usually once each two weeks.

About this project

Q: I'm a developer willing to join you in this project. How can I help?

A: First of all, thanks for your interest. I wish to work alone until the first alpha version is released. I will then be ready to accept contributions. I will add further information about that then.

Also, you may always help me by giving suggestions, ideas, testing the assembler, helping spreading it, etc. Without such help the project might not go as far as I would like.

Q: When will PopAsm be ready?

A: It is difficult to say. I work on PopAsm when I have enough free time. That does not happen very often, due to my PhD course at PUC-Rio. Considering the current code revision, instrumentation testing and documentation efforts, I'd say that PopAsm is unlikely to be released in 2005.

About other assemblers

Q: You criticize NASM a lot. Why?

A: Every project has its advantages and drawbacks, and NASM is no exception. I criticize NASM in the points I believe it has failed, and I would like many people giving me feedback of my project as well. However, I praise anyone developing free software, as they contribute to lead us to a better world, and among those are NASM developers.

Q: PopAsm implements many NASM features. Why didn't you join them instead?

A: There are two main resons. The first is that NASM was written in C, a language I dislike (despite being a developer in that language). Second, NASM philosophy is very different from the mine. I believe the assembler must suport a clean syntax, so the developers' lives will be easier. If you take a look at NASM weird syntax for structs, the absence of type checking and several other issues you will understand what I mean.

Source Code Related Questions

Q: Why dont you use tools like flex/bison to make your job easier?

A: Such tools are intended to solve the general problem of token reading and parsing, and they support rather complex grammars. Because the requirements of my project are too simple in that area, I guess I better not use such tools. Firstly, because it would force one to install those tools to compile my sources; secondly, because I imagine that I can perform simplifications and optimizations that will make my code faster; thirdly, because I like doing the thing myself.

Q: Why did you decide to write your code in C++?

A: The first version of PopAsm was being developed in Assembly for MS-DOS. At that time the project was named AMA (Assembly-Made Assembler). I had written thousands of lines of Assembly when I realized that an assembler for a dead operating system would be meaningless. Writing the code in C++ allows me to compile it wherever I want a version for it, no matter if it is DOS, Linux, etc.

I also wanted to have an opportunity to write something of greater size in C++, so I could practice some advanced concepts of that language, such as RTTI, multiple inheritance, STL, and so on.