当前位置: 首页 > news >正文

cmov用法一例

#include <stdio.h>/* sub_and_abs */
int sna(int, int);int main() {printf("%d %d\n", sna(1,3), sna(9,5));
/* 2 4 */
/* 64位下sizeof(int)=4 */ }
.text.globl sna.type  sna, @function
sna:push %rbxmov %edi, %eaxmov %esi, %ebxcmp %eax, %ebxcmovg %esi, %eaxcmovg %edi, %ebxsub %ebx, %eaxpop %rbxret
.section .note.GNU-stack,"",@progbits

编译:gcc main.c sna.s (no error, no warning). BTW: warning: 提醒; 警告。提醒在警告前面,然而翻译者选了后者。

必须保存和恢复ebx,因为main里用了它(保存sna的返回值):

movl    $5, %esi
movl    $9, %edi
call    sna@PLT
movl    %eax, %ebx

main先调用sna(9,5)后调用sna(1,3)。我记得这个顺序是未指定的。一味纯函数式编程,或者说不爱用临时变量这种有过程式编程痕迹的东西,可能会大吃一惊。比如做个象棋或其它游戏,画和擦的顺序有时是有讲究的。

http://www.gsyq.cn/news/1307.html

相关文章:

  • Codeforces Round 1049 (Div. 2)(A~D)
  • Python基础-27 match-case 使用教程
  • 准备工作之结构体[基于郝斌课程]
  • 软工课程第一次作业
  • 初始化树莓派(Raspberry Pi)系统并以 ssh 连接教程(只需读卡器、手机开热点,无需显示器) - tsunchi
  • CF
  • Ubuntu 安装 VSCode
  • A
  • 【2024-2025第二学期】助教工作学期总结
  • 对抗样本
  • ssh相关问题
  • 使用 Visual Studio 2022 创建动态库和静态库 - Invinc
  • 软件
  • 打工人必看!昆工MBA“项目管理”杀疯了
  • 201912_BUUCTF_Base64隐写
  • 软考达人-案例分析
  • kettle插件-sqlserver cdc插件,从sqlserver获取实时数据so easy,早早下班
  • try hack me.md
  • 7. LangChain4j + 记忆缓存详细说明 - Rainbow
  • 在AI技术唾手可得的时代,挖掘新需求成为制胜关键——某知名语音识别框架需求洞察
  • 英语_阅读_raise awareness about water conservation_待读
  • [豪の学习笔记] 软考中级备考 基础复习#5
  • 02020212 .NET Core重难点知识12-服务定位器、.NET依赖注入示例
  • apache详细配置
  • 9.8总结
  • 在 AlmaLinux 9 使用 Podman 部署 Redis 7.4.5 并优化内核参数
  • 基于调度场算法将中缀表达式转换为后缀表达式
  • linux下安装pycharm时,中文无法显示的问题
  • Docker,Containerd配置私有Harbor仓库和Notary服务器
  • Ubuntu安装containerd