C语言嵌入asm

jackexu 2008-05-28 01:47:18
各位好:
请问一下,怎么在64位平台的C代码中嵌入汇编代码?
谢谢
...全文
368 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
SaiCT 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 51365133 的回复:]
C/C++ code
#include <stdio.h>

int main(int argc, char** argv)
{
int i=10;

__asm{
mov dword ptr [ebp-4], 14h ;14h 为16进制 转换10进制为20
}

printf("%d",i);

return 0;
}
[/Quote]
lywey 2008-12-18
  • 打赏
  • 举报
回复
学习了一下,有点收获!!!!
lily2005lucky 2008-05-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 51365133 的回复:]
C/C++ code
#include <stdio.h>

int main(int argc, char** argv)
{
int i=10;

__asm{
mov dword ptr [ebp-4], 14h ;14h 为16进制 转换10进制为20
}

printf("%d",i);

return 0;
}
[/Quote]
  • 打赏
  • 举报
回复
你先说明你用的啥编译器
不同编译器内嵌汇编的语法不相同的.
jackexu 2008-05-28
  • 打赏
  • 举报
回复
能不能详细介绍一下,我是编译成64bit的code
?谢谢
51365133 2008-05-28
  • 打赏
  • 举报
回复

#include <stdio.h>

int main(int argc, char** argv)
{
int i=10;

__asm{
mov dword ptr [ebp-4], 14h ;14h 为16进制 转换10进制为20
}

printf("%d",i);

return 0;
}
51365133 2008-05-28
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(int argc, char** argv)
{
int i=10;

__asm{
mov dword ptr [ebp-4], 14h
}

printf("%d",i);

return 0;
}
独孤过儿 2008-05-28
  • 打赏
  • 举报
回复
rax 0x200000001 8589934593
rbx 0x38e3a19bc0 244337187776
rcx 0x4004e0 4195552
rdx 0x7fffeca62438 140737163699256
rsi 0x7fffeca62428 140737163699240
rdi 0x1 1
rbp 0x7fffeca62340 0x7fffeca62340
rsp 0x7fffeca62330 0x7fffeca62330
r8 0x38e3f4b270 244342633072
r9 0x38e380d470 244335039600
r10 0x0 0
r11 0x38e3c1d7b0 244339300272
r12 0x0 0
r13 0x7fffeca62420 140737163699232
r14 0x0 0
r15 0x0 0
rip 0x4004af 0x4004af <main+23>
eflags 0x10206 [ PF IF RF ]
cs 0x33 51
ss 0xe02b 57387
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
寄存器用第一列,还有指令的后缀要相应的改变,就是movl,push,pushl这些,其余的还是符合AT&T的汇编语法

69,371

社区成员

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

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