ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享

这篇具有很好参考价值的文章主要介绍了ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Algorithm

题目:链表中环的检测
自己的分析见博客《检测链表中是否存在环》

Review

disassemble command是我读的一篇英语文章,这篇文章主要是介绍gdb反汇编命令的使用和参数。自己为了能够演示这篇文章里边的内容,特意自己使用汇编语言编写代码,然后写了一篇博客。

我这里使用下边的汇编代码进行演示:

# 文件名称:twoNumberPlus.s
.type twoNumberPlus, @function
.section .data
      intFormatShow:
          .ascii "%d\n\0"
 .global main
 .section .text
    main:
         pushq %rbp
         movq %rsp,%rbp
         movq $2,%rdi
         movq $3,%rsi
         call twoNumberPlus

         movq %rax,%rsi
         movq $intFormatShow,%rdi
         movq $0,%rax
         call printf

         movq $60,%rax
         movq $0,%rdi
         movq %rbp,%rsp
         popq %rbp
         syscall
    twoNumberPlus:
         pushq %rbp
         movq %rsp,%rbp
         addq %rdi,%rsi
         movq %rsi,%rax
         movq %rbp,%rsp
         popq %rbp
         ret

gcc -g twoNumberPlus.s -static -o twoNumberPlus带有调试信息地进行编译。
gdb -q twoNumberPlus使用安静模式开始调试。
ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享,ARTS打卡,链表,学习
list可以看一下第1行到第10行代码。
ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享,ARTS打卡,链表,学习

break 10可以在第10行代码处设置上断点,run可以让gdb开始运行程序,disassemble可以查看当前运行的函数。
ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享,ARTS打卡,链表,学习

disassemble twoNumberPlus可以看一下twoNumberPlus函数的汇编代码。
ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享,ARTS打卡,链表,学习

disassemble 0x0000000000401095可以看一下0x0000000000401095地址所在的函数汇编代码。
ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享,ARTS打卡,链表,学习

disassemble 0x000000000040108e,0x0000000000401095只显示0x000000000040108e0x0000000000401095之间的汇编代码,注意不包括0x0000000000401095
ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享,ARTS打卡,链表,学习

disassemble twoNumberPlus,+4反汇编函数twoNumberPlus和它加4地址之间的代码,不包括twoNumberPlus+4的代码。
ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享,ARTS打卡,链表,学习

disassemble 0x000000000040108e,+9,反汇编0x000000000040108e0x000000000040108e+9的地址之间代码,不包括0x000000000040108e+9的代码。
ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享,ARTS打卡,链表,学习

disassemble /m twoNumberPlus twoNumberPlus函数反汇编出来,也把对应的行数显示出来。
ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享,ARTS打卡,链表,学习

disassemble /r twoNumberPlus把机器码也反汇编出来。
ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享,ARTS打卡,链表,学习

Technique/Tip

我最近在学习汇编语言,感觉自己的技术基础有些差,希望程序员朋友还是要把底层知识好好学习一下,争取都能掌握,让我们的技术生命周期更长一些。另外还需把自己的涉及面提升一下,我的意思就是大家的技术既要深,也要博,当然还是要把握两者的平衡点,毕竟一个人的精力有限。这里推荐给大家几本汇编书籍。
intel汇编风格(64位)

Beginning x64 Assembly Programming From Novice to AVX Professional(中文版《x64汇编语言:从新手到AVX专家》)
Low-Level Programming C, Assembly

AT&T汇编风格(64位)

Learn to Program with Assembly Foundational Learning for New Programmers

Share

分享自己对《认知天性》的一些总结。

学习的本质是打造心智模型,将知识条件反射式使用,就是在遇到问题时,能够毫不费力地迅速对问题做出反应。

学习的三步骤:编码、巩固和检索

编码:将材料记到大脑里面,形成短期记忆
巩固:将短期记忆变成长期记忆
检索:将知识从记忆中提取到意识中解决实际问题

学习的提升需要通过合意困难来完成,合意困难有三个要素:

1.有相应的已知做基础
2.能够触发巩固和检索
3.对学习有正面促进作用

学习的八种方法:

1.从记忆中检索新学习的内容,是学习的最好方法。
2.间隔地安排检索练习,需要注意检索知识的时间间隔,在《认知天性》里边只说,根据不同的材料选择不同的间隔时间。根据《考试脑科学》中的说法,在学习之后的一个月内,一定要复习一次,否则可能就是重新学习了。
3.穿插学习各种问题类型
4.细化:为新材料寻找不同层次的意义,比如将刚学习的内容跟已经学习到的知识进行关联。
5.生成:在看到解决方法之前需要自己努力回答问题或者解决难题。
6.反思:将检索和细化进行结合,回顾一下以前学习的知识,看一下自己什么地方做得好,什么地方做得不好。
7.校准: 使用客观评价工具来清除你已经掌握的知识错觉,调整你的认识来更好地反映现实。
8.助记:使用谐音或者顺口溜或者概括进行记忆。文章来源地址https://www.toymoban.com/news/detail-677350.html

到了这里,关于ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第二周题解

    其实上周只要做8道题目,所以允许我偷个懒,将上周的第9,10道题c v 过来 (qwq) 有一个n×n的网格,有些格子是可以通行的,有些格子是障碍。 一开始你在左上角的位置,你可以每一步往下或者往右走,问有多少种走到右下角的方案。 由于答案很大,输出对10^9+7取模的结果。

    2024年02月12日
    浏览(31)
  • QT第二周周三

    题目:使用图片绘制出仪表盘 代码: widget.h widget.cpp 运行效果:

    2024年01月18日
    浏览(31)
  • 第二周作业0414

    1.总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。 答:文本处理工具 tr 用于替换和删除字符 cat 显示文本内容 nano 修改文本 sort 排序 wc 统计行号 tac 反向打印显示内容 cut 提取特定字段 答:文本三件客分别是:gr

    2024年04月14日
    浏览(28)
  • Qt第二周周二作业

    代码: widget.h widget.cpp 运行截图:

    2024年01月17日
    浏览(29)
  • 【个人作业】第二周用户调研作业3

    做过头通常指的是某种行为或决策过于极端或过度,导致不利的后果。在这种情况下,数据驱动的决策可能会导致一些问题。 (一)、在Google的例子中,过度关注微小的设计细节和数据分析可能会导致以下几个问题: 1、创意和创新受限:过度依赖数据可能会抑制创造力和创

    2024年03月11日
    浏览(34)
  • 蓝旭前端第二周预习作业

    伪类是选择器的一种,它用于选择处于特定状态的元素,比如当它们是这一类型的第一个元素时,或者是当鼠标指针悬浮在元素上面的时候。它们表现得会像是你向你的文档的某个部分应用了一个类一样,帮你在你的标记文本中减少多余的类,让你的代码更灵活、更易于维护

    2024年04月09日
    浏览(70)
  • 线性表之链表

    在计算机科学中,链表是一种常见的数据结构,用于存储和组织数据。相比于顺序表,链表具有更高的灵活性和动态性。 在本博客中,我们将深入讨论链表的概念、分类以及实现方法。我们将从链表的基本概念开始,了解链表是如何组织数据的,并分析链表的优势和劣势。

    2024年02月11日
    浏览(25)
  • C++之链表list

    1.1 list的基本特性         C++的list是一种双链表,这意味着每个元素都有一个指向前一个和后一个元素的指针。相比于单链表,双链表在插入和删除操作中更为高效,因为它不需要遍历链表来找到插入或删除的位置。         list支持常见的序列操作,如添加元素(p

    2024年02月04日
    浏览(26)
  • 数据结构之链表

    头文件 自定义函数 主函数 效果图  

    2024年01月25日
    浏览(41)
  • 云曦暑期学习第二周——文件上传漏洞

    一些web应用程序中允许上传图片、视频、头像和许多其他类型的文件到服务器中。 文件上传漏洞就是利用服务端代码对文件上传路径变量过滤不严格将可执行的文件上传到一个到服务器中 ,再通过URL去访问以执行恶意代码。 上传文件时,如果服务端代码未对客户端上传的文

    2024年02月15日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包