• 2024-09-28深入汇编:计算机工作机制解析
    深入汇编:计算机工作机制解析计算机的工作原理计算机的工作原理可以概括为以下几个步骤:输入:用户通过键盘、鼠标或其他输入设备提供数据。处理:CPU(中央处理单元)根据程序指令处理数据。存储:内存和硬盘等存储设备用于保存数据和程序。输出:处理结果通过显示器、打印机等输出设备
  • 2024-09-20++i与i++在效率上的细微差别
    在一些特定的使用中,i++可能将原值用中间量存起来以待使用,下面看相关程序的汇编代码(使用gcc)。i++源程序:#include<stdio.h>intmain(){  inti=1;  printf("%d\n",i++);  return0;}i++汇编:main:.LFB0:  .cfi_startproc  endb
  • 2024-09-05编译原理项目——C++实现C语言编译器输出为gcc级汇编(代码/报告材料)
    完整的代码材料见文章末尾以下为核心内容和部分结果项目介绍function.cpp实现了共有的函数lexer.cpp词法分析器get_predict_table.cpp获取预测分析表LR.cpp语法分析generate.cpp语义分析中间代码生成to_asm.cpp目标代码生成部分核心代码LR分析#include"co
  • 2024-08-25C++函数调用栈从何而来
    竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~个人主页:rainInSunny | 个人专栏:C++那些事儿、Qt那些事儿目录写在前面原理综述x86架构函数调用栈分析如何获取rbp寄存器的值总结写在前面  程序员对函数调用栈是再熟悉不过了,无论是使用IDE调试还是GDB等工具进行调试,都离
  • 2024-08-25C++函数调用栈从何而来
    竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~个人主页:rainInSunny | 个人专栏:C++那些事儿、Qt那些事儿文章目录写在前面原理综述x86架构函数调用栈分析如何获取rbp寄存器的值总结写在前面  程序员对函数调用栈是再熟悉不过了,无论是使用IDE调试还是GDB
  • 2024-08-19“i++”是怎么工作的?
    我们以下面这么一段代码开始voidtest_inc(){inti=10;i=i++;printf("i=%d\n",i);}运行输出i=10看起来出乎意料,来我们看看他编译之后的汇编代码就明白了test_inc:.LFB20:.cfi_startprocendbr64pushq%rbp
  • 2024-07-07《Programming from the Ground Up》阅读笔记:p19-p48
    《ProgrammingfromtheGroundUp》学习第2天,p19-p48总结,总计30页。一、技术总结1.objectfilep20,Anobjectfileiscodethatisinthemachine'slanguage,buthasnotbeencompletelyputtogether。之前在很多地方都看到objectfile这个概念,但都没有看到起定义,这次
  • 2024-04-07切换栈操作
    1.何时需要切换栈:上下文切换,如:当需要切换进程时,需要保存正在运行的进程并切换到新的进程。当从一个函数切换到另一个函数时,需要保存原有的栈寄存器2.切换栈需要有哪些基本操作:1.切换进程时,什么可以表示一个正在运行的程序?程序中各个寄存器的值表
  • 2023-11-28go程序启动过程
    go的启动入口函数对go有开发经验的朋友都知道,main函数不是真正的启动入口,只是go暴露给用户编写的业务的接口。这点上基本所有的语言都是类似,在main函数调用前,go需要做一系列的准备工作。go的启动在runtime/rtoXXX.s,xxx是因为平台的差异。不同系统不同芯片都有自己的启动
  • 2023-07-22Hello, World!
    IA32AT&THelloworld#!/usr/bin/env-Sgcc-nostdlib-no-pie-ohello .section .rodata .align4.LC0: .ascii "Hello,World!\n".LC1: .long .LC1-.LC0 .text .globl _start .type _start,@function_start: movl $4,%eax movl $1,%ebx
  • 2023-02-23Linux04
    编译工具链IDE(集成开发环境):visualstudio,clion,Eclipse,xcodeSDK(softwareDevelopmentKit):软件开发工具包GCC(GNUCCompiler)//查看gcc版本gcc-v预处理(-E)作用:
  • 2023-02-20Linux04
    编译工具链IDE(集成开发环境):visualstudio,clion,Eclipse,xcodeSDK(softwareDevelopmentKit):软件开发工具包GCC(GNUCCompiler)//查看gcc版本gcc-v预处理(-E)作用:
  • 2023-02-11x86 常见调用约定(cdecl,fastcall,stdcall) & x86和ARM调用约定的栈帧分析 & ARM ATPCS(ARM-THUMB procedure call standard)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID
  • 2023-02-11GCC&&G++ C && C++ 内嵌汇编和调用汇编函数的方法(x86,ARM自己对照改)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID
  • 2022-12-31asm: gcc - c语言的内联汇编学习(linux_gcc_c)
    asm: gcc-c语言的内联汇编学习(linux_gcc_c)    一、基本说明 1、操作系统:rockylinux9[root@rockyc]#uname-a
  • 2022-12-02极简的HelloWorld程序
    使用汇编代码,不引入libc库。代码://no_main.ccharstr[]="Helloworld!\n";voidmy_print(){asm("movl$13,%%edx\n\t""movq%0,%%rcx\n\t""movl
  • 2022-09-04 学习笔记1
    第1章引言一.知识点归纳1.Unix的历史Unix是一种通用操作系统。该系统诞生于20世纪70年代早期,由肯·汤普森和丹尼斯·里奇采用贝尔实验室的PDP-11微型计算机开发。1975
  • 2022-08-20X86汇编层面的方法调用。
    本文主要描述了X64下的汇编层面的方法调用。具体来说就是一个C语言的方法被另外一个方法调用,是如果在汇编语言X64的规范中实现的。1.假设有如下C语言文件"test.c"点击