c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键

news2024/11/17 7:54:30

c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c++的话,
我所知道的周边的会c++的同学,可手握10多个offer,随心所欲,而找啥算法岗的,基本gg
提示:系列c++学习的基础和高阶知识,用于公司生产实践中,实实在在的公司部署产品要用的,因为c++速度快,
而java和Python速度慢,自然往硬件里面部署算法啥的,都得用c++或者c,因此本科学的c很重要,后来的Python或者java就没有那么重要了,
c/c++系列文章:
【1】c++:c语言优缺点,visual studio2019如何新建项目,写hello world程序
【2】c/c++:gcc安装,gcc编译hello world文件,system函数调用系统命令,sleep函数
【3】linux下gcc的编译过程和功能,预处理,编译,汇编,链接,.c预处理为.i文件.s文件.o文件.exe文件


文章目录

  • c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键
    • @[TOC](文章目录)
  • c/c++:windows平台下依赖的动态库
  • cpu内部结构与寄存器(了解一波)
  • 编译程序常见的错误
  • c语言代码还能反汇编??
  • 集成环境IDE,integrated development environment
  • vs常用的快捷键
  • 总结
  • 总结

c/c++:windows平台下依赖的动态库

下载一个软件:depend.exe
在这里插入图片描述
完事就可以查看hello.exe执行所依赖的第三方库了
直接打开hello.exe即可查看

在这里插入图片描述
现在我的depend.exe运行不了,卡死了
gg

反正了解一下即可

cpu内部结构与寄存器(了解一波)

我在计算机组成原理里面已经说过了
这里简单了解,拓展一下

在这里插入图片描述
寄存器在cpu内部,容量小,但是速度很快
位往往是cpu一次性处理位数的大小
在这里插入图片描述
运算的数的位数
在这里插入图片描述
内存中的数据是磁盘缓存中来
磁盘缓存从磁盘中来,硬盘

靠近cpu速度
c语言底层对内存时有封装的
我们不看寄存器
计算机发展是向着人类习惯来的,所以底层适应计算机的那些东东比较复杂,我们不咋看【汇编语言】

后来的python,c++,java,go都是底层用c封装的
反正我们后面的代码简单,但是最核心的还是c和c++

visual studio支持你写汇编语言
而且高级的工程师都会汇编语言,这样你能更好地调试代码,知道如何调试代码

#include<stdio.h>
#include<Windows.h>

int main(void)
{
	int a;
	int b;
	int c;//定义变量

	__asm
	{//高级c语言的工程师都会汇编语言的
		mov a, 3
		mov b, 4
		mov eax, a
		add eax, b//加法结果自动放入eax
		mov c, eax//将eax和放入c变量
	}

	printf("%d\n", c);
	return 0;
}

在这里插入图片描述
看来c语言中,有自动的内存使用区,需要计算时
将变量这些东西放入寄存器中

懂?

如果直接用c呢

#include<stdio.h>

int main(void) 
{
	int a = 3;
	int b = 5;
	int c = a + b;
	printf("%d\n", c);//直接打印,c底层会搞成汇编语言,但是我们不管了
	//%d是格式匹配符,匹配整型数据。放双引号中,c就匹配c

}

在这里插入图片描述
看见了没,超级简单的代码
比汇编容易多了

美滋滋

%d是格式匹配符

`#include<stdio.h>

int main(void)
{
int a = 3;
int b = 5;
int c = a + b;
printf(“%d\n”, c);//直接打印,c底层会搞成汇编语言,但是我们不管了
//%d是格式匹配符,匹配整型数据。放双引号中,c就匹配c
printf(“%d + %d = %d\n”, a, b, c);
}`在这里插入图片描述
这个c语言,当年学习的时候老费劲
其实很简单

现在用过了java,python,c++和汇编语言之后
终于明白,c原来真的挺溜的

编译程序常见的错误

你鼠标放到错误的地方,它会提示你,红色波浪线
在这里插入图片描述
在这里插入图片描述
visual studio的功能很强大的,它会提示你

反正逻辑错误不好查
其他的错误好说

实在不行,就断点调剂即可。
美滋滋
%x的代码好像也没问题
打个断点,程序会停止在这句代码,不执行
你按逐行执行,它就会执行这行代码

在这里插入图片描述
程序不是写出来的
而是调出来的

调试代码的过程远比写代码重要。

工具–选项里面找文本编辑器,c/c++,然后勾选行号,选中
然后就可以设置断点了

逐语句执行下一条指令
美滋滋

可以按调试,窗口,监视器,你看看那些变量会啥样
在这里插入图片描述
逐行运行
你看看c
在这里插入图片描述
变了,看见了么
美滋滋

要先启动调试,你才能添加窗口哦

一般f11是逐行执行,遇到函数,会进入这个函数去一步步执行
f10是执行本行,不会进去,直接执行,然后跳过本行

这种我们在其他的编程语言中依然也是这么玩的
python,java啥的,都这样

在这里插入图片描述

c语言代码还能反汇编??

调试-窗口-反汇编
美滋滋
在这里插入图片描述
就出来了反汇编的代码
c语言和汇编程序指令是一一对应的

好说,反正我们会汇编语言,你也能理解这玩意
不会汇编也无所谓

集成环境IDE,integrated development environment

在这里插入图片描述

Qt
在这里插入图片描述

visual studio
pycharm
idea

vs常用的快捷键

在这里插入图片描述
自动格式化代码
如果缩进出问题
咱们只需要一个快捷键,就搞定
ctrl+k同时还要追加ctrl+f

#include<stdio.h>

int main(void)
{
	int a = 3;
	int b = 5;
	int c = a + b;
	printf("%d\n", c);//直接打印,c底层会搞成汇编语言,但是我们不管了
	//%d是格式匹配符,匹配整型数据。放双引号中,c就匹配c
	printf("%d + %d = %x\n", a, b, c);
}

排版缩进,和各种空格,都给你排版好了
非常非常nice的

整块注释
ctrl+k,追加ctrl+c

#include<stdio.h>

int main(void)
{
	int a = 3;
	int b = 5;
	int c = a + b;
	//printf("%d\n", c);//直接打印,c底层会搞成汇编语言,但是我们不管了
	%d是格式匹配符,匹配整型数据。放双引号中,c就匹配c
	//printf("%d + %d = %x\n", a, b, c);
}

懂了吧

ctrl+k补加,ctrl+u取消注释

#include<stdio.h>

int main(void)
{
	int a = 3;
	int b = 5;
	int c = a + b;
	printf("%d\n", c);//直接打印,c底层会搞成汇编语言,但是我们不管了
	//%d是格式匹配符,匹配整型数据。放双引号中,c就匹配c
	printf("%d + %d = %x\n", a, b, c);
}

f9设置断点
f5调试
ctrl+f5时运行
f10逐过程不进函数
f11逐行进函数

总结

复习课堂笔记,看看自己写的博客即可
很简单的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
前面这几个博客,就是我复习的这些内容,这个课讲得很好的。


总结

提示:重要经验:

1)
2)学好c++,即使经济寒冬,手握10个大厂offer绝对不是问题!
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【多媒体】多媒体架构

多媒体架构 首先,多媒体架构层通常由三个主要层次组成: 应用层:负责媒体的展示、控制和交互等功能,如播放器、视频编辑器等。应用层一般是用户最直接接触到的界面。 中间件层:提供了各种媒体操作的基本服务,如编解码、音频合成、图像处理、网络传输、数据存储等。中间件…

【图像分割】Meta分割一切(SAM)模型环境配置和使用教程

注意&#xff1a;python>3.8, pytorch>1.7,torchvision>0.8 Feel free to ask any question. 遇到问题欢迎评论区讨论. 官方教程&#xff1a; https://github.com/facebookresearch/segment-anything 1 环境配置 1.1 安装主要库&#xff1a; &#xff08;1&…

day08_数组

今日内容 零、 复习昨日 一、作业 二、数组 零、 复习昨日 方法/函数是什么? 方法就是完成某个功能的一段代码的集合例如: 方法是 做饭 方法的作用是什么? 封装的思想方便维护方便复用 方法的参数列表是什么意思? 参数:方法执行所需的数据参数列表: 方法执行可以需要多个数据…

Linux下C/C++ SNTP网络时间协议实现

对于许多应用程序&#xff0c;特别是在小型计算机和微控制器上&#xff0c;不需要NTP的最终性能。便开发了简单网络时间协议&#xff08;SNTP&#xff09;&#xff0c;为功能较弱的计算机提供时钟同步&#xff0c;而这些计算机不需要NTP的复杂性。 而简单网络时间协议&#xf…

简易糖尿病胰岛素注射量推荐系统运行记录(github项目)

前言 在github上找案例推理相关实现代码&#xff0c;找到这个项目&#xff0c;记录一下运行过程。项目地址&#xff1a;https://github.com/jcf-junior/Diabetes-CBR 运行记录 运行项目的前提是已经装好的所有request的包&#xff0c;电脑里已经安装过mongodb数据库。 原项目…

Linux XFS文件系统的备份与还原

文章目录Linux XFS文件系统的备份与还原XFS文件系统备份xfsdump语法xfsdump备份完整的文件系统用xfsdump进行增量备份XFS文件系统还原xfsrestore语法用xfsrestore观察和xfsdump后的备份数据内容简单恢复level 0 的文件系统恢复增量备份数据仅还原部分文件到xfsrestore交互模式L…

深入剖析Android视图层次结构,为什么UI界面如此多样化?

简述 在Android Framework中&#xff0c;渲染机制是指如何为应用程序的用户界面绘制和布局视图&#xff08;View&#xff09;。Android的视图层次结构&#xff08;View Hierarchy&#xff09;是由视图树中的每个节点表示的 。当更新视图树时&#xff0c;Android会执行以下流程…

记一次内存泄漏问题的排查

阶段一&#xff1a; 前段时间&#xff0c;突然发现服务在毫无征兆的情况下发生了重启。去看了一下容器退出的日志&#xff0c;发现内存利用率超过了100%&#xff0c;导致容器重启&#xff0c;进一步看了skyWalking&#xff0c;发现heap内存超了&#xff0c;当时只是简单的以为是…

HTML2.1列表标签

列表标签种类 无序列表 有序列表 自定义列表 使用场景&#xff1a;在列表中按照行展示关联性内容。 特点&#xff1a;按照行的形式&#xff0c;整齐显示内容。 一、无序列表 标签名说明ul无序列表整体&#xff0c;用于包裹li标签li表示无序列表的每一项&#xff0c;用于包…

【iOS】—— 消息传递和消息转发

消息传递和消息转发 文章目录消息传递和消息转发消息传递&#xff08;方法调用&#xff09;IMP指针IMP与SEL的区别与联系SEL是通过表取对应关系的IMP&#xff0c;进行方法的调用快速查找imp过程汇编代码查找过程总结消息发送快速查找imp(汇编):方法缓存慢速查找总结慢速查找消息…

全链路日志追踪

背景 最近线上的日志全局追踪 traceId 不好使了&#xff0c;不同请求经常出现重复的 traceId&#xff0c;或者通过某个请求的 traceId 追踪搜索&#xff0c;检索出了与该请求完全不相干的日志。我领导叫我去排查解决这个问题&#xff0c;这里我把我排查的过程思路以及如何解决…

真题详解(单元测试)-软件设计(五十)

真题详解(0/1背包)-软件设计&#xff08;四十九)https://blog.csdn.net/ke1ying/article/details/130163955 单元测试 五个特征&#xff1a;模块接口、局部数据结构、重要执行路径、出错处理、边界条件。 模块接口&#xff0c;保证测试模块数据流正确的流入和流出。 测试模块用…

大数据相关知识

1、大数据整体简介 1、1 简介 百度百科这样写道 大数据&#xff08;big data&#xff09;&#xff0c;IT行业术语&#xff0c;是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优…

C++类的学习1

类的定义一般包括两部分&#xff0c;一是类的属性&#xff0c;二是他所拥有的方法。类的实例化是指给类的加载并初始化过程&#xff0c;比如一个people类&#xff0c;我们具体到每一个人就是类的实例化&#xff0c;此外一个类可以在此类上进行扩展。比如people类&#xff0c;我…

vue项目使用luckyexcel预览excel表格

场景 最近工作中在开发文档上传并能在新窗口打开预览的功能。在此记录下心路历程。 方法 我总共尝试了2种方法预览excel&#xff0c;均可实现。还发现一种方法可以实现&#xff0c;需要后端配合&#xff0c;叫做KKfileview。 1.使用luckyexcel插件实现xlsx的预览 2.使用fi…

组合式升降压PFC的分析方法

1. 组合式升降压PFC的基本原理 组合式升降压PFC采用两组储能元件&#xff0c;基本单元为Cuk&#xff0c;Sepic和Zeta。参考论文《New Efficient Bridgeless Cuk Rectifiers for PFC Applications》中的三种拓扑进行分析。   Cuk型PFC的TypeI如下图所示&#xff0c;正半周Dp一…

Jef-log-tail日志采集工具使用说明

介绍 jef-log-tail是一款基于netty实现的日志采集工具&#xff0c;支持指定目录、指定文件、指定后缀的动态持续日志采集&#xff0c;日常使用场景如&#xff1a;集群部署后将多台主机的日志集中存放到一台日志服务器上&#xff0c;或者将日志统一输出到数据库、redis、kafka、…

STM32实战项目-温湿度传感器

程序功能&#xff1a; 1、软件模拟I2C协议与SHT30数字温湿度传感器通讯&#xff1b; 2、数码管显示环境温湿度&#xff1b; 3、串口打印环境温湿度。 目录 一、硬件电路 二、技术讲解 2.1IIC简介 2.2 IIC总线协议 2.2设备接入 三、SHT30数字温湿度传感器 3.1性能介绍 …

Rollup 实践:插件生态和实用技巧(续)

在前面的文章中&#xff0c;我们已经了解了 Rollup 的性能优化和高级用法。本篇文章将继续探讨 Rollup 的插件生态和实用技巧。 插件生态 Rollup 拥有一个丰富的插件生态&#xff0c;下面我们介绍几个实用的插件&#xff1a; rollup-plugin-terser&#xff1a;使用 Terser 压…

FlowForge 使用教程 团队资源管理

前言 本篇文章结合FF的操作来给大家解释一下,FF在团队管理上都与那些资源可以操作。 团队创建 使用超管第一次登录FF平台,默认什么资源都没有,你只能先去创建一个团队才能继续往下操作。 在FF平台上,团队就代表一个租户,也是一种资源隔离的手段。 创建团队可以通过右上…