汇编——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.rhkb.cn/news/300490.html

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

相关文章

提升团队工程交付能力,从“看见”工程活动和研发模式开始

作者:张裕、雅纯 理想中的研发团队应当具有以下特征: 总是工作在最高优先级的事项上 理想的研发团队能够识别并始终集中精力在当前最紧迫和最有价值的任务上。这需要团队具备出色的项目管理能力和决策能力,以便能够正确评估优先级&#xff0…

Ant Design Vue

Ant Design Vue是一个由阿里巴巴团队打造的Vue组件库,它以其优雅的设计和丰富的功能集成而被广泛使用。以下是对Ant Design Vue的简单介绍: 首先,Ant Design Vue采用了精良的设计风格,为用户提供了简约、美观的界面,符…

MySQL-视图:视图概述、创建、查看、更新、修改、删除

第14章 视图 1. 常见的数据库对象2. 视图概述2.1 为什么使用视图?2.2 视图的理解 3. 创建视图3.1 创建单表视图3.2 创建多表联合视图3.3 基于视图创建视图 4. 查看视图5. 更新视图的数据5.1 一般情况5.2 不可更新的视图 6. 修改、删除视图6.1 修改视图6.2 删除视图 …

微信小程序使用自己的布局

我第一天学习微信小程序,照着黑马程序员老师的操作模仿编辑。因为视频是23年的,我24年4月份学习发现很多地方不一样了。 新版微信开发者工具中没有自带wxss文件。我自己建了一个list.wxss文件,发现用不了,在list.wxml文件中编写v…

pbootcms模板网站饰品首饰玛瑙水晶钻石饰品玉石戒指复古珠宝饰品pbcms网站源码下载

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 pbootcms模板网站饰品首饰玛瑙水晶钻石饰品玉石戒指复古珠宝饰品pbcms网站源码下载PC版 pbootcms内核开发的网站模板,该模版适用于饰品首饰类企业网站,复古珠…

spring面试八股

常用的注册bean的方式 ComponentScan扫描到的service和Controller等的注解 Configration配置类或者是xml文件的定义。 spring中有几种依赖注入的方式 1.构造器注入。 2.setter方法注入。 3.使用field属性的方式注入。 applicationContext是什么 spring bean spring aop Aop…

iOS 应用内网络请求设置代理

主要通过URLSessionConfiguration 的connectionProxyDictionary 属性 为了方便其他同学使用,我们可以通过界面来进行设定(是否开启代理、服务端、端口),从而达到类似系统上的设定 具体链接参考:为 iOS 网络请求设置代理…

【电子取证篇】USB软只读锁软件

【电子取证篇】USB软只读软件 推荐的这两款USB只读软件都免安装版本,方便携带—【蘇小沐】 1、实验环境 Removable Access Tool_v1.2usbblock_v1.0Windows 11 专业工作站版23H2(22631.3374) (一)Removable Access …

Spring——框架介绍

每一个Java技术中都会存在一个“核心对象”,这个核心对象来完成主要任务为了得到核心对象,需要创建若干个辅助对象,从而导致开发步骤增加JDBC中 JDBC 核心对象——PreparedStatement 通过DriverManager得到数据库厂商提供的Driver对象DriverM…

【御控物联】JSON结构数据转换在物流调度系统中的应用(场景案例三)

文章目录 一、前言二、场景概述三、解决方案四、在线转换工具五、技术资料 一、前言 物流调度是每个生产厂区必不可少的一个环节,主要包括线边物流和智能仓储。线边物流是指将物料定时、定点、定量配送到生产作业一线的环节,其包括从集中仓库到线边仓、…

【LeetCode】894. 所有可能的真二叉树

文章目录 [894. 所有可能的真二叉树](https://leetcode.cn/problems/all-possible-full-binary-trees/)思路一:分治代码:思路二:记忆化搜索代码: 894. 所有可能的真二叉树 思路一:分治 1.递归,n1 时&#…

Cute Background FX

Cute Background FX是环境背景粒子系统的集合。非常适合作为菜单的背景。 该包包括: -20个独特预制件+20个URP预制件 -5种独特的环境设计 -15种纹理 -2个自定义着色器+2个URP着色器 -共59项独特资产 -一个演示场景,您可以在其中概述所有内容。 所有纹理都是512x512分辨率的P…

tensorRT加速遇到的若干问题

0x00 博主pth转化onnx时 import torch from basicsr.models import create_model from basicsr.train import parse_options from basicsr.utils import FileClient, imfrombytes, img2tensor, padding, tensor2img, imwrite import osdef pth_to_onnx(input, onnx_path, inpu…

C#基础:类,对象,类成员简介(第四节课)

本节内容: 类与对象的关系 什么时候叫“对象”,什么时候叫实例引用变量与实例的关系 类的三大成员 属性方法事件 类的静态成员与实例成员 关于“绑定” 1.什么是类:(再详细一点) 类是对现实世界事物进行抽象所…

TAB标签美化 - SVG作为mask

今天觉得V3的标签不是很好看,忽然想起来之前看过Vue Admin Beautiful Pro的样式挺好的,顺手研究了一把。发现Vue Admin Beautiful是采用PNGmask css来解决的。于是乎打算把V3的标签页做点小美化,但是迁移过程发生些小插曲,在此记录…

element-ui 在Popover弹框中使用Select选择器,Vue3

bug描述: 当选择完select的时候,popover也会退出。 解决: popover组件的的关闭是当点击组件外的元素时会关闭,select虽然是写在组件内的,但是select有一个默认属性teleported“true” 会把它默认插到 body 元素,我…

Java学习笔记24(面向对象编程(高级))

1.面向对象编程(高级) 1.1 类变量和类方法 1.类变量 ​ *类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是…

【Easy云盘 | 第二篇】后端统一设计思想

文章目录 4.1后端统一设计思想4.1.1后端统一返回格式对象4.1.2后端统一响应状态码4.1.3后端统一异常处理类4.1.4StringUtils类4.1.5 RedisUtils类 4.1后端统一设计思想 4.1.1后端统一返回格式对象 com.easypan.entity.vo.ResponseVO Data public class ResponseVO<T> …

树莓派5使用体验

原文地址&#xff1a;树莓派5使用体验 - Pleasure的博客 下面是正文内容&#xff1a; 前言 好久没有关于教程方面的博文了&#xff0c;由于最近打算入门嵌入式系统&#xff0c;所以就去购入了树莓派5开发板 树莓派5是2023年10月23日正式发售的&#xff0c;过去的时间不算太远吧…

C# Solidworks二次开发:获取唯一ID的API详解

大家好&#xff0c;今天要介绍的是关于solidworks中可以获取对象唯一ID的几种API&#xff0c;获取唯一ID的API有如下几种&#xff1a; &#xff08;1&#xff09;第一种是GetID Method (IComponent2)&#xff0c;其含义为获取每个组件的唯一ID。 下面是API中的使用例子&#x…