如何使用内联C纯汇编语言?我想做循环,但不起作用。
#include <stdio.h>
int main()
{
asm
{
for(int i=0; i<10; i++)
{
// is this how i will do the assembly language as inline C?
// is this how the for loop looks as inline c?
}
} // ?
}
答案 0 :(得分:1)
它不起作用,因为那不是汇编。 IIRC,汇编中最简单的for
- 类似循环就像
.L3:
addl $1, -4(%ebp)
cmpl $9, -4(%ebp)
jle .L3
答案 1 :(得分:1)
类似的东西,
__asm{
xor esi,esi
go:
inc esi
cmp esi,10
jnz go
}
答案 2 :(得分:0)
使用asm关键字时,不允许编写任何C代码。您只能使用汇编语言关键字,而在C中编写汇编代码的方式取决于编译器。每个编译器都允许您以不同的方式。例如,Turbo使用此语法
void main()
{
asm
{
mov ax,4C00h
int 21h
}
}
答案 3 :(得分:0)
我认为他所问的是,是否可以在汇编语言程序中编写“内联C”。答案是否定的,您必须将C程序编译到库中并从汇编语言程序中调用它。我想你也可以编写一个宏来使for循环更方便实现for循环,但这将是高度依赖于汇编程序的,你必须让我们知道你正在使用它。如果我错了,我会大肆宣传,我只是在黑暗中拍摄,你的问题不太清楚。
答案 4 :(得分:0)
检查流控制指令以了解如何使用汇编语言实现循环。查看x86条件跳转指令和LOOPX
指令。看看http://en.wikibooks.org/wiki/X86_Assembly/Control_Flow。有关更好和详细说明,请查看英特尔手册。