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

相关推荐
0+1113 小时前
Linux --从 poll 到 epoll多路转接
linux·服务器·1024程序员节
青瓦梦滋3 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
桌面运维家4 小时前
旧电脑跑不动课程软件,VDI云桌面怎样接着用?
运维·服务器·虚拟化·pve·vdi·云桌面
zhang133830890754 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
知已难寻4 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
wangchunyu1145 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck6 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir6 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人6 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
2601_949847757 小时前
bcrypt.js 跨端三方库仓颉适配全流程
linux·运维·ubuntu