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模板网!

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

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

相关文章

  • QT第二周周三

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

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

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

    2024年04月14日
    浏览(36)
  • 第二周题解

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

    2024年02月12日
    浏览(41)
  • Qt第二周周二作业

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

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

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

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

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

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

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

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

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

    2024年02月04日
    浏览(31)
  • 线性表之链表

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

    2024年02月11日
    浏览(33)
  • 码农的周末日常---一月的第二周

    上周总结         开发任务按规划完成         参加新版本的需求分析会议,基本了解新功能的实现         开始阅读一本新书《Head first Java》 2024/01/13        天气晴        温度适宜         蓝蓝的天,暖暖的阳光,不晒鞋可惜了,赶紧掏出我那正宗莆田和anta晒,扔到

    2024年01月19日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包