Автор: Пользователь скрыл имя, 26 Октября 2011 в 22:24, курсовая работа
Ознайомлення з програмним забезпеченням для перекладу початкового коду з одних мов програмування на інші.
Розглянуто відповідні засоби для ОС Windows та Linux.
Завдання на курсову роботу 3
Теоретична частина 4
Практична частина 6
3.1 Конвертери мов програмування для ОС Linux 6
3.1.1 Програма OpenCobol 6
3.1.1 Програма F2C 13
3.2 Конвертери мов програмування для ОС Windows 15
3.2.1 Програма BCX 15
Висновки 22
Список використаної літератури
Також
за допомогою програми Open-cobol ми можемо
перекласти код на машинну мову, на мову
assembler. Зробимо це за допомогою команди cobc
–S hello.cob. (рис.
4)
Рис. 4
Команда cobc –S hello.cob
Ми бачимо, що в нас з’явився файл
hello.s. Відкривши його ми вже побачимо
цю ж програму Hello world, але перекладену
вже на асемблер:
.file "cob6941_0.c"
.section .rodata
.align 4
.type a_1, @object
.size a_1, 8
a_1:
.byte 33
.byte 0
.byte 0
.byte 0
.long 0
.LC0:
.string "Hello World!"
.data
.align 4
.type c_1, @object
.size c_1, 12
c_1:
.long 12
.long .LC0
.long a_1
.text
.globl HELLO
.type HELLO, @function
HELLO:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
movl $0, (%esp)
call HELLO_
leave
ret
.size HELLO, .-HELLO
.data
.align 4
.type module.6240, @object
.size module.6240, 28
module.6240:
.long 0
.long 0
.long 0
.long 0
.long cob_user_
.byte 0
.byte 46
.byte 36
.byte 44
.byte 1
.byte 1
.byte 1
.byte 0
.local cob_user_
.comm cob_user_
.local initialized.6238
.comm initialized.6238,
.section .rodata
.LC1:
.string "1.1"
.LC2:
.string "hello.cob"
.LC3:
.string "HELLO"
.text
.type HELLO_, @function
HELLO_:
pushl %ebp
movl %esp, %ebp
subl $2072, %esp
movl 8(%ebp), %eax
shrl $31, %eax
testl %eax, %eax
je .L4
movl initialized.6238, %eax
testl %eax, %eax
jne .L6
movl $0, -2052(%ebp)
jmp .L8
.L6:
movl $0, initialized.6238
movl $0, -2052(%ebp)
jmp .L8
.L4:
leal -2044(%ebp), %eax
movl %eax, -4(%ebp)
movl -4(%ebp), %eax
movl $0, (%eax)
movl cob_current_module, %eax
movl %eax, module.6240
movl $module.6240, cob_current_module
movl initialized.6238, %eax
testl %eax, %eax
sete %al
movzbl %al, %eax
testl %eax, %eax
je .L9
movl cob_initialized, %eax
testl %eax, %eax
jne .L11
movl $0, (%esp)
call cob_fatal_error
.L11:
movl $0, 8(%esp)
movl $.LC1, 4(%esp)
movl $.LC2, (%esp)
call cob_check_version
movl module.6240, %eax
testl %eax, %eax
je .L13
movl $HELLO_, 8(%esp)
movl $HELLO, 4(%esp)
movl $.LC3, (%esp)
call cob_set_cancel
.L13:
movl $b_1, %eax
movl $0, (%eax)
movl $1, initialized.6238
.L9:
movl cob_call_params, %eax
movl %eax, cob_save_call_params
.L15:
movl $c_1, 12(%esp)
movl $1, 8(%esp)
movl $1, 4(%esp)
movl $0, (%esp)
call cob_display
.L16:
movl cob_current_module, %eax
movl (%eax), %eax
movl %eax, cob_current_module
movl $b_1, %eax
movl (%eax), %eax
movl %eax, -2052(%ebp)
.L8:
movl -2052(%ebp), %eax
leave
ret
.size HELLO_, .-HELLO_
.local b_1
.comm b_1,4,16
.comm cob_unifunc,4,4
.ident "GCC: (GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)"
.section .note.GNU-
3.1.2
Програма F2С
Інколи
існує необхідність виконання добре налагодженої
програми мовою Fortran за відсутності компілятора,
але за наявності компілятора мови C. В
деяких випадках зручно змішати C і Fortran
77, а часто просто неможливо реалізувати
ту чи іншу можливість на мові Fortran 77 або
важче, ніж в C (наприклад, управління пам'яттю,
деякі символьні операції, масиви функції,
гетерогенні структури даних, виклики
залежні від операційної системи). Саме
з цих причин деякі програмісти вважають
за краще використовувати C. Існує велика
кількість хороших програм на Fortran і часто
виникає бажання використовувати їх в
середовищі мови C. З цих причин почалася
розробка конвертора f2c.
f2c
- досить відомий конвертер з
Fortran 77 в C, який розповсюджується
у вихідному коді (реалізований на мові
C). Дозволяє створити програму на мові
C з вихідного коду на Fortran 77.
Переваги f2c:
є безкоштовним
добре налагоджений
генерує досить швидкий
код
Я випробувала конвертер f2c також на Ubuntu 8. Він є вбудованою утилітою в Linux.
Розглянемо його роботу на такій же програмі hello world, що й в попередньому розділі, але написану на мові програмування Fortran. Збережемо її у файлі hello.f. Вона буде мати вигляд (рис. 5 )
Рис. 5
Вигляд програми “hello world”
на мові Fortran
Скомпілюємо файл проекта конвертером f2c з допомогою команди
f2c
-a -C++ -p hello.f (рис. 6)
Рис. 6 Задання команди f2c -a -C++ -p hello.f
Створиться файл hello.c, після відкриття
якого ми побачимо код програми на мові
програмування С:
/* hello.f -- translated by f2c (version 20050501).
You must link the resulting object file with libf2c:
on Microsoft Windows system, link with libf2c.lib;
on Linux or Unix systems, link with .../path/to/libf2c.a -lm
or, if you install libf2c.a in a standard place, with -lf2c -lm
-- in that order, at the end of the command line, as in
cc *.o -lf2c -lm
Source
for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
http://www.netlib.
*/
#ifdef __cplusplus
extern "C" {
#endif
#include "f2c.h"
/* Table of constant values
*/
static integer c__9 = 9;
static integer c__1 = 1;
/* Main program */ int MAIN__()
{
/* Builtin functions */
integer s_wsle(cilist *), do_lio(integer *, integer *, char *, ftnlen),
e_wsle();
/* Fortran I/O blocks */
static cilist
io___1 = { 0, 6, 0, 0, 0 };
s_wsle(&io___1);
do_lio(&c__9, &c__1, "Hello World!", (ftnlen)12);
e_wsle();
return 0;
} /* MAIN__ */
/* Main program alias */ int hello_ () { MAIN__ (); return 0; }
#ifdef __cplusplus
}
#endif
3.2 Конвертери
мов програмування для
ОС Windows
3.2.1
Програма BCX
Безкоштовний транслятор Basic в C. Для компіляції програм необхідно встановити С компілятор LCC-Win32. Мова являє собою суміш Qbasic, PowerBasic, та VB. Можна використовувати всі можливості наявні в мові С. Транслятор може створювати GUI, консольні і DLL програми. BCX зручний для Бейсік-програмістів , які вивчають мову С, можна ввести програму на Бейсіку, відтранслювати її в С, а потім порівнювати два лістинги.
Перед
початком роботи, установимо програму
BCX та компілятор LCC-Win32, необхідний для
компіляції С програм. Тепер почнемо ознайомлення
з самою програмою.
До пакету BCX входять такі додатки:
BCX Code Editor
BCX to EXE Tool
Menu Maker
BCX MsgBox Builder
Jen's
File Editor
BCX Code Editor
BCX
Code Editor – редактор коду BCX. Для ознайомлення
з роботою конвертера напишемо в ньому
код простої програми на мові Basiс (рис.
7) яка буде виводити на екран текст: ”Hello
World!” , та збережемо його під назвою
hello.bas
Рис. 7
Вікно редактора
коду BCX з кодом
програми
BCX to EXE Tool
За допомогою цього додатку можна відкомпілювати програму написану на мові Basic, перекласти її на мову С та створити виконуючі файли. Що ми й зробили.
В розділі Tool Path ми вказали шлях до файлу BC.exe, за допомогою якого виконується переклад коду з мови програмування Basic на мову С, та файлу lcc.exe, за допомогою якого вже компілюється код, перекладений на мову С. В розділі My Program Path вкажемо директорію файлу hello.bas, який ми створили на попередньому етапі роботи за допомогою BCX Code Editor.
Після натиснення на кнопку Start, можна побачити етапи роботи програми: