汇编——SSE打包整数

SSE也可以进行整数向量的加法,示例如下:

;sse_integer.asm
extern printfsection .datadummy db 13
align 16pdivector1  dd  1dd  2dd  3dd  4pdivector2  dd  5dd  6dd  7dd  8fmt1    db      "Packed Integer Vector 1: %d, %d, %d, %d", 10, 0
fmt2    db      "Packed Integer Vector 2: %d, %d, %d, %d", 10, 0
fmt3    db      "Sum Vector: %d, %d, %d, %d", 10, 0
fmt4    db      "Reverse of Sum Vector: %d, %d, %d, %d", 10, 0section .bss
alignb 16pdivector_res   resd    4pdivector_other resd    4section .textglobal mainmain:
push rbp
mov rbp, rsp; 打印向量1mov rsi, pdivector1mov rdi, fmt1call printpdi
; 打印向量2mov rsi, pdivector2mov rdi, fmt2call printpdi; 添加两个对齐的双整数向量movdqa  xmm0, [pdivector1]paddd   xmm0, [pdivector2]
; 将结果保存在内存中movdqa  [pdivector_res], xmm0
; 打印内存中的向量mov     rsi, pdivector_resmov     rdi, fmt3call    printpdi; 将内存向量复制到xmm3movdqa  xmm3, [pdivector_res]
; 从xmm3中提取打包值pextrd  eax, xmm3, 0pextrd  ebx, xmm3, 1pextrd  ecx, xmm3, 2pextrd  edx, xmm3, 3
; 以相反顺序插入xmm0pinsrd  xmm0, eax, 3pinsrd  xmm0, ebx, 2pinsrd  xmm0, ecx, 1pinsrd  xmm0, edx, 0
; 打印反转后的向量movdqa  [pdivector_other], xmm0mov     rsi, pdivector_othermov     rdi, fmt4call    printpdi; 退出
mov rsp, rbp
pop rbp
ret;打印函数------------------------------------
printpdi:
push rbp
mov rbp, rspmovdqa xmm0, [rsi]; 从xmm0中提取打包值pextrd esi, xmm0, 0pextrd edx, xmm0, 1pextrd ecx, xmm0, 2pextrd r8d, xmm0, 3mov rax,0call printf
leave
ret

以上代码展现了两个整数向量的相加操作,并且将结果向量反向写进一个向量,然后输出。结果如下:
运行结果示例
需要注意的几个指令整理如下:

  • movdqa 把值复制到寄存器中,这个指令可以一下复制4个4字节的整型,字节/字/双字/四字有各自版本相同功能;
  • paddd 这个指令求寄存器和内存之和,这里应该不是pad-dd而是p-add-d,最后的那个d表示相加的是4字节的整型,字节/字/双字/四字有各自版本相同功能;
  • pextrd 这个指令把xmm寄存器中的指定双字提取出来,放到寄存器里,字节/字/双字/四字有各自版本相同功能;
  • pinsrd 这个指令和pextrd功能相反,字节/字/双字/四字有各自版本相同功能;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/806939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【鹅厂摸鱼日记(二)】(生活篇)初到深圳的人情冷暖

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:重生之我在鹅厂摸鱼⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多知识   🔝🔝 摸鱼日记 1. 前言2. 鹅厂的人文关怀…

论文笔记:NEFTune: Noisy Embeddings Improve Instruction Finetuning

iclr 2024 reviewer 评分 5666 1 论文思路 论文的原理很简单:在finetune过程的词向量中引入一些均匀分布的噪声即可明显地提升模型的表现 2 方法评估

2024年第二届交通运输与建筑工程国际会议(IACTCE2024)

2024年第二届交通运输与建筑工程国际会议(IACTCE2024) 会议简介 本次会议旨在为从事交通建设工程等相关领域的专家学者、工程技术人员和研发人员提供一个平台,分享科研成果和前沿技术,了解学术发展趋势,拓宽研究思路…

docker 安装canal

一、新建文件夹 新建文件夹logs, 新建文件canal.properties instance.properties docker.compose.yml canal.propertie 修改如下: 修改instance.properties内容如下 1.1 canal.properties ################################################# ######### …

算法刷题应用知识补充---数论

这里写目录标题 快速幂求a^k%p题结 快速幂求逆元题结 扩展欧几里得求逆元题结 排列组合题结二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 快速幂求a^k%p 题 结 主要用到a的k次方,可以用多个a的…

fastadmin + laragon + nginx的后台访问路径配置

使用过fastadmin的小朋友都知道, fastadmin 默认的是不能访问admin模块的, 它在public 文件夹中又新建了一个 XXX.php 来指向 admin 模块的,作用像 index.php 的文件 以前我每次使用的时候,直接就到 config配置文件中把 admin 模块…

String类(1)

❤️❤️前言~🥳🎉🎉🎉 hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥&a…

CC工具箱使用指南:【融合同类碎图斑】

一、简介 在一些经过不合理处理的数据中,经常会存在碎图斑,正常情况下用【融合】或【消除】工具即可解决。 但是【融合】工具会融掉无关的字段,【消除】工具则会将碎图斑融给不同用地类型的图斑。 如下图所示,因为B1面积更大&a…

蓝桥杯嵌入式(G431)备赛笔记——PWM+LCD+按键

目录 题目要求(真题): cubeMX配置: 小试牛刀: Keil代码: 效果演示: 题目要求(真题): 使用第十一届第二场真题,练习PWM波部分的代码&#xff0c…

德国FSL18罗德与施瓦茨频谱分析仪

181/2461/8938产品概述: 频率范围:9 kHz至18 GHz(超范围至20 GHz)频率分辨率:1赫兹28 MHz的信号分析带宽低测量不确定性,即使在微波范围内通用测量应用,例如光谱图轻巧紧凑,便于现场安装、维护和服务 9 kH…

什么是企业邮箱?企业邮箱和个人邮箱的区别是什么?

拥有一个企业邮箱究竟能给公司带什么益处?这是许多中小企业管理者好奇的,很多人觉得邮箱只要用来收发邮件就够了。但实际上,什么是企业邮箱?企业邮箱和个人邮箱在功能范围有着很大的区别。好的企业邮箱不仅能提高公司内部的沟通效…

【电控笔记5】电流环pi参数整定

旋转坐标系下的电压方程,由id和iq计算出ud和uq 把常数项(上面两个红框)拿出来解耦合,作为前馈,如下 电流环传递函数 电流带宽 响应时间 另一种方法:内膜控制器

RISC-V特权架构 - 中断注入

中断注入 1 中断注入的作用2 mip寄存器3 中断注入后的处理过程 本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。 1 中断注入的作用 中断注入,就是在M模式下,手动向S模式去产生一个中断。 比如:向mip寄存器的bit5…

Web前端开发——Vue概述

前言: 整理下学习笔记,打好基础,daydayup!!! Vue Vue是一套前端框架,基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的专注点放在数据上,可以免除原生JavaScript中的DOM操作&am…

600MA线性锂电池充电芯片 - YB4054DJ

描述: YB4054一款完整的单节锂离子电池充电器。其SOT23-5的封装与较少的外部元件数使得YB4054成为便携式应用的理想选择。采用了内部PMOSFET架构,加上防倒充电路,不需要外部检测电阻器和隔离二极管。热反馈可对充电电流进行自动调节,以便在大…

基于Linux C++多线程服务器 + Qt上位机开发 + STM32 + 8266WIFI的智慧无人超市

前言 针对传统超市购物车结账排队时间长、付款效率低的问题,提出了一种更符合现代社会人们购物方式-基于RFID的自助收银系统。习惯了快节奏生活的人们都会选择自助收银机结账,理由显而易见:自助收银机结账很方便,几乎不用排队&am…

“反正你又看不到,少写一行又何妨......”

单链表专题 1.链表的概念及结构2. 实现单链表3. 链表的分类 1.链表的概念及结构 概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 链表的结构跟火车车厢相似,淡季时⻋次的⻋厢…

GraphQL API-通过未被净化的参数获取隐私信息

GraphQL API-通过未被净化的参数获取隐私信息 Lab: Accessing private GraphQL posts实验前置必要知识点 在GraphQL端点发送任何query{__typename},它将在其响应中的某处包含{"data": {"__typename": "query"}}字符串,这…

JZM-A系列机械隔膜计量泵

引言: 在现代工业生产过程中,对流体材料的精准计量和输送需求日益提高。面对这一挑战,JZM-A系列机械隔膜计量泵以其卓越的设计、准确的计量能力和高效的性能,为各行各业提供了一种可靠的解决方案。本文将详细解析JZM-A系列计量泵的…

数字社交的新典范:解析Facebook的成功密码

在当今数字化时代,社交媒体已经成为人们日常生活的重要组成部分,而Facebook作为最知名的社交媒体平台之一,其成功之处备受瞩目。本文将深入解析Facebook的成功密码,探讨其在数字社交领域的新典范。 1. 用户体验的优化 Facebook注…