3 ms·
Further if you follow the linked example I still cannot do the objdump or gdb (and hence still not reaching the goal of getting the asm reading). Back to the v
by ngcc_hk 6y ago
Further if you follow the linked example I still cannot do the objdump or gdb (and hence still not reaching the goal of getting the asm reading). Back to the vector.pcc program, I can compile the vector.pcc program (after adding int main() and some cout etc.) You do need a few more apt install commands (especially the last one to add c++):
```
apt install qemu-user qemu-user-static gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu binutils-aarch64-linux-gnu-dbg build-essential
apt install vim
apt install arm-linux-gnueabihf
apt install gdb-multiarch
apt install arm-linux-gnueabihf-gcc
apt install g++-aarch64-linux-gnu
```
For the vector source, I wonder why use c++ for testing instead of just c. After adding cout and int main(), the program can run. However, as the linked one seems not work for arm64 so far, I am still somewhere in between and not able to move to the reading assembly part, as the target of all test.
Cannot get the ld to work but use a simpler c source can generate something like this:
```
cat vector2c.S
.arch armv8-a
.file "vector2.c"
.text
.align 2
.global normSquared
.type normSquared, %function
normSquared:
.LFB0:
.cfi_startproc
sub sp, sp, #16
.cfi_def_cfa_offset 16
stp x0, x1, [sp]
ldr x1, [sp]
ldr x0, [sp]
mul x1, x1, x0
ldr x2, [sp, 8]
ldr x0, [sp, 8]
mul x0, x2, x0
add x0, x1, x0
add sp, sp, 16
.cfi_def_cfa_offset 0
ret
.cfi_endproc
.LFE0:
.size normSquared, .-normSquared
.align 2
.global main
.type main, %function
main:
.LFB1:
.cfi_startproc
stp x29, x30, [sp, -32]!
.cfi_def_cfa_offset 32
.cfi_offset 29, -32
.cfi_offset 30, -24
mov x29, sp
mov x0, 42
str x0, [sp, 16]
mov x0, 12
str x0, [sp, 24]
ldp x0, x1, [sp, 16]
bl normSquared
mov w0, 0
ldp x29, x30, [sp], 32
.cfi_restore 30
.cfi_restore 29
.cfi_def_cfa_offset 0
ret
.cfi_endproc
.LFE1:
.size main, .-main
.ident "GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0"
.section .note.GNU-stack,"",@progbits
```
from vector2.c
```
#include <stdint.h>
struct Vec2 {
int64_t x;
int64_t y;
};
int64_t normSquared(struct Vec2 v) {
return v.x * v.x + v.y * v.y;
}
int main() {
struct Vec2 v;
v.x = 42;
v.y = 12;
normSquared(v);
return 0;
}
```
- tom_mellior 6y agoHacker News uses four space indentation for code blocks, not ``` markers.