该程序模拟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格式.
上传时间: 2015-09-10
上传用户:变形金刚
我在三做的课程,当时拿到了95分,包括完整的报告,有IF/ELSE/read/for等语句的plo
标签:
上传时间: 2014-12-22
上传用户:123啊
Visual Basic 6.0可以通过调用API函数格式化一个磁盘,无论是软盘还是硬盘。 打开一个新的项目(工程1) ,如果你没有更改过缺省模式,那么Visual Basic 6.0会自动添加一个form1文件,在form1上添加一个命令控件,将下面的代码拷入。 Option Explicit Private Declare Function SHFormatDrive Lib"shell32"( ByVal Hend AS Long,ByVal Drive AS Long,ByVal FormatID AS Long,ByVal Options AS Long) as Long Private Sub FormatDisk(intDrive as integer,blnQuickFormat as Boolean) dim lngReturn As Long if (blnQuickFormat) then lngReturn= SHFormatDrive(0,intDrive,0&,1&) ELSE lngReturn= SHFormatDrive(0,intDrive,0&,0&) end if end Sub Private Sub Command1_Click() call FormatDisk(0,True) End Sub 运行此程序。 注意FormatDisk函数的第一个变量很重要,他的值是0,1,2时代表格式化的分别是:A、B、C盘。
上传时间: 2015-10-05
上传用户:kytqcool
<%@ LANGUAGE="VBSCRIPT" %> <!--#include file="conn.asp" --> <% ProductClass_2=request("ProductClass_2") set rs=server.createobject("adodb.recordset") sqltext="select * from Product" if request("Product_Name")<>"" then sqltext=sqltext &" where Product_Name like %"& request("Product_Name") &"% " ELSE sqltext=sqltext &" where Product_Name like %"& "" &"% " end if if request("Product_Class")<>"" then sqltext=sqltext &" and Class_1 like %"& request("Product_Class") &"% " end if
标签: ProductClass lt LANGUAGE VBSCRIPT
上传时间: 2013-11-25
上传用户:wl9454
% 文件名:randlsbget.m % 程序员:余波 % 编写时间:2007.6.25 % 函数功能: 本函数将完成提取隐秘于上的秘密信息 % 输入格式举例:result=( scover.jpg ,56, secret.txt ,2001) % 参数说明: % output是信息隐藏后的图象 % len_total是秘密信息的长度 % goalfile是提取出的秘密信息文件 % key是随机间隔函数的密钥 % result是提取的信息 function result=randlsbget(output,len_total,goalfile,key) ste_cover=imread(output) ste_cover=double(ste_cover) % 判断嵌入信息量是否过大 [m,n]=size(ste_cover) frr=fopen(goalfile, a ) % p作为信息嵌入位计数器将信息序列写回文本文件 p=1 % 调用随机间隔函数选取像素点 [row,col]=randinterval(ste_cover,len_toal,key) for i=:len_toal if bitand(ste_cover(row(i),col(i)),1)==1 fwrite(frr,1, bit1 ) result(p,1) ELSE fwrite(frr,0, bit1 ) result(p,1)=0 end if p==len_total break end p=p+1 end fclose(frr)
标签: randlsbget result scover 2007
上传时间: 2015-11-10
上传用户:yzhl1988
编译原理的课程设计,if-ELSE条件语句的翻译,包括语法分析和词法分析。
标签: 编译原理
上传时间: 2015-11-13
上传用户:牧羊人8920
#include<iostream> using namespace std int main() { unsigned long x,warcraft,war,l cin> x while(x) { unsigned long *p=new unsigned long[x+1] if(p==NULL) { cerr<<"error!"<<endl abort() } for(warcraft=0 warcraft<=x warcraft++) *(p+warcraft)=0 *p=1 for(warcraft=0 warcraft<x warcraft++) { cout<<*p<<" " war=*p for(l=1 x>1 l++) { if(*(p+l)==0) { cout<<endl *(p+l)=1 break } ELSE { cout<<*(p+l)<<" " *(p+l)=war+*(p+l) war=*(p+l)-war } } } cout<<endl delete [] p cin>>x } return 0 }
标签: namespace iostream unsigned warcraft
上传时间: 2015-12-12
上传用户:manlian
procedureTForm1.Button1Click(Sender:TObject) var S:String begin S:=idhttp1.Get(PostURL.text+ ?username= +EdUserName.Text+ &password= +EdPassWord.Text+ &password2= +EdPassWord.Text+ &email= + EdEMail.Text+ &gendernew=1&year=&month=&day=&locationnew =&site=&oicq=&icq=&yahoo=&msn=&bio=&styleidnew =&tppnew=0&pppnew=0&timeformatnew=12&cstatus=&dateformatnew =yyyy-mm-dd&showemail=1&newsletter=1&timeoffsetnew=8&avatar =&sig=®submit=注册 ) //一句代码 ifPos( 非常感谢您的注册 ,s)>1then //判断部分 ShowMessage( 注册成功! ) ELSE ifPos( 已经被注册了 ,S)>1then ShowMessage( 该用户名或E-Mail已被注册! ) ELSE ShowMessage( 已关闭注册,注册失败! ) end
标签: procedureTForm PostURL TObject Button
上传时间: 2014-08-24
上传用户:努力努力再努力
一个表达式计算库,支持算术,逻辑运算,位运算,支持多层级的if/then/ELSE,功能强大。
上传时间: 2013-12-27
上传用户:teddysha
Floyd-Warshall算法描述 1)适用范围: a)APSP(All Pairs Shortest Paths) b)稠密图效果最佳 c)边权可正可负 2)算法描述: a)初始化:dis[u,v]=w[u,v] b)For k:=1 to n For i:=1 to n For j:=1 to n If dis[i,j]>dis[i,k]+dis[k,j] Then Dis[I,j]:=dis[I,k]+dis[k,j] c)算法结束:dis即为所有点对的最短路径矩阵 3)算法小结:此算法简单有效,由于三重循环结构紧凑,对于稠密图,效率要高于执行|V|次Dijkstra算法。时间复杂度O(n^3)。 考虑下列变形:如(I,j)∈E则dis[I,j]初始为1,ELSE初始为0,这样的Floyd算法最后的最短路径矩阵即成为一个判断I,j是否有通路的矩阵。更简单的,我们可以把dis设成boolean类型,则每次可以用“dis[I,j]:=dis[I,j]or(dis[I,k]and dis[k,j])”来代替算法描述中的蓝色部分,可以更直观地得到I,j的连通情况。
标签: Floyd-Warshall Shortest Pairs Paths
上传时间: 2013-12-01
上传用户:dyctj