请教各位大佬C变汇编问题 先谢过!

Xc・Team 2018-06-07 11:07:16
例如
mov r0,#0x19000 —> ldc.i4 0x19000
bx lr —> ret
以上这两句汇编指令是int类型的

那如果我想把一个单精度浮点Float类型变成汇编 该如何下手?
例如这个
ldc.r4 0x19000
ret
怎么变成汇编
如果能请大佬亲自动手做出来那就更好不过了!
...全文
291 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Xc・Team 2018-06-08
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
有个简单的办法 就是写一段满足需求的C函数, 然后用编译器中开启输出源码/汇编混合输出, 编译后打开输出文件就可以看到了
大佬 能不能麻烦你就用我发的那个单精度浮点输出一下让我熟悉熟悉?我对汇编还不太了解 操作起来比较吃力
赵4老师 2018-06-08
  • 打赏
  • 举报
回复
《The Intel 64 and IA-32 Architectures Software Developer's Manual》
zgl7903 2018-06-08
  • 打赏
  • 举报
回复
有个简单的办法 就是写一段满足需求的C函数, 然后用编译器中开启输出源码/汇编混合输出, 编译后打开输出文件就可以看到了
赵4老师 2018-06-08
  • 打赏
  • 举报
回复
--- c:\test\test\test\test.cpp -------------------------------------------------
// test.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"


int main()
{
00BB16A0  push        ebp  
00BB16A1  mov         ebp,esp  
00BB16A3  sub         esp,0D8h  
00BB16A9  push        ebx  
00BB16AA  push        esi  
00BB16AB  push        edi  
00BB16AC  lea         edi,[ebp-0D8h]  
00BB16B2  mov         ecx,36h  
00BB16B7  mov         eax,0CCCCCCCCh  
00BB16BC  rep stos    dword ptr es:[edi]  
	int i;
	float f;
	i = 0x19000;
00BB16BE  mov         dword ptr [i],19000h  
	f = (float)0x19000;
00BB16C5  movss       xmm0,dword ptr [__real@47c80000 (0BB6B30h)]  
00BB16CD  movss       dword ptr [f],xmm0  
	return 0;
00BB16D2  xor         eax,eax  
}
00BB16D4  pop         edi  
00BB16D5  pop         esi  
00BB16D6  pop         ebx  
00BB16D7  mov         esp,ebp  
00BB16D9  pop         ebp  
00BB16DA  ret  
--- c:\test\test\test\test.cpp -------------------------------------------------
// test.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"


int main()
{
00007FF6A8C416F0  push        rbp  
00007FF6A8C416F2  push        rdi  
00007FF6A8C416F3  sub         rsp,108h  
00007FF6A8C416FA  mov         rbp,rsp  
00007FF6A8C416FD  mov         rdi,rsp  
00007FF6A8C41700  mov         ecx,42h  
00007FF6A8C41705  mov         eax,0CCCCCCCCh  
00007FF6A8C4170A  rep stos    dword ptr [rdi]  
	int i;
	float f;
	i = 0x19000;
00007FF6A8C4170C  mov         dword ptr [i],19000h  
	f = (float)0x19000;
00007FF6A8C41713  movss       xmm0,dword ptr [__real@47c80000 (07FF6A8C49BB0h)]  
00007FF6A8C4171B  movss       dword ptr [f],xmm0  
	return 0;
00007FF6A8C41720  xor         eax,eax  
}
00007FF6A8C41722  lea         rsp,[rbp+108h]  
00007FF6A8C41729  pop         rdi  
00007FF6A8C4172A  pop         rbp  
00007FF6A8C4172B  ret  
赵4老师 2018-06-08
  • 打赏
  • 举报
回复
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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