简体   繁体   English

如何在as汇编器中禁用优化?

[英]How to disable optimizations in the as assembler?

I would like to find a way to assemble assembly code into the opcodes I want, not what the assemblerwants! 我想找到一种方法将汇编代码汇编成我想要的操作码,而不是汇编器! (Something like gcc -O0 but for assembly). (类似于gcc -O0,但用于汇编)。 My reasons involve teaching etc, etc. 我的原因包括教学等。

For example AS likes to change MOV r1, r2 into ADD r1, r2, #0. 例如,AS喜欢将MOV r1,r2更改为ADD r1,r2,#0。

This is all very well when I'm looking for faster code but not so great for teaching when I need the correct opcodes. 当我正在寻找更快的代码时,这一切都很好,但是当我需要正确的操作码时,对于教学来说并不是那么好。 I'm using AS and LD in a linux environment (ARM processor). 我在Linux环境(ARM处理器)中使用AS和LD。 Any ideas? 有任何想法吗?

There were some syntax changes from earlier ARM assembly language to preferred syntax. 从早期的ARM汇编语言到首选语法都有一些语法更改。 For example: STMFD sp!, reglist became PUSH reglist. 例如:STMFD sp!,reglist成为PUSH reglist。

Here's a reference I found that mentions this: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204j/Cjagjjbc.html 这是我发现提及此内容的参考: http : //infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204j/Cjagjjbc.html

It also states that, in reference to Thumb instructions: 它还指出,参考Thumb指令:

"If Rd and Rn are both Lo registers, MOV Rd, Rn is disassembled as ADDS Rd, Rn, #0." “如果Rd和Rn都是Lo寄存器,则MOV Rd,Rn将被反汇编为ADDS Rd,Rn,#0。”

which may be what you are seeing. 这可能是您所看到的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM