- 浏览: 1477818 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
随便写个最简单程序
然后gcc -S
看汇编
在gcc -C 变成.o文件
使用
objdump -d
反汇编
----------------------------
gcc -O1 -S -masm=intel simple.c
gcc -O1 -S simple.c
两种汇编的比较
ATT与Intel
然后gcc -S
看汇编
在gcc -C 变成.o文件
使用
objdump -d
反汇编
2010 vim code.c 2011 ls 2012 gcc -O1 -S code.c 2013 ls 2014 cat code.s 2015 gcc -S code.c 2016 cat code.s 2017 gcc -O1 -S code.c 2018 cat code.s 2019 gcc -O1 -c code.c 2020 ls 2021 cat code.o 2023 objdump -d code.o
root@ubuntu:~/algorithm# cat code.c #include <stdio.h> int accum=0; int sum(int x,int y){ int t=x +y; accum+=t; return t; }
root@ubuntu:~/algorithm# cat code.s .file "code.c" .text .globl sum .type sum, @function sum: .LFB22: .cfi_startproc movl 8(%esp), %eax addl 4(%esp), %eax addl %eax, accum ret .cfi_endproc .LFE22: .size sum, .-sum .globl accum .bss .align 4 .type accum, @object .size accum, 4 accum: .zero 4 .ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3" .section .note.GNU-stack,"",@progbits root@ubuntu:~/algorithm#
root@ubuntu:~/algorithm# objdump -d code.o code.o: file format elf32-i386 Disassembly of section .text: 00000000 <sum>: 0: 8b 44 24 08 mov 0x8(%esp),%eax 4: 03 44 24 04 add 0x4(%esp),%eax 8: 01 05 00 00 00 00 add %eax,0x0 e: c3 ret root@ubuntu:~/algorithm#
----------------------------
root@ubuntu:~/algorithm# gcc -O1 -o prog code.o main.c root@ubuntu:~/algorithm# cat main.c int main(){ return sum(1,3); } root@ubuntu:~/algorithm#
gcc -O1 -S -masm=intel simple.c
root@ubuntu:~/algorithm# cat simple.s .file "simple.c" .intel_syntax noprefix .text .globl simple .type simple, @function simple: .LFB22: .cfi_startproc mov edx, DWORD PTR [esp+4] mov ecx, DWORD PTR [edx] mov eax, ecx add eax, DWORD PTR [esp+8] add ecx, eax mov DWORD PTR [edx], ecx ret .cfi_endproc .LFE22: .size simple, .-simple .ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3" .section .note.GNU-stack,"",@progbits root@ubuntu:~/algorithm#
gcc -O1 -S simple.c
root@ubuntu:~/algorithm# cat simple1.s .file "simple.c" .text .globl simple .type simple, @function simple: .LFB22: .cfi_startproc movl 4(%esp), %edx movl (%edx), %ecx movl %ecx, %eax addl 8(%esp), %eax addl %eax, %ecx movl %ecx, (%edx) ret .cfi_endproc .LFE22: .size simple, .-simple .ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3" .section .note.GNU-stack,"",@progbits root@ubuntu:~/algorithm#
两种汇编的比较
ATT与Intel
发表评论
-
weak_ptr解决循环引用问题
2021-03-08 21:12 1172C++11引入的三种智能指 ... -
gcc链接顺序
2019-10-12 18:25 634代码在 https://github.com/killinux ... -
c++11的function和bind
2019-09-10 16:12 532参考:https://www.cnblogs.co ... -
opengl的helloworld
2014-10-22 19:41 9031.我提供一个不需要配置环境就可运行的源码。 glut.h放在 ... -
画图板用c++实现和用js实现的websocket版本
2014-10-17 13:02 2129画图板 opencv的c++ #include <o ... -
c语言内存
2014-07-02 10:26 6951、C中内存分为五个区 栈:用来存放函数的形参和函数内的局部变 ... -
重定向stdout到文件
2014-03-05 18:37 5484把stdout重定向到文件 两种方法: 第一种方法没有恢复 ... -
通过nginx远程执行shell
2014-03-03 10:26 5087saltstack远程执行shell,远程管理等返回json已 ... -
c的urldecode
2014-02-28 18:22 1363#include <stdio.h> #in ... -
pthread的pthread_mutex_lock 的使用
2014-02-25 16:54 26145参考http://haoningabc.iteye.com/b ... -
c调用c++
2013-10-12 15:24 1177参考 http://www.cppblog.com/frank ... -
用C语言,实现接收管道输出的结果,并显示
2013-04-23 21:35 1946在shell里利用“|”管道干的事情就是io重定向,把“|”命 ... -
关于char * 与 char[]
2013-04-22 21:56 962问题引入: 在实习过程中发现了一个以前一直默认的错误,同样ch ... -
单向链表翻转
2012-12-25 23:41 1021临时笔记,创建一个链表 #include <stdl ... -
trie 树 的代码
2012-12-14 23:20 1140想起搜狐老大的一句话 看代码先看h文件,擦,当初感觉他这句话很 ... -
指针函数与函数指针的区别
2012-12-14 22:44 1198一、 1、指针函数是指带指针的函数,即本质是一个函数。函数返回 ... -
指针和数组
2012-11-14 22:40 1068转载http://kan.weibo.com/con/3512 ... -
js备份
2012-10-31 23:56 1725<!DOCTYPE HTML PUBLIC " ... -
线程的helloworld
2012-10-30 21:51 1604#include<stdio.h> #inc ... -
c的书籍
2012-10-30 10:56 1129http://www.acm.uiuc.edu/webmonk ...
相关推荐
在《深入理解计算机系统》第三版以及袁春风教授的计算机基础教材中,我们能够了解到许多关于计算机系统的基础概念及其工作原理。这两本教材都侧重于帮助读者从底层逻辑开始逐步构建对现代计算机系统的全面认识。 ##...
《计算机系统基础之缓冲区溢出攻击实验》是一份详细介绍了如何进行缓冲区溢出攻击的教学实验报告。 #### 实验目的 - **加深理解**:加深学生对IA-32架构下的函数调用机制和栈帧结构的理解。 - **攻击实践**:通过...
### 嵌入式系统学习笔记关键知识点解析 #### 一、嵌入式系统的软件环境:uClinux与GNU/Linux **知识点概述**: - **uClinux**:是一种为无MMU(Memory Management Unit,内存管理单元)的处理器设计的嵌入式Linux...
第三章,书中详细讲解了GDB调试工具的使用。GDB是Linux下的调试神器,可以通过`gdb`命令启动,对程序进行单步调试、设置断点、查看变量值、监视变量变化等功能。`l`用于列出代码,`b`设置断点,`r`运行程序,`p`查看...
嵌入式系统是指集成到特定应用中的计算机系统,它们通常执行单一或有限的任务。嵌入式Linux将开源Linux操作系统与硬件平台相结合,提供了一种高效、灵活且可定制的解决方案。学习嵌入式Linux需要理解微处理器架构、...
嵌入式系统是嵌入到其他设备或系统中的计算机系统,通常具有特定的功能,并且对功耗、体积和成本有严格要求。而嵌入式Linux则是将开源的Linux操作系统与嵌入式硬件相结合,提供了强大的处理能力、稳定性和灵活性,...
3. **第3章:流程控制结构** - 条件语句:涵盖if、if...else、switch...case语句的用法,以及条件运算符。 - 循环结构:讲解while、for、do...while循环的实现和应用,以及break和continue语句。 - 分支结构:...
《达内C语言笔记》是一份详尽的教程,涵盖了C语言的基础知识,旨在帮助学习者掌握编程的基本结构和核心概念。以下是对笔记内容的详细解读: ...通过深入理解和实践这些知识点,可以逐步掌握C语言编程技巧。
嵌入式系统是集成了微处理器、软件和硬件的专用计算机系统,它们被设计用于执行特定任务,常见于消费电子、汽车、医疗设备、工业自动化等多个行业。与传统的个人电脑系统相比,嵌入式系统通常更加小巧、低功耗,且...
ARM人脸识别实训第一天笔记主要涉及到ARM嵌入式硬件和Linux开发系统的基本概念和操作。其中,ARM嵌入式硬件是指基于ARM处理器的嵌入式系统,它广泛应用于人脸识别、物联网、自动化控制等领域。 Linux开发系统是ARM...
在本笔记中,我们将深入探讨嵌入式Linux开发的基础知识,帮助IT开发者更好地理解和掌握这一技术。 一、嵌入式系统概述 嵌入式系统是指集成在设备或产品中的计算机系统,其主要功能是控制、监视或优化物理过程。与...
2. **嵌入式系统概念**:嵌入式系统是集成在其他设备中的计算机系统,它们有特定的功能,并且通常对实时性、功耗和尺寸有严格要求。理解嵌入式系统的设计原则和挑战是入门的关键。 3. **处理器架构**:嵌入式Linux...
嵌入式系统是集成在硬件设备中,用于特定功能的计算机系统。它们通常比个人电脑更小、功耗更低,且针对性强。嵌入式Linux利用开源的Linux内核,结合定制化的硬件平台,为开发者提供了强大的功能和灵活性。 二、...
杜春雷教授的《ARM体系结构与编程(第二版)》是深入理解这一技术的重要教材。这份学习笔记PPT涵盖了该书的核心内容,旨在帮助学习者全面掌握ARM架构的基础和高级特性。 1. **ARM架构概述** - ARM的历史:从最初的...
ARM学习笔记主要围绕这个核心主题展开,旨在帮助学习者深入理解和掌握ARM处理器的工作原理、指令集、体系结构以及在实际应用中的编程技巧。 首先,ARM9是ARM公司推出的一种处理器内核,属于ARM7之后的第二代增强型...
ARM架构是一种广泛应用于嵌入式系统、移动设备和服务器等领域的处理器架构。它以其低功耗、高效能和高度可定制性而闻名。对于新手来说,掌握ARM的基础知识是进入这个领域的第一步。以下是对"arm入门笔记,新手学习arm...
### 第三章 数据类型、运算符与表达式 这是C语言的基础,定义了数据的存储和操作方式。 1. **C语言的基本元素**:关键字、标识符、常量、变量、运算符和语句。 2. **C的数据类型**:包括基本类型(整型、浮点型、...
笔记中提到,对于那些没有进入计算机相关专业的学生来说,自学是深入学习计算机操作系统的唯一出路。然而,这条路充满挑战,如同“翻越崇山峻岭”,需要面对极大的困难和挑战。自学过程中,初学者可能会遇到很多问题...