Groups | Search | Server Info | Login | Register


Groups > sfnet.atk.linux > #1538

Re: Raspberry Pi 4

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

Show all headers | View raw


  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 | NextPrevious in thread | Next in thread | Find similar


Thread

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