这个指令,用C代码怎么实现.

fiftymetre 2006-09-27 01:29:38
Flag=1 函数:0xFC ESI:0x1002DCD6 SHRD EAX,EDX,CL EAX=0x6169BCE0 EDX=0x6169BCE0 ECX=0xFF9C0007
Flag=2 函数:0xFC EAX=0xC0C2D379
这个指令,用C代码怎么实现.


大家帮帮忙。解释的清楚一些。偶笨的哈。。。。
...全文
677 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyherocn 2006-10-03
  • 打赏
  • 举报
回复
就是在C语言中嵌套汇编语言~!
用~!
_asm
{
//把汇编代码放这儿就行啦~

}
我啃 2006-10-03
  • 打赏
  • 举报
回复
如果是中断程序那么另当别论
我啃 2006-10-03
  • 打赏
  • 举报
回复
在涉及到底层的ASM的东西时一般都是直接内嵌汇编来完成

unsigned int shrd(unsigned int high,unsigned int low, unsigned char shift)
{
return (low>>shift)| (high<<(32-shift));
}

不错,不过友必要将简单高效的汇编指令低效化吗??
我曾经看到一个人很自豪的和我说它吧MOV指令用C写了
……^_^
唐巧 2006-10-03
  • 打赏
  • 举报
回复
直接用
_asm
{
//把汇编代码放这儿就行啦~

}
superarhow 2006-09-27
  • 打赏
  • 举报
回复
是不是就是64位数右移?那就直接__int64 i; i >> 7吧
Jokar 2006-09-27
  • 打赏
  • 举报
回复
guoxiaoshou2000(契丹人) ~up
Nash1983 2006-09-27
  • 打赏
  • 举报
回复
不明白
mtai273 2006-09-27
  • 打赏
  • 举报
回复
晕啊,看不懂,高手详细说明一下
mathe 2006-09-27
  • 打赏
  • 举报
回复
是不是就是shrd指令
unsigned int shrd(unsigned int high,unsigned int low, unsigned char shift)
{
return (low>>shift)| (high<<(32-shift));
}
jixingzhong 2006-09-27
  • 打赏
  • 举报
回复
寄存器的值不需要考虑的吧?
在程序装载/运行的时候不是会自动完成的么?

Flag=1 函数...
Flag=2 函数...

??
没看明白什么意思,
不会就是根据一个标志变量执行不同的过程吧?
想来这么简单的咚咚, 50mjj也不会来问了 ~ =_=#.........
小兽 2006-09-27
  • 打赏
  • 举报
回复
帮顶一下
zzd8310 2006-09-27
  • 打赏
  • 举报
回复
帮顶
jixingzhong 2006-09-27
  • 打赏
  • 举报
回复
......
sankt 2006-09-27
  • 打赏
  • 举报
回复
up
csShooter 2006-09-27
  • 打赏
  • 举报
回复
up
mathe 2006-09-27
  • 打赏
  • 举报
回复
__int64 i; i >> 7
相当于两条指令:
shrd lower32, higher32, cl=7
shr higher32, cl=7

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧