This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Scheduling x86 dispatch windows


On Fri, Jun 11, 2010 at 3:42 PM, Quentin Neill
<quentin.neill.gnu@gmail.com> wrote:
> On Thu, Jun 10, 2010 at 5:23 PM, H.J. Lu <hjl.tools@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?

BTW, GCC should know the instruction length. If not, it is a GCC bug.


-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]