Skip to main content

Posts

Showing posts with the label gcc

Viết "Hello World" bằng C, đọc và chạy Assembly x86-64 (phần 1)

Điều đầu tiên và quan trọng nhất khi đọc về C hay assembly là: không được sợ. Code có thể lạ hay dài, nhưng không hề khó, mà thường đơn giản. không yêu cầu biết C không yêu cầu biết assembly biết code đơn giản 1 ngôn ngữ bất kỳ đọc xong là biết. Bài viết liên quan hơi ngược lại với bài viết hello word bằng x86-64 assembly , viết thì khó hơn đọc, bởi viết cần nghĩ đủ thứ, lên kế hoạch viết gì tiếp, đặt tên ra sao, còn đọc thì chỉ cần đi theo. PS: nên đọc trên máy tính hay tablet để có format chuẩn. Cài đặt gcc gdb Trên Ubuntu sudo apt update && sudo apt install -y gcc gdb Viết Hello World bằng C Hơn "hello world" 1 chút, sẽ viết 1 function nhận vào 8 đầu vào và tính tổng. #include <stdio.h> int sum(int a, int b, int c, int d, int e, int f, int g, int h) { int s = a + b + c + d + e + f + g + h; return s; } int main() { puts("Hello world!"); int s = sum(1,2,3,4,5,6,7,8); return s*2; } Dòng include như import trong Pyt...

Hello world dùng x64 assembly

Assembly (asm) ở Việt Nam được gọi là "hợp ngữ cũng có thể được gọi là mã máy tượng trưng" , là một ngôn ngữ lập trình cấp thấp, thường tương ứng 1 lệnh với 1 lệnh của CPU. Lập trình assembly ngày nay không còn phổ biến như trước khi có C. C/Zig/Rust... được dùng để viết code "low level", nhưng khi cần tốc độ tối đa, lập trình nhúng, viết driver, hay thực hiện reverse engineering, binary exploitation, asm là ngôn ngữ được ưa chuộng. Photo by Olivier Collet on Unsplash Code Rust ---compile -> binary Code C ---compile -> binary Code ASM ---compile -> binary Loạt bài viết này giới thiệu vài chương trình assembly đơn giản, cách compile, chạy, các tool dùng để tìm hiểu file binary. Assembly đơn giản (giới hạn không nhiều lệnh, luật lệ rõ ràng), nhưng không dễ (mất rất nhiều bước để làm một việc, rất thủ công). Hello world Là một chương trình in ra màn hình dòng chữ "hello world". Code Python: print("Hello,world") Code C: #in...

Phát hiện giật mình về GCC, gcj, g++...

=)) giật tít kênh14 phải gọi là thánh :3 compiler là gì? trình biên dịch là gì? là một loại phần mềm biến code thành mã máy (thứ mã kỳ diệu để điều khiển máy tính). Ngày xửa ngày xưa, thời học C, có dùng gcc để compile code C, và mình cứ nghĩ nó chỉ để compile C thôi (G là GNU , CC đoán là C compiler). Đến nay mới phát hiện ra bí mật diệu kỳ này: GCC là viết tắt của GNU Compiler Collection - một tâp hợp nhiều compiler cho các ngôn ngữ khác nhau bao gồm: C, C++, Objective-C, Java, Fortran, Ada, golang. Sự thật thì ngày xưa gcc là viết tắt của "GNU C compiler", nhưng đã từ rất lâu rồi, sau khi thêm các compiler khác vào project thì project GCC mới đổi ý nghĩa như vậy. Java??? wth? Chính xác là java, và compiler của nó có tên là GCJ , thế nhưng từ ngày Sun công khai mã nguồn của jdk , project GCJ đã chết và cơ bản giờ chỉ còn ở đó cho đẹp.  (tin update cuối cùng của project này check cách đấy 3 giây là "September 22, 2009") C++? vậy G++ là cái gì?

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG