gpt4 book ai didi

c++ - ARM 汇编和 C++

转载 作者:行者123 更新时间:2023-11-30 00:55:50 25 4
gpt4 key购买 nike

你好,我正在阅读一本关于 ARM 体系结构的书。 (我是菜鸟)我正在阅读有关 cpu 的寄存器文件的信息。

当我在 C++ 中创建一个变量时,这是通过总线 RM 发送到寄存器文件然后发送到 CPU 中的 ALU 的数据吗?示例:(int a = 1 + 1;)

地址寄存器是通过地址总线返回内存地址的吗? (例如:&a)

这本书没有提到 c++,但我只是想知道。

我只是想看看我是否理解正确。感谢您的回答。

最佳答案

尝试将 C++ 直接与寄存器文件或地址总线等硬件相关联可能不是一个好主意。将汇编语言作为中间级别插入更有意义。因此,想想您的 C++ 如何被翻译成汇编代码,然后汇编代码如何控制硬件。您关于 ARM 的书将教您汇编和硬件之间的联系。要了解 C++ 和汇编之间的关系,最好查看一些编译器输出。

您可以使用编译器选项来检查 C++ 编译器的程序集输出。例如使用 g++:

$ cat -n 测试.cc

 1  int a;
2
3 void f() {
4 a = a + 1;
5 }

$ arm-elf-c++-4.6 -O2 -c -g -Wa,-ahl=test.s test.cc

$ less +/4:test.cc test.s

  [...]
4:test.cc **** a = a + 1;
16 .loc 1 5 0
17 0000 0C309FE5 ldr r3, .L2
18 0004 002093E5 ldr r2, [r3, #0]
19 0008 012082E2 add r2, r2, #1
20 000c 002083E5 str r2, [r3, #0]
[...]

可以看到a的地址(称为.L2)在第17行被移动到寄存器r3,然后在第18行a 从内存中检索并在第 19 行递增,最后在第 20 行再次存储到主内存中。

关于c++ - ARM 汇编和 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476271/

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