ICode9

精准搜索请尝试: 精确搜索
  • C语言 使用数组索引与指针索引 在循环中对编译器优化的影响及耗时分析2021-11-11 13:35:01

    C语言在访问数组时既可以使用如a[i]这样的下标方式,也可以使用*(a+i)这样的指针方式,理论上完全等价。但是在编译器对循环作优化时,对于指针方式的索引很有可能分析不彻底,因此相比数组索引耗时有所增加 数组索引耗时 #include <stdio.h> #include <stdlib.h> #include <time.h

  • 汇编 —— 特殊数据结构2021-10-25 16:00:15

    文章目录 结构体练习题练习题答案 联合体数据对齐参考文献 写在前面:从腾讯实习回来之后,就感觉到自己的知识体系过于散乱。于是萌生了写一个自己的操作系统这样的心思,此为系列第一章,主要是讲解一些汇编知识的,内容大多从CSAPP中也可以获得。 本篇内容主要讲解:结构体和联合

  • CSAPP第4章家庭作业参考答案2021-10-12 20:03:07

    4.45 不正确 push %rsp的指令会将rsp减8之前的old value压栈 应该是如下代码: movq REG, -8(%rsp) sub $8, %rsp 4.46 不正确 应该改为 add $8, %rsp movq -8(%rsp), REG 4.47 #include<stdio.h> long int a[100] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3}; void bubble_b(long *dat

  • C++多态原理2021-09-30 17:35:56

    编译环境:win10;x64;debugstruct Base { int base=0; virtual void Print() { }; virtual void Test() { }; virtual void Test1() { }; virtual void Test2() { }; virtual void Test3() { }; virtual void Test4() { }; virtual void Test5

  • 虚机运行时重启主机容易panic2021-09-26 11:32:10

    一:问题描述 最近有遇到重启主机时产生panic的情况,异常的堆栈如下: [2847164.482478] kvm: exiting hardware virtualization [2847164.482504] kvm: exiting hardware virtualization [2847164.482528] ------------[ cut here ]------------ [2847164.482530] kernel BUG at /ro

  • 编译过程中遇到的问题2021-09-11 22:01:58

      记录一下有关编译的问题     1.条件转移和条件传送   编译器在编译条件控制的代码时,会采用两种策略进行编译。一个是条件转移(条件跳转),一个是条件传送。   条件转移:用条件跳转指令jmp等来完成编译。类似于goto,会跳过部分代码 movq $0,%rax jmp .L1

  • 汇编语言中的一些问题2021-09-11 12:33:46

      总结一下关于汇编的一些问题:   首先,汇编的最终目标是转换为机器码,所以其实所有操作都是对逻辑内存的操作。   1.寄存器寻址和间接寻址:   设寄存器rax,rdx。rdx中储存的地址为0x11,rax中储存的地址为0xaa,0xaa中储存的值为0xbb %rax //代表寄存器寻址,即返回寄存器rax的

  • csapp -bomblab记录1-52021-09-09 19:30:13

    new bomblab 1.Border relations with Canada have never been better. 2.1 2 4 8 16 32 1 3117 0IONEFG 该实验要求用户输入6个不同的字符串,如果任何一个不正确,炸弹就会爆炸。 1.checksec bomblab 来查看保护开启的情况 2.gdb bomb 3.disass main 4.disass phase_1 栈顶抬高

  • 利用 PGO 提升 .NET 程序性能2021-07-28 18:01:34

    NET 6 开始初步引入 PGO。PGO 即 Profile Guided Optimization,通过收集运行时信息来指导 JIT 如何优化代码,相比以前没有 PGO 时可以做更多以前难以完成的优化。 下面我们用 .NET 6 的 nightly build 版本 6.0.100-rc.1.21377.6 来试试新的 PGO。 PGO 工具# .NET 6 提供了静态

  • 当我谈 Rax 按端拆分代码的时候我谈些什么2021-06-01 20:04:44

    写在前面 rax 是淘系的一套跨端解决方案。 根据 Rax 工程配置 知道,使用 rax 时,如果设置了 target: ['web', 'weex'] ,则构建产物 build 目录会有两个子目录:web 和 weex,分别在 web 端和 weex 端消费。并且通过观察可以发现,两个目录下的内容是不一样的,已经根据不同环境拆分代码。

  • Java 新建对象过程分析2021-05-30 10:54:17

    1. 写在前面“[JVM 解剖公园][1]”是一个持续更新的系列迷你博客,阅读每篇文章一般需要5到10分钟。限于篇幅,仅对某个主题按照问题、测试、基准程序、观察结果深入讲解。因此,这里的数据和讨论可以当轶事看,不做写作风格、句法和语义错误、重复或一致性检查。如果选择采信文中内容,风险

  • CSAPP:Boom2021-05-28 11:02:41

    Boom!!! 要干啥: 顾名思义,拆炸弹,一共有6关,你要在每一关输入指定的字符串来拆除炸弹。 怎么干: gdb基础: 具体使用看官网或者技术博客,我只在这里介绍本实验用到的gdb命令。 quit是退出gdb调试,可简写为q run让程序跑起来,一般是设置断点后输入该命令进行调试,可简写为r break设置断点,break

  • coredump之构造函数分析2021-05-06 23:57:27

    本文主要是学习coredump中构造函数的分析主要分析以下两点 反编译的构造函数;汇编中构造函数的内存结构                                                                                 

  • 重读&笔记系列-《深入理解计算机系统》第三章-part1,part22021-05-05 23:00:47

    Machine Programming I Machine Programming I: Basic History of Intel processors and architectures C, assembly, machine code Definition Architecture: also ISA instruction set architecture) The parts of a processor design that one needs to understand or wr

  • jvm源码解读--12 invokspecial指令的解读2021-04-27 19:05:15

    先看代码 package com.zyt.jvmbook; public class Girl extends Person{ public Girl() { int a; } @Override public void sayHello() { System.out.println("girl say hello"); } private void sayHi(){ System.o

  • CSAPP Lab 2 Bomb小记二2021-04-26 22:01:12

    接着上一篇文章,我们来继续分析几个phase 实验过程 phase 4 破解 反汇编代码: 设置断点: 执行程序: 分析汇编: 446:压栈 447:传入的第二个参数%rcx 448:传入的第一个参数%rdx 449:输入” %d %d” 450-453:输入个数为2 454-457:判断输入的第一个参数的大小,该数需小于等于14,且被初始化

  • CSAPP Lab22021-04-17 03:01:41

    目录CSAPP Lab2结果HintsPhase 1答案汇编Phase 2答案汇编Phase 3答案汇编Phase 4答案汇编Phase 5答案汇编Phase 6答案汇编总结 CSAPP Lab2 人要没了。 计算机也太令人头秃了 不过好好做一天也就弄完了(雾) 参考: https://zhuanlan.zhihu.com/p/339461318 https://zhuanlan.zhihu.co

  • 《深入理解计算机系统》(CSAPP)实验二 —— Bomb Lab2021-04-16 17:55:18

    这是CSAPP的第二个实验,主要让我们理解代码的机器级表示,最重要的是理解每个寄存器的作用以及如何使用这些寄存器。本次的实验内容有点晦涩难懂,对于这些内容多看下习惯就好了。  本次实验中的bomb文件中共有7个炸弹问题(6个显式的和1个隐藏的),每条问题只有输入正确的答案才能进入下一

  • 《深入理解计算机系统》(CSAPP)读书笔记 —— 第三章 程序的机器级表示2021-04-16 17:54:49

    本章主要介绍了计算机中的机器代码——汇编语言。当我们使用高级语言(C、Java等)编程时,代码会屏蔽机器级的细节,我们无法了解到机器级的代码实现。既然有了高级语言,我们为什么还需要学习汇编语言呢?学习程序的机器级实现,可以帮助我们理解编译器的优化能力,可以让我们了解程序是如何运行

  • Understanding Swift’s value type thread safety - 代码分析(一)2021-04-02 23:34:03

    结构体并不代表线程安全,swift在此上未做保证 func testScenarioA() throws { var store: Int = 0 DispatchQueue.concurrentPerform(iterations: 1_000_000) { i in store = i _ = store } }   执行后下断点,对比

  • 嵌入式汇编实现系统调用-time2021-03-16 18:03:31

    平台为x86-64 系统调用是用户层调用linux服务的最常用的方式,但是大家通常使用封装好的库函数,比如libc提供的API进行使用,本篇文章使用嵌入式汇编实现time的系统调用。 首先使用libc编写一段程序做为对比: #include<stdio.h> #include<time.h> int main(void) { time_t timer =

  • pwn | bugku pwn42021-02-19 18:33:57

    64位的elf文件 canary保护和NX保护 主程序简单的栈溢出: .text:0000000000400814 push rbp .text:0000000000400815 mov rbp, rsp .text:0000000000400818 sub rsp, 250h .text:000000000040081F mov

  • SROP例题2021-01-15 13:02:56

      具体攻击原理可以参考安全客这篇文章:入口   刚学了一点,也是懵懵懂懂的,拿几道题来练练手。 ciscn_2019_es_7   64位程序,只开启了NX保护。   相当于执行了read(0,buf,0x400),write(1,buf,0x30),在执行read的时候可以进行溢出。题目中还有一个函数叫做gadgets,里面提供了一些

  • Java 新建对象过程分析2021-01-13 23:07:18

    1. 写在前面“[JVM 解剖公园][1]”是一个持续更新的系列迷你博客,阅读每篇文章一般需要5到10分钟。限于篇幅,仅对某个主题按照问题、测试、基准程序、观察结果深入讲解。因此,这里的数据和讨论可以当轶事看,不做写作风格、句法和语义错误、重复或一致性检查。如果选择采信文中内容,风险

  • redis6.0.5之Rax阅读笔记1-相关数据结构和部分辅助函数2021-01-11 20:34:40

    /* Representation of a radix tree as implemented in this file, that contains * the strings "foo", "foobar" and "footer" after the insertion of each * word. When the node represents a key inside the radix tree, we write it * b

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有