Groups | Search | Server Info | Login | Register
Groups > sfnet.atk.linux > #1538
| Subject | Re: Raspberry Pi 4 |
|---|---|
| Newsgroups | sfnet.atk.linux |
| References | <2nieG.2067$LD.968@uutiset.elisa.fi> <m3o8smrlbh.fsf@titan.hyper.fi> <ffpeG.2099$LD.1372@uutiset.elisa.fi> <m35zeshnov.fsf@titan.hyper.fi> <a5FeG.2142$LD.638@uutiset.elisa.fi> |
| From | Matti Lehtiniemi <matti.lehtiniemi@remove-me.kolumbus.fi> |
| Message-ID | <uEMeG.2167$LD.178@uutiset.elisa.fi> (permalink) |
| Date | 2020-03-25 19:36 +0200 |
| Organization | Elisa Customer |
vektori laske_yhteen(vektori a, vektori b)
{
return vektori(a.x+b.x, a.y+b.y, a.z+b.z);
}
Testasin mitä gnu-projekti c++ -kääntäjä, eli g++ tuottaa tuolle
assembleria.Käytin O3 -optimointivipua.
Tuotti tämmöisen:
Z12laske_yhteenR7vektoriS0_:
.fnstart
.LFB1534:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
push {r4, r5, lr}
ldmib r2, {r4, lr}
ldr r3, [r1]
ldr ip, [r1, #4]
ldr r5, [r2]
ldr r1, [r1, #8]
add r2, r3, r5
add ip, ip, r4
add r1, r1, lr
stm r0, {r2, ip}
str r1, [r0, #8]
pop {r4, r5, pc}
On tuossa pushia ja pop:ia .Ei vaikuta kovin optimoidulta.
Ensimmäisellä rivillä oleva link register laitetaan pinoon joka sitten
pop:ataan viimeisellä rivillä suoraan pc:hen ,eli program counteriin.
Milläköhän c++ -kääntäjällä esim Samsungini Android on käännetty ?
Tossahan olisi melkoinen kilpailuetu sille firmalle, joka käyttää
tehokkainta mahdollista kääntäjää.
Jos jotakuta kiinnostaa saman testaus x86 -arkkitehtuurissa, niin laitan
tämä viestin loppuun vektori.cpp ohjelman ja vektori.s assemblerin mitä
ARM:lle generoitiin.
Tämä on oikeastaan pelkkää c:tä, c++ -spesifisiä juttuja en viitsinyt
laittaa selkeyden lisäämiseksi.
Olipa muuten kätevää siirtää tuo raspberry Pi:ltä PC:lle.
5 sekuntia siitä kun huomasin ettei mulla ole raspissa ftp:tä, niin
kirjoitin
sudo apt-get install ftp
Ja viiden sekunnin kulutta siitä mulla oli ftp :)
Matti
Aluksi vektori.cpp
#include <iostream>
using namespace std;
struct vektori
{
int x,y,z;
};
vektori laske_yhteen(vektori &a ,vektori &b)
{
vektori v;
v.x = a.x+b.x;
v.y = a.y+b.y;
v.z = a.z+b.z;
return v;
}
int main()
{
vektori a,b,u;
a = {14, 20 ,30};
b = {20, 30 ,40};
u = laske_yhteen(a,b);
cout << u.x <<" " << u.y << " " << u.z << endl;
return 1;
}
Sitten siitä generoitu assembler-ohjelma:
.arch armv6
.eabi_attribute 28, 1
.eabi_attribute 20, 1
.eabi_attribute 21, 1
.eabi_attribute 23, 3
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 2
.eabi_attribute 30, 2
.eabi_attribute 34, 1
.eabi_attribute 18, 4
.file "vektori.cpp"
.text
.align 2
.global _Z12laske_yhteenR7vektoriS0_
.arch armv6
.syntax unified
.arm
.fpu vfp
.type _Z12laske_yhteenR7vektoriS0_, %function
_Z12laske_yhteenR7vektoriS0_:
.fnstart
.LFB1534:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
push {r4, r5, lr}
ldmib r2, {r4, lr}
ldr r3, [r1]
ldr ip, [r1, #4]
ldr r5, [r2]
ldr r1, [r1, #8]
add r2, r3, r5
add ip, ip, r4
add r1, r1, lr
stm r0, {r2, ip}
str r1, [r0, #8]
pop {r4, r5, pc}
.cantunwind
.fnend
.size _Z12laske_yhteenR7vektoriS0_, .-_Z12laske_yhteenR7vektoriS0_
.section .text.startup,"ax",%progbits
.align 2
.global main
.syntax unified
.arm
.fpu vfp
.type main, %function
main:
.fnstart
.LFB1535:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
push {r4, r5, r6, lr}
.save {r4, r5, r6, lr}
mov r1, #34
ldr r0, .L6
bl _ZNSolsEi
ldr r4, .L6+4
mov r2, #1
mov r1, r4
mov r5, r0
bl
_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i
mov r0, r5
mov r1, #50
bl _ZNSolsEi
mov r2, #1
mov r1, r4
mov r5, r0
bl
_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i
mov r1, #70
mov r0, r5
bl _ZNSolsEi
bl _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
mov r0, #1
pop {r4, r5, r6, pc}
.L7:
.align 2
.L6:
.word _ZSt4cout
.word .LC2
.fnend
.size main, .-main
.align 2
.syntax unified
.arm
.fpu vfp
.type _GLOBAL__sub_I__Z12laske_yhteenR7vektoriS0_, %function
_GLOBAL__sub_I__Z12laske_yhteenR7vektoriS0_:
.fnstart
.LFB2024:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
push {r4, lr}
ldr r4, .L10
mov r0, r4
bl _ZNSt8ios_base4InitC1Ev
mov r0, r4
ldr r2, .L10+4
ldr r1, .L10+8
pop {r4, lr}
b __aeabi_atexit
.L11:
.align 2
.L10:
.word .LANCHOR0
.word __dso_handle
.word _ZNSt8ios_base4InitD1Ev
.cantunwind
.fnend
.size _GLOBAL__sub_I__Z12laske_yhteenR7vektoriS0_,
.-_GLOBAL__sub_I__Z12laske_yhteenR7vektoriS0_
.section .init_array,"aw"
.align 2
.word _GLOBAL__sub_I__Z12laske_yhteenR7vektoriS0_
.bss
.align 2
.set .LANCHOR0,. + 0
.type _ZStL8__ioinit, %object
.size _ZStL8__ioinit, 1
_ZStL8__ioinit:
.space 1
.section .rodata.str1.4,"aMS",%progbits,1
.align 2
.LC2:
.ascii " \000"
.hidden __dso_handle
.ident "GCC: (Raspbian 8.3.0-6+rpi1) 8.3.0"
.section .note.GNU-stack,"",%progbits
Back to sfnet.atk.linux | Previous | Next — Previous in thread | Next in thread | Find similar
Raspberry Pi 4 Matti Lehtiniemi <matti.lehtiniemi@remove-me.kolumbus.fi> - 2020-03-24 09:09 +0200
Re: Raspberry Pi 4 Matti Lehtiniemi <matti.lehtiniemi@remove-me.kolumbus.fi> - 2020-03-24 13:59 +0200
Re: Raspberry Pi 4 Ari Saastamoinen <oh3mqu+news@hyper.fi> - 2020-03-24 14:25 +0200
Re: Raspberry Pi 4 Matti Lehtiniemi <matti.lehtiniemi@remove-me.kolumbus.fi> - 2020-03-24 16:59 +0200
Re: Raspberry Pi 4 Mikko Tuumanen <mijutu@ellipsis.fi> - 2020-03-24 16:29 +0000
Re: Raspberry Pi 4 Matti Lehtiniemi <matti.lehtiniemi@remove-me.kolumbus.fi> - 2020-03-24 20:07 +0200
Re: Raspberry Pi 4 Ari Saastamoinen <oh3mqu+news@hyper.fi> - 2020-03-25 10:01 +0200
Re: Raspberry Pi 4 Ari Saastamoinen <oh3mqu+news@hyper.fi> - 2020-03-25 09:57 +0200
Re: Raspberry Pi 4 Matti Lehtiniemi <matti.lehtiniemi@remove-me.kolumbus.fi> - 2020-03-25 11:00 +0200
Re: Raspberry Pi 4 Ari Saastamoinen <oh3mqu+news@hyper.fi> - 2020-03-25 11:14 +0200
Re: Raspberry Pi 4 Matti Lehtiniemi <matti.lehtiniemi@remove-me.kolumbus.fi> - 2020-03-25 19:36 +0200
Re: Raspberry Pi 4 Tauno Voipio <tauno.voipio@notused.fi.invalid> - 2020-03-25 21:18 +0200
Re: Raspberry Pi 4 Matti Lehtiniemi <matti.lehtiniemi@remove-me.kolumbus.fi> - 2020-03-25 22:46 +0200
Re: Raspberry Pi 4 Tauno Voipio <tauno.voipio@notused.fi.invalid> - 2020-03-26 10:11 +0200
Re: Raspberry Pi 4 Matti Lehtiniemi <matti.lehtiniemi@remove-me.kolumbus.fi> - 2020-03-26 10:13 +0200
Re: Raspberry Pi 4 Tauno Voipio <tauno.voipio@notused.fi.invalid> - 2020-03-26 14:17 +0200
Re: Raspberry Pi 4 Matti Lehtiniemi <matti.lehtiniemi@remove-me.kolumbus.fi> - 2020-03-31 18:54 +0300
Re: Raspberry Pi 4 Mikko Tuumanen <mijutu@ellipsis.fi> - 2020-03-24 16:18 +0000
csiph-web