码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【C语言指针详解-CSAPP数据段解析】1024程序员节 | 汇编语言机械级编程|用代码,改变世界#


    🍃博主昵称:一拳必胜客
    博主主页面链接:博主主页传送门
    博主专栏页面连接:专栏传送门–计算机考研
    🍑创作初心:本博客的初心是每天分享记录自己学习的脚步,和各位技术友探讨交流;
    博主研究方向:渗透测试、嵌入式、机器学习;
    🌸博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ;
    ‘’
     特别鸣谢:木芯工作室
    特别鸣谢:木芯工作室 、Ivan from Russia


    文章目录

    • 🍃课堂讲解
      • 内存中的数据
        • 实际举例
        • 循环数组
        • 指针和数组区别:
      • 为什么a【1】【j】比a【i】【1】快
      • 节省空间的定义方法---防止内存对齐的浪费--把最大的放最前面
      • 浮点数的实现,及其计算
      • 浮点数运算的代码-示例
      • 在这里插入图片描述 浮点数汇编: 把数字放在xmm1寄存器非常与众不同
      • 现在用ymm
      • 浮点 整型代码计算混在一起 示例:


    🍃课堂讲解

    内存中的数据

    在这里插入图片描述

    在这里插入图片描述

    数组就是个地址然后有头尾

    val【】
    当我们val+1 在内存里就是 x+4
    🤔️我们是为了让这个指针指向下一个值的地址
    编译器知道这个变量是什么变量类型!

    只有*(Val+1) 才是 5

    如果下标变成负值呢?也可以用

    实际举例

    注意⚠️:每次都要给你要加入的数字一个确切的名字,不然就是magic number,让人困惑是不是只有他可以
    都要初始化变量
    在这里插入图片描述

    注意这个数组定义很有意思:
    相当于int cmu【5】={1,2,3,4,5}

    在这里插入图片描述

    看图 汇编底层实现数组:
    movl(rdi,rsi,4), eax
    这就是取数:z【digital】

    循环数组

    在这里插入图片描述
    注意:c和汇编特别相似:比如+=这个符号
    goto

    指针和数组区别:

    指针声明以后不分配空间。而数组则会分配空间
    注意⚠️:如果我
    声明a[3];这是一个指向一个三个int空间的指针。
    但是如果我*a【3】这就有空指针的风险
    因为这是个指针,不是数组,没有初始化。
    这样很危险。

    在这里插入图片描述

    在这里插入图片描述

    为什么a【1】【j】比a【i】【1】快

    在这里插入图片描述
    我们看汇编代码:他们首先是走一大步走到a【i】上–这一步有时候用乘法,有时候就是位运算,但是比起加法肯定是慢的,然后再通过movl(rdi,rdx,4),eax来走一小步一小步的j
    所以必然 便利的时候一直走小步就可以了,更加方便,如果每次都要重新迈大步那就慢了。

    节省空间的定义方法—防止内存对齐的浪费–把最大的放最前面

    在这里插入图片描述

    浮点数的实现,及其计算

    之前背景:
    被集成到专门的芯片上面搞浮点数-------------显卡?
    在这里插入图片描述

    在这里插入图片描述

    SSE3示例:
    每个16字节寄存器

    用以实现浮点数运算—配合ieee754非常先进的方式!!!
    在这里插入图片描述

    注意:
    addss=add single precision scalar
    用这个SIMD指令可以做到快速计算浮点数---------------------------------------------------显卡

    在这里插入图片描述

    浮点数运算的代码-示例

    在这里插入图片描述
    浮点数汇编:
    把数字放在xmm1寄存器非常与众不同

    现在用ymm

    浮点 整型代码计算混在一起 示例:

    在这里插入图片描述

  • 相关阅读:
    React18中各种Hooks用法总结( 内附案例讲解)
    帖子求助:两台电脑时间相差1或2秒
    基础课11——数据来源
    Kafka3.0.0版本——消费者(自动提交 offset)
    C语言——指针(入门详解)
    NginX + PostgreSQL + uWSGI + Django
    qt环境配置
    时序预测 | MATLAB实现BiLSTM时间序列未来多步预测
    深入理解React中的useEffect钩子函数
    DLL注入——使用远程线程
  • 原文地址:https://blog.csdn.net/weixin_43796670/article/details/127455172
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号