
▷ ASM
文章平均质量分 80
yss28
这个作者很懒,什么都没留下…
展开
-
一个C语言程序说明了实参到形参的传递过程(2)
这里继续上次的思路,从汇编语言里具体了解下实参到形参的传递过程,我这里使用的是VS2010编译器,将此程序反编译后一步步跟踪程序的运行过程。下面还是先贴出这个程序的源代码(运行结果在注释出或者上一篇文章):#include int func(int a,int b){ printf("%d,%d\n",a,b); int c; c=a+b; return c;}i原创 2013-04-19 17:54:10 · 1279 阅读 · 0 评论 -
Intel 汇编与C语言
学到这里,突然对汇编与C预言的相似之处做一下比较:8086的汇编是16位的,调用的是dos与bios的中断例程intel的这本汇编是win32的,调用的是操作系统提供的API函数但是我们直接去调用API函数编程,需要很了解API函数,对于初学者很难理解,所以作者编写了库文件Irvine32.lib,其中包含了许多常用的过程(调用API函数实现),然后把这些过程的原型(或者说是声原创 2013-04-17 13:46:51 · 1073 阅读 · 0 评论 -
我理解的堆栈(stack)、动态内存分配与堆(heap)
看到第4章,首次接触到堆(heap)这个概念,不好理解,所以用vs2010反汇编跟踪下程序:// use_new.cpp -- using the new operator#include int main(){ using namespace std; int nights = 65535; int * ni = &nights; int * pt = new int;原创 2013-04-27 10:19:17 · 2474 阅读 · 0 评论 -
一个C语言程序说明了实参到形参的传递过程(1)
偶然发现了这样一个有意思的C语言程序: 这个程序有意思之处在于,从源程序中分析出的结果与程序运行得到的结果差别很大。一个很自然的想法是,我看到源程序就能知道运行的结果,很郁闷的是,我看到这个程序运行的结果后,疑问就更多了。。。程序的实参是同一个变量,而且在传递参数的过程中有计算,那么在传递过程中两个实参肯定是相互影响的。至于参数是怎么互相影响的,取决于编译器怎么翻译这段程序到汇编语言(原创 2013-04-19 10:11:01 · 1834 阅读 · 0 评论 -
《Inter汇编语言程序设计》8.6 创建多模块程序(INVOKE PROTO)
继续上此的多模块创建...INVOKE与PROTO伪指令隐藏了大量的细节,程序的书写格式发生了不少变化。但是有一点,无论是ENTERN创建的还是INVOKE PROTO创建的,经过编译连接后生成的机器码是一样的..(_prompt.asm模块):TITLE Prompt For Integers (_prompt.asm)INCLUDE Irvine32.inc原创 2013-04-09 10:48:15 · 995 阅读 · 0 评论 -
《Inter汇编语言程序设计》8.6 创建多模块程序(ENTERN)
在此章节之前,创建的程序全部是只用一个模块的,也就是程序中只用了一个END指令,这里通过创建ArraySum例子程序演示创建多模块程序的方法。首先通过使用ENTERN伪指令创建传统的多模块程序,这里的ENTERN伪指令实际上只起了调用其他模块里的过程前对此过程的声明作用。这里的被调用过程与一个模块表达式没有书写格式上的变化,源程序如下:(_prompt.asm模块)TI原创 2013-04-09 10:21:47 · 1049 阅读 · 0 评论 -
《Inter汇编语言程序设计》7.6 ASCII和未压缩算术指令(AAA指令的一点理解)
这一节我个人觉得比较难学(可能我基础差了些),一直接触的指令都是处理二进制数据的,突然接触了个按十进制数串的形式进行运算的,确实很盲目,本例就是这本书的ASCII_add.asm的例子,作者讲的我感觉我不够详细,理解着困难,所以以初学者的理解发这个文章,有什么理解不正确的地方,欢迎看到的指正。下面直接分析程序:TITLE ASCII Addition (ASCII_add.asm)原创 2013-04-07 11:29:04 · 1312 阅读 · 0 评论 -
《Inter汇编语言程序设计》10.1.1 结构中域的对齐(ALIGN伪指令)
(这是一个为win32汇编结构体中域的内存对齐的理解)内存对齐: 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 “内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每原创 2013-04-09 17:33:29 · 1117 阅读 · 0 评论