Linux: compare的直观性

最近看到一个接口函数是比较两个时间值,直观性的理解这个函数非常重要,

c 复制代码
/*
 * lhs < rhs:  return <0
 * lhs == rhs: return 0
 * lhs > rhs:  return >0
 */
static inline int timespec64_compare(const struct timespec64 *lhs, const struct timespec64 *rhs)
{
	if (lhs->tv_sec < rhs->tv_sec)
		return -1;
	if (lhs->tv_sec > rhs->tv_sec)
		return 1;
	return lhs->tv_nsec - rhs->tv_nsec;
}

如果想直观的理解,就要理解为返回的结果是lhs减去rhs,这有点类似,汇编语言的风格。汇编的格式分为AT&T和Intel的风格:

ATT版的格式;

GAS:GNU Assembly;gcc 汇编器

ATT的格式是:AX->BX (mov AX, BX) 所有寄存器名称之前都有%出现,为了区分与符号名称。为什么ATT会选用这个格式呢?The 'source, dest' convention is maintained for compatibility with previous Unix assemblers,是为了和之前的Unix的编译器兼容。还是向后兼容,所以历史以及传承的重要性在计算机里可以很好的表现处理。

Intel的格式是:AX=BX (mov AX, BX)

这两种格式,实现的工作,正好相反(对于mov指令来说)。

https://blog.csdn.net/qq_36428903/article/details/117615087

memcmp 的比较也是类似的规律

https://www.man7.org/linux/man-pages/man3/memcmp.3.html

相关推荐
苏宸啊12 小时前
linux网络编程udp服务器和客户端代码编写(echo版本和字典版本)
linux·网络
~|Bernard|12 小时前
Linux 定时任务(Cron)完整教程
linux·运维·服务器
小周学学学13 小时前
vmware-horizon第一章:horizon服务器安装
运维·服务器·vmware
m0_5873830013 小时前
社区家政系统开发实战:从需求分析到上线部署全指南
java·spring boot·spring·需求分析
凤山老林13 小时前
动态 i18n 体系落地:Spring Boot 多租户热加载与前后端协同实践
java·spring boot·后端·i18n
小雪崩13 小时前
嵌入式学习 day25:哈希表及排序与查找
linux·c语言·数据结构·学习·排序算法
白露与泡影13 小时前
解密 Pi 的 Harness 工程:Agent 会话如何实现持久化与恢复
java·人工智能·算法
奇树谦14 小时前
HDD 为什么适合顺序大文件读写:从 RAID 5 到 RAID 50 的原理与性能分析
linux·运维·网络
Zane199414 小时前
HashMap 为什么要在长度16、容量必须是2的幂这些细节上较劲
java·后端
hi_ro_a14 小时前
Linux基础开发工具详解
linux·运维·服务器