Assembly x86汇编(AT&;T):是否有用于确定两个值的最小值/最大值的内置函数?
我正在汇编中实现一个程序,需要确定两个寄存器和值的最小值或最大值。在汇编中是否有一个内置函数,如Assembly x86汇编(AT&;T):是否有用于确定两个值的最小值/最大值的内置函数?,assembly,x86,gnu-assembler,att,Assembly,X86,Gnu Assembler,Att,我正在汇编中实现一个程序,需要确定两个寄存器和值的最小值或最大值。在汇编中是否有一个内置函数,如imul或addl,允许我这样做,或者我必须使用cmpl和mov语句的组合从头开始实现这个功能?没有一条指令。使用奔腾Pro或更高版本,您可以使用条件移动并执行cmpl%eax,%ebx;cmovll%eax,%ebx等。如果您的数字在向量寄存器中,有一些max和min的向量指令,但这是否值得取决于您的应用程序。仅供参考,术语是“指令”而不是“内置函数”或“语句”。请查看std::min/max的优化
imul
或addl
,允许我这样做,或者我必须使用cmpl
和mov
语句的组合从头开始实现这个功能?没有一条指令。使用奔腾Pro或更高版本,您可以使用条件移动并执行cmpl%eax,%ebx;cmovll%eax,%ebx
等。如果您的数字在向量寄存器中,有一些max和min的向量指令,但这是否值得取决于您的应用程序。仅供参考,术语是“指令”而不是“内置函数”或“语句”。请查看std::min
/max
的优化编译器输出@Nate是正确的,您通常会对标量整数使用cmov,或对XMM寄存器中的整数使用SSE4.1pmaxsd
。@MichaelPetch是的,我找到了答案:d