自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 从C语言到汇编(三)函数实现之局部变量

以sum函数为例int sum(int a,int b){ return a+b;}它的汇编代码.text.global sumsum: pushl %ebp movl %esp,%ebp movl 8(%ebp),%eax addl 12(%ebp),%eax leave ret然后是main函数int main(void){ int a; int b=...

2019-11-21 10:41:29 239

原创 从C语言到汇编(三)函数实现之参数传递和函数返回值

以sum函数为例int sum(int a,int b){ return a+b;}它的汇编代码.text.global sumsum: pushl %ebp movl %esp,%ebp movl 8(%ebp),%eax addl 12(%ebp),%eax leave ret然后是main函数int main(void){ int a; int b=...

2019-11-21 10:27:40 892

原创 从C语言到汇编(三)函数实现之栈帧

X86下C语言函数使用栈帧来实现传入参数和处理局部变量的。每个函数开始前都将执行pushl %ebpmovl %esp,%ebp结束时都将执行leaveret以sum函数为例int sum(int a,int b){ return a+b;}它的汇编代码.text.global sumsum: pushl %ebp movl %esp,%ebp movl ...

2019-11-21 09:57:41 159

原创 从C语言到汇编(三)循环语句

while语句是3种循环语句的一种。如果条件满足则不断执行。看代码。#include <stdio.h>int main(void){ int x=0; while(x*x<1000) { printf("%d\n",x*x); x++; } return 0;}看汇编代码。.section .rodata .LC0:.string "%d\n...

2019-11-20 13:33:45 244

原创 从C语言到汇编(三)if语句

if从最简单的if语句开始。#include <stdio.h>int main(void){ int a; scanf("%d",&a); if((a&1)==0) { printf("is even!"); } return 0;}最简单的if语句如上。我们将其转化为汇编。.section .rodata .LC0:.strin...

2019-11-20 12:46:49 773

原创 从C语言到汇编(二)输入输出函数

日常运行程序时,我们经常要用到输入输出函数。输入经常来自于键盘,输出经常用于屏幕。而C语言标准库提供了相应的函数scanf和printf。scanf函数和printf函数的函数原型是:int scanf(const char *format, ...);int printf(const char *format, ...);可以看出它们都是参数可变的函数。举个例子。#include ...

2019-11-19 16:56:55 399

原创 从C语言到汇编(二)类型装换

在C语言中,很多情况会进行隐式的算术类型转换。一般来说,如果二元运算符的两个操作数具有不同的类型,那么在进行运算之前先要把“较低”的类型提升为“较高”的类型。运算的结果为较高的类型。转换规则:首先,如果任何一个操作数为long double类型,则将另一个操作数转换为long double 类型。否则,如果任何一个操作数为double类型,则将另一个操作数转换为double类型。否则,如果任...

2019-11-16 10:47:07 194

原创 从C语言到汇编(二)表达式

C语言变量,常量,运算符组成表达式。在这里我写上几个重要的表达式以及其汇编代码。数字交换int main(void){ int a=1; int b=0; int tmp; tmp=a; a=b; b=tmp; return 0;}汇编代码.text.global mainmain: pushl %ebp movl %esp,%ebp subl $...

2019-11-15 17:30:02 121

原创 从C语言到汇编(二)++/--运算

相信C语言的使用者对++/–运算符不会陌生吧。又是前缀,又是后缀的++/–一定让你感到困惑吧!其实以前我也是这样的,不过在学习了汇编以后,我看了C语言生成的汇编代码,这才彻底的理解了++/–运算符。先从最简单的++运算符开始吧。int main(void){ int a=0; a++; ++a; return 0;}汇编代码.text.global mainmain...

2019-11-15 17:10:32 149

原创 从C语言到汇编(二)位运算

从C语言到汇编(二)算术运算存储程序式计算机以二进制来表示数据和指令。所以,我们可以对二进制位进行一些操作。这些操作包括了与(&),或(|),异或(^),取反(~),算术左移(<<),逻辑左移(<<),算术右移(>>),逻辑右移(>>)。与与运算01000101可以用与操作来屏蔽某些位。#i...

2019-11-14 16:41:04 261

原创 从C语言到汇编(二)算术运算

变量,常量,运算符可以构成表达式,表达式也可以构成语句。本文将详细介绍加(+),减(-),乘(*),除(/),取余(%)运算符。加#include <stdio.h>int main(void){ int a=10; int b=20; int c; c=a+b; printf("sum=%d\n",c); return 0;}sum=30c语言代码...

2019-11-14 11:45:03 211 1

原创 从C语言到汇编(一)变量

变量和常量是程序处理的两种基本数据对象。声明语句说明变量的名字及类型,也可以指定变量的初始值。变量占用了内存的一块区域,不同数据类型的变量占用的字节大小各不相同。类型字节大小char1short2int4long4char *4float4double8以上是C语言基本数据类型占用字节大小。在32位环境下。声明变量需...

2019-11-13 12:06:46 417 1

原创 EDVAC

EDVACEDVAC------第一台存储式计算机,由冯诺依曼主持建造。EDVAC满足了冯诺依曼式计算机的特点,由5大部件组成------运算器,控制器,存储器,输入设备,输出设备。物理上EDVAC有:一个分发单元,用于从控制器和内存接受指令,并分发到其他单元(控制器)一个运算单元 (运算器)使用汞延迟线的存储器单元(存储器)一个磁带记录仪(外部存储器)一个连接示波器的控制单元(输...

2019-11-08 11:11:00 3258

原创 通用计算机

通用计算机又称为存储程序式计算机。什么是程序,程序是一个由许多指令构成的东西。那么存储程序式计算机也可以认为是存储指令式计算机。什么是指令呢?指令是我们人类定义的计算机操作行为。在定义指令时需要先定义具体指令的行为。一般可以将指令分为数据传输指令,算术/逻辑操作指令,比较指令,跳转指令,函数调用/返回指令。在定义计算机需要的每条指令后,就要为每条指令编码。用0/1串编码指令。有了计算机的指令后...

2019-11-07 17:07:22 233

linux系统调用

介绍linux系统调用,主要是0.01内核的代码

2015-10-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除