文件名称:asm_module

  • 所属分类:
  • 汇编语言
  • 资源属性:
  • [Windows] [Visual C] [源码]
  • 上传时间:
  • 2012-11-26
  • 文件大小:
  • 6kb
  • 下载次数:
  • 0次
  • 提 供 者:
  • 摩*
  • 相关连接:
  • 下载说明:
  • 别用迅雷下载,失败请重下,重下不扣分!

介绍说明--下载内容均来自于网络,请自行研究使用

该程序模拟UNIX中save与resume函数,并介绍在VC中如何使用汇编进行机器级的操作.

主函数很简单首先引入两个外部函数,extern "C"表示按传统C命名习惯.函数save将程序指针保存在(*s)中并返回0,为什么有

  if(save(&sp)){...}

if后的语句看起来永远都不会被执行,但是运行结果表明它被执行了.这个问题同UNIX中处理机调度函数(switch)的那个if语句(第一句)一样.

程序执行完save(&sp)后得到因为条件为假而执行else语句,却在判断之前将程序指针保存在sp中了.

else语句中的resume(&sp),该函数很狡猾将堆栈中的返回地址改变了,改到了sp所指出,即将程序指针改到了执行条件判断前.resume返回1,条件满足,执行if语句.

save函数堆栈:

eip  ebp+8

s  ebp+4

ebp  ebp+0

resume函数堆栈与save的相同.



新建一个win32的工程,将unixc.cpp和unix.obj加入过程即可.

unix.obj是用masm6.11生成的:ml /c /coff unix.asm,生成coff格式的obj而不是omf格式.-the simulation UNIX save and resume function, and the VC on how to use the compiled class machines for the operation. main function is very simple to introduce the first two external function, extern "C" said C. named by the traditional habits. function pointer procedures will save preserved in (* s) and return 0, why are there if (save (
相关搜索: 处理机调度
perl

(系统自动生成,下载前可以参看下载内容)

下载文件列表

UnixC

.....\unix.asm

.....\UNIX.OBJ

.....\UnixC.cpp

.....\UnixC.dsp

.....\UnixC.dsw

.....\UnixC.opt

.....\说明.txt

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度更多...
  • 请直接用浏览器下载本站内容,不要使用迅雷之类的下载软件,用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.

相关评论

暂无评论内容.

发表评论

*主  题:
*内  容:
*验 证 码:

源码中国 www.ymcn.org