. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  栈的思考  [待解决] 回复[ 8次 ]   点击[ 1274次 ]  
gocker
[帖 主]   [ 发表时间:2007-12-31 21:56 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:14
注册日期:2007-10-15 14:54
栈的概念不讨论,只说我想到的

栈地址,上低下高,如果我把机器指令反向压入栈,再把SS:SP的值(地址)给CS:IP。(地址,不是SP值给IP,这是为了理解。)

那么从逻辑上推理CPU就会把他当作指令来执行。

如果可以。是否在汇编中,就有这样的技巧。
fishboy
[第1楼]   [ 回复时间:2008-01-01 10:42 ]   [引用]   [回复]   [ top ] 
荣誉值:283
信誉值:0
注册日期:2007-06-26 11:42
恩。有想法。cpu把cs:ip指向的数据当作指令来执行,这是肯定的。有没有这么用的,这就得看有没有问题需要这么做了,所以,这个就比较难以确定了。
mouse
[第2楼]   [ 回复时间:2008-01-01 14:18 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
没见过这样用的,不过是个想法,如楼上说的,不知道这个有没有需求。我提出个应用的小问题:
指令的长度大都不一样,而栈是对字单元操作的。反向压栈的数据能正确解析出来好像不太容易;不知道楼主有没有解决的方法。
如果指令数据是入栈->完成后在入另一个栈,两次操作应该是能正确执行了,但好像意义不大,难道是简单的数据加密~~,有可能啊~嘿嘿
gocker
[第3楼]   [ 回复时间:2008-01-12 22:36 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:14
注册日期:2007-10-15 14:54
我自己也不太清楚~
atel
[第4楼]   [ 回复时间:2008-01-20 23:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-01-16 01:00
我提出个应用的小问题:
指令的长度大都不一样,而栈是对字单元操作的。反向压栈的数据能正确解析出来好像不太容易;不知道楼主有没有解决的方法。
------------------
回复:我是初学者,对于你这个问题我的理解是,你把栈的顶地址给CS:IP。 那么CPU是否就认为这是栈呢,如果CPU在执行指令的时候不认为这是栈,是不是就不用考虑是否能正确解析这个问题呢。
wdm
[第5楼]   [ 回复时间:2008-01-21 11:09 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
没那么复杂!
cs:ip指向的数据被cpu当作指令执行;ss:sp指向的空间被当作栈空间。如果cs==ss,ip==sp了,也就是把栈中的数据当指令了,但是在运行过程中如果再有栈操作照样会影响栈内的数据内容。所以,最终的运行结果很难预料。
sunshine
[第6楼]   [ 回复时间:2008-01-21 13:34 ]   [引用]   [回复]   [ top ] 
荣誉值:106
信誉值:0
注册日期:2007-06-26 15:10
没那么复杂! 
cs:ip指向的数据被cpu当作指令执行;ss:sp指向的空间被当作栈空间。如果cs==ss,ip==sp了,也就是把栈中的数据当指令了,但是在运行过程中如果再有栈操作照样会影响栈内的数据内容


说的很对,没有那么复杂
huige
[第7楼]   [ 回复时间:2008-04-18 13:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-03-15 23:01
我觉得cpu想执行,可能会遇到不正确的指令
毕竟我们不是特意压入机器码
taotling
[第8楼]   [ 回复时间:2008-04-19 14:19 ]   [引用]   [回复]   [ top ] 
荣誉值:53
信誉值:0
注册日期:2008-02-09 02:55
可以把一段空间当栈来用,用"BP+偏移量"的方式将所有指令用字节的方式写入栈中,
这样最后把SS:SP交给CS:IP,这样能达目的。

但这样做和原来的CS:IP有什么区别呢?
只不过CS:IP值变化了一下而已,
目前不知道这样有什么可利用的技巧。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved