This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
您好!
我想问、当我使用这些内在函数并编译程序时、指令是否会有所不同。 我在我的程序中注意到,无论有一个小型数据模型还是一个受限数据模型都无关紧要;指令如下:没有 Movex 指令如说明图片中所示,只有一个 MOVEA 和两个 MOV。 w 表示_data20_read_long、与使用 Movex 的之前说明略有不同。 当使用普通指针时、变化很明显。 在受限模型中、Movex。 我假设它允许使用一个20位地址。 当我切换到小型模型 MOV 时。 我假定使用 W 指令、它只导致一个16位地址。 我想知道当我使用_data20_read_long 或 write 内在函数访问20位地址时、即使模型更改为 small、也是否会发生变化、因为当使用普通指针时、会发生变化、以及为什么没有使用 Movex 指令。
现代汇编器有时会将指令替换为具有较短编码的等效指令。 (例如、对于 mov 0 (Rx)、为 MOV @Rx)有时被称为弛豫。 链接器也可能会犯这种情况。
至于没有 movx,使用较短的 mov 指令,因为它可以完成这项工作。 对于寻址模式的描述非常清晰、因为即使在不使用扩展指令的情况下、用于寄存器间接模式和索引模式的完整寄存器宽度也是如此。
好的。 链接器如何影响使用的最终指令?
在 ld 的手册页中:
"在某些平台上、--relax 选项执行全局优化、当链接器解析程序中的寻址(例如放松地址模式和在输出目标文件中合成新指令)时、可以实现全局优化。"