Raspberry Pi 3, asm program to build executable file, screen capture

http://wp.me/ph3BR-1G2

 

有了小电脑,还是64位元的,一整个是高大尚的级别

除了INTEL高级贵到死的 x86系统的CPU,还真没有实际使用过64位元的电脑,ANDROID 手机的那些应该不算。

这个Raspberry Pi 3, 用的是 BROADCOM 出产的IC,ARM 系列的 64位元. 好久以前实验过在 UBUNTU 上编译C 的源码,感觉还好,这次为了要在 Pi 截取画面,使用了 scrot 的这个程序,但是不太方便,因为要在 TERMINAL 底下输入命令行来执行,一众普通用家不习惯,希望按个按钮就可以,她们说在WINDOWS 底下用习惯了那个 snap 或者 snagit, 按一下就行,怎麽高级的 LINUX 就不行了呢。。。。。。。。。当然,直接按键盘那个 PrintScreen 可以把整个荧幕抓下来存档在 /home/pi,可那不够自由呀,俺只要某个视窗的画面或者荧幕某个区域的画面就没辙了。

题外话,这篇用这小电脑和那个智能拼音输入法打的,他就给简体字,不出繁体字,因为不会注音符号。其实没关系,世界上很多人通多国语言文字,所以大不必拘泥繁体简体,会可以不用,不会就学着点,好事。听到有些朋友说鄙视简体字,说看着就难过,另外一些却说看到繁体字就烦。那只是意识形态问题,或者说者无心,纯粹是现露出少看外面的世界而缺少开放的眼界,自己看着办吧,反正俺看得都简单也高兴:)

要抓取画面,所以就实验了两个方法,

  1. 写SHELL SCRIPT 来启动 scrot, 并带入参数 -b -s, 然后让使用者快速点两下执行,谁知道,每次都跳出来问,希望怎样执行,不像UBUNTU可以预设一次就好;
  2. 写个小小的程序,呼叫并启动 scrot, 并带入参数 -b -s ,搜寻了一下网路,乱套用,居然瞎猫碰到死耗子,也成功。。。不过呢, 还是每次都跳出来问,只是选项少了也不需要 CHMOD +X。以前玩过 WIN32的 ASM / C,呼叫可以用 ShellExec,但是 LINUX 对应是 system, 基本上是网上看到抄来用的,参照 hello world 的那个源码,看到他写的有关呼叫第三方应用程序 printf 的做法,然后就照猫画虎,给他乱来,反正不要钱。。。。。。
    string: .asciz "\nHello World! This is xialaba and Linux programming\n\n"
    
    .extern printf
    
    ldr r0, =string @ print hello world
    bl printf
    
    

    GNU ARM assembly 程序的注释用 @ 开始,和 x86 或者其他 MCU 使用分号(;)不同。

 

组译和连接用以下命令,都是 LINUX 自带的编译工具

as -o hello.o hello.s
gcc -o snap hello.o

2016-04-14-230729_609x175_scrot

 

 

最后输出一个可执行档案,名为 snap

速点两下执行,直接按 [执行], 然后随便选个 WINDOW 点一下,截图就得到并存档在桌面上了,结果类似下面的图。

2016-04-15-000001_527x300_scrot

源码在这里,

@ REF : http://www.science.smith.edu/dftwiki/index.php/Tutorial:_Assembly_Language_with_the_Raspberry_Pi
@ xiaolaba
@ 2016-04-14
@ modified to test 'system' call and to invoke scrot to capture a screen

@ how to assenble and link, open terminal, type following, but remove @
@ as -o hello.o hello.s
@ gcc -o snap hello.o
@ hello.s
@ D. Thiebaut
@ Just your regular Hello World program!
@
@ ---------------------------------------
@ Data Section
@ ---------------------------------------

.data
string: .asciz "\nHello World! This is xialaba and Linux programming\n\n"
para : .asciz "scrot -b -s"

@ ---------------------------------------
@ Code Section
@ ---------------------------------------

.text
.global main
.extern printf
.extern system

main:
push {ip, lr}

ldr r0, =string @ print hello world
bl printf

ldr r0, =para @ invoke scrot to capture screen
bl system

pop {ip, pc}

 

 

SHELL SCRIPT 的源码在这里,虽然不好用,但是也是学习的过程之一,


#!/usr/bin/env bash

echo hello, screen shot of active windows with border

scrot -s -b

Ubuntu 11.10 and GCC使用详解

copy from here : http://www.dzjs.net/html/qianrushixitong/2007/0626/2292.html

good to my reading and to understand how GCC is working

 

 

GCC使用详解

时间:2007-06-26   来源:   作者:   点击:……  字体大小:【

    在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前 Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大, Continue reading “Ubuntu 11.10 and GCC使用详解"