Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly x86汇编(AT&;T):是否有用于确定两个值的最小值/最大值的内置函数?_Assembly_X86_Gnu Assembler_Att - Fatal编程技术网

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.1
pmaxsd
。@MichaelPetch是的,我找到了答案:d