我在汇编代码方面遇到了一些问题。我正在尝试调用C函数print。我用以下命令编译文件:
gcc helloC.s -o hello
我得到的错误如下:
/tmp/cc0SwfB8.o: In function `_start':
(.text+0x0): multiple definition of `_start'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o:(.text+0x0): first defined here
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../.
我不是一个初级程序员,但刚刚开始使用任务VX汇编器(手动)。我不敢相信我在问这么简单的问题,但在读了两遍任务VX汇编手册后,我找不到最简单的问题的答案:我可以使用一个符号名称而不是原始的寄存器名称吗?
类似于:
loop_i = d3 ; d3 register, wishing to use symbolic name loop_i instead
; (assembler doesn't allow the above definition)
mov16 loop_i, #4 ; this is
在64位NASM中,我使用C库中的malloc()分配了一个8000字节的内存块,当我完成它时,我通过调用free()来释放它。
我的研究得出了许多关于如何在64位NASM中做到这一点的相互矛盾的信息,其中大部分信息是32位的,其中调用约定是不同的,或者是C或C++,而不是NASM。
我想我的malloc部分是正确的,但是我不确定是不是免费的部分。我之所以发布这个问题,是因为我不想测试它,并且分配了一个内存块,但没有释放。
所以我的两个问题很简单:
(1) do I have this right for 64-bit NASM?
(2) is the syntax the same fo
我想在uVision中使用STM32F进行简单的内联组装实验,如下代码所示。
但是当我编译错误信息时,我遇到了一些问题。
unsigned int bar(unsigned int r0)
{
unsigned int r1;
unsigned int r4 = 1234;
__asm
{
MOVS r0,#0
LDR r1,[r0] ; Get initial MSP value
MOV SP, r1
LDR r1,[r0, #4] ; Get initial PC value
BX r1
}
retur