西电微机原理-第三章 Intel处理器指令系统及汇编语言(5)

十一、32/64位处理器拓展指令——多媒体/流媒体SIMD拓展指令集

MMX指令集

基本介绍

Untitled

Untitled

引入8个64位处理器,处理整数计算

计算方式

Untitled

Untitled

Untitled

Untitled

  • 饱和运算可以省去程序中对于溢出的判断,加快程序的运行速度
  • 乘加运算在数字信号处理和图像处理中运算广泛(各种变换),有专门的硬件支持后可以大幅度提升计算效率

SSE/SSE2指令

SSE

引入8个128寄存器,处理单精度浮点数

Untitled

Untitled

SSE2

引入128位寄存器,既能处理整数,也能处理单双精度的浮点数

Untitled

Untitled

总结

Untitled

当寄存寄存器很大的时候,计算处理的瓶颈往往就成为装填寄存器时的内存读写,而不是cpu

所以在个人计算机上,Intel砍掉了AVX指令集,认为意义不大,但是在服务器cpu中,由于要进行大量的数学运算,AVX的作用还是很大的,所以保留

十二、汇编语言与高级语言的接口

在C语言中嵌入汇编语言代码

基本方法

Untitled

Untitled

Untitled

程序举例

两变量选大

两变量选大

对数组进行冒泡排序

对数组进行冒泡排序

SSE2指令优化程序运行速度

Untitled

Untitled

Untitled

Untitled

让C语言从外部调用代码

Untitled

汇编在编译时名字前会加下划线_ , 所以子程序模块的名字前面有下划线

汇编在编译时名字前会加下划线_ , 所以子程序模块的名字前面有下划线

为什么 ret 后面没有跟参数 12 来释放参数的堆栈空间?

Untitled

嵌入式c中主程序会负责回收汇编子程序的参数的堆栈空间

综合举例

判断有符号数整数加法溢出

Untitled

Untitled

Untitled

Untitled

posted @ 2025-09-15 17:05  Miaops  阅读(8)  评论(0)    收藏  举报