On Sat, Jun 12, 2010 at 8:15 AM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Fri, Jun 11, 2010 at 3:42 PM, Quentin Neill > <quentin.neill....@gmail.com> wrote: >> On Thu, Jun 10, 2010 at 5:23 PM, H.J. Lu <hjl.to...@gmail.com> wrote: >>> [snip] >>> x86 assembler isn't an optimizing assembler. -mtune only does >>> instruction selection. What you are proposing sounds like an optimizing >>> assembler to me. Are we going to support scheduling, macro, ...? >>> -- >>> H.J. >> >> Just to clarify, we are not doing scheduling or macros. The >> assembler already supported alignment and padding using .align and >> friends, which can be from the compiler and from hand-written >> assembly. >> >> Now we are seeing more complex alignment rules that are not as simple >> as it used to be for the older hardware. It will be almost impossible >> for an assembly programmer to insert the right directives, not to >> mention any change might invalidate previous alignments. Assembly >> programmers will be out of luck (that is, unless the compiler becomes >> the assembler). > > If you can find a way to help assembly programmers via new directives, > it is great. GNU x86 assembler should just translate assembly code > into binary code. The output of "objdump -d" should be identical > to the input assembly. > > We shouldn't turn GNU x86 assembler into an optimizing assembler. > Next people may ask assembler to remove redundant instructions, ... > > Right now, when something goes wrong, people don't have to debug > assembler since it is very unlikely that the problem is in assembler. > When assembler starts to make changes to assembly input, we have > another place where a bug may be introduced. > >> >> The essence is we want to insert prefixes (as well as nops) according >> to certain rules known at encoding time. The mechanism implementing >> these rules can be abstracted (table driven?) and could be applicable >> to any hardware having similar features. > > Can you implement them with new directives/pseudo instructions? >
I think you should take a look at http://code.google.com/p/mao/ -- H.J.