gpt4 book ai didi

c - 可以将给定的 C 代码转换为汇编 x86 代码吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:21 24 4
gpt4 key购买 nike

我在 assembly x86 的 AWD 避障机器人中工作。我可以找到一些已经用 C 语言执行但无法在汇编 x86 中执行的程序。如何将这些 C 代码转换为汇编 x86 代码?全部代码在这里: http://www.mertarduino.com/arduino-obstacle-avoiding-robot-car-4wd/2018/11/22/

void compareDistance()   // find the longest distance
{
if (leftDistance>rightDistance) //if left is less obstructed
{
turnLeft();
}
else if (rightDistance>leftDistance) //if right is less obstructed
{
turnRight();
}
else //if they are equally obstructed
{
turnAround();
}
}

int readPing() { // read the ultrasonic sensor distance
delay(70);
unsigned int uS = sonar.ping();
int cm = uSenter code here/US_ROUNDTRIP_CM;
return cm;
}

最佳答案

How do convert these C codes to Assembly x86 code?

将源代码转换为汇编基本上是编译器所做的,因此只需编译即可。大多数(如果不是全部)编译器都可以选择输出中间汇编代码。

如果您使用 gcc -S main.c,您将获得一个名为 main.s 的文件,其中包含汇编代码。

这是一个例子:

$ cat hello.c
#include <stdio.h>

void print_hello() {
puts("Hello World!");
}

int main() {
print_hello();
}

$ gcc -S hello.c

$ cat hello.s
.file "hello.c"
.text
.section .rodata
.LC0:
.string "Hello World!"
.text
.globl print_hello
.type print_hello, @function
print_hello:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
leaq .LC0(%rip), %rdi
call puts@PLT
nop
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size print_hello, .-print_hello
.globl main
.type main, @function
main:
.LFB1:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $0, %eax
call print_hello
movl $0, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1:
.size main, .-main
.ident "GCC: (Debian 8.3.0-6) 8.3.0"
.section .note.GNU-stack,"",@progbits

关于c - 可以将给定的 C 代码转换为汇编 x86 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55800761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com